build: CMake and public headers

This commit is contained in:
Hernâni Marques 2026-07-11 23:18:44 +02:00
parent 1455cf7ac9
commit 87d99f7007
6 changed files with 107 additions and 0 deletions

7
include/ok_game.h Normal file
View file

@ -0,0 +1,7 @@
#ifndef OK_GAME_H
#define OK_GAME_H
#include "ok_types.h"
void ok_game_init(OkGame *g);
void ok_game_update(OkGame *g, float dt);
void ok_game_spawn(OkGame *g, OkFaction f, OkUnitKind k, int x, int y);
#endif

6
include/ok_map.h Normal file
View file

@ -0,0 +1,6 @@
#ifndef OK_MAP_H
#define OK_MAP_H
#include "ok_types.h"
void ok_map_generate(OkMap *m);
bool ok_map_walkable(const OkMap *m, int x, int y);
#endif

9
include/ok_render.h Normal file
View file

@ -0,0 +1,9 @@
#ifndef OK_RENDER_H
#define OK_RENDER_H
#include "ok_types.h"
#include <SDL.h>
bool ok_render_init(int w, int h);
void ok_render_draw(const OkGame *g);
void ok_render_shutdown(void);
SDL_Window *ok_render_window(void);
#endif

46
include/ok_types.h Normal file
View file

@ -0,0 +1,46 @@
#ifndef OK_TYPES_H
#define OK_TYPES_H
#include <stdint.h>
#include <stdbool.h>
#define OK_MAP_W 64
#define OK_MAP_H 48
#define OK_MAX_UNITS 256
typedef enum {
OK_FACTION_SURVIVORS = 0,
OK_FACTION_SCAVENGERS = 1
} OkFaction;
typedef enum {
OK_UNIT_INFANTRY = 0,
OK_UNIT_VEHICLE = 1
} OkUnitKind;
typedef struct {
int x, y;
OkFaction faction;
OkUnitKind kind;
int hp;
int hp_max;
int target; /* unit index or -1 */
bool alive;
} OkUnit;
typedef struct {
uint8_t tile[OK_MAP_H][OK_MAP_W]; /* 0 empty, 1 blocked, 2 resource */
} OkMap;
typedef struct {
OkMap map;
OkUnit units[OK_MAX_UNITS];
int unit_count;
int selected;
bool running;
bool survivors_win;
bool scavengers_win;
uint32_t tick;
} OkGame;
#endif

5
include/ok_unit.h Normal file
View file

@ -0,0 +1,5 @@
#ifndef OK_UNIT_H
#define OK_UNIT_H
#include "ok_types.h"
void ok_units_update(OkGame *g, float dt);
#endif