#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_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