55 lines
1.2 KiB
C
55 lines
1.2 KiB
C
#ifndef GAME_H
|
|
#define GAME_H
|
|
|
|
struct world;
|
|
struct mixer_startup_receipt;
|
|
struct sprite_startup_receipt;
|
|
struct sound_startup_receipt;
|
|
|
|
enum game_cmd_state {
|
|
GAME_CMD_STATE_STOP = -1,
|
|
GAME_CMD_STATE_NO_CHANGE = 0,
|
|
GAME_CMD_STATE_START = 1
|
|
};
|
|
|
|
enum game_cmd_kind {
|
|
GAME_CMD_KIND_NONE,
|
|
|
|
GAME_CMD_KIND_PLAYER_MOVE,
|
|
GAME_CMD_KIND_PLAYER_FIRE,
|
|
|
|
/* Testing */
|
|
GAME_CMD_KIND_CLEAR_ALL,
|
|
GAME_CMD_KIND_SPAWN_TEST,
|
|
GAME_CMD_KIND_PAUSE,
|
|
GAME_CMD_KIND_STEP,
|
|
|
|
GAME_CMD_KIND_COUNT
|
|
};
|
|
|
|
struct game_cmd {
|
|
enum game_cmd_kind kind;
|
|
enum game_cmd_state state;
|
|
|
|
/* GAME_CMD_KIND_PLAYER_MOVE */
|
|
struct v2 move_dir;
|
|
struct v2 aim_pos;
|
|
};
|
|
|
|
struct game_cmd_array {
|
|
struct game_cmd *cmds;
|
|
u64 count;
|
|
};
|
|
|
|
struct game_startup_receipt { i32 _; };
|
|
struct game_startup_receipt game_startup(struct mixer_startup_receipt *mixer_sr,
|
|
struct sprite_startup_receipt *sheet_sr,
|
|
struct sound_startup_receipt *sound_sr);
|
|
|
|
void game_get_latest_tick(struct world *dest);
|
|
u64 game_get_latest_tick_id(void);
|
|
|
|
void game_push_cmds(struct game_cmd_array cmd_array);
|
|
|
|
#endif
|