diff options
Diffstat (limited to 'game.h')
-rw-r--r-- | game.h | 36 |
1 files changed, 36 insertions, 0 deletions
@@ -0,0 +1,36 @@ +#ifndef game_h +#define game_h + +#include "world.h" +#include "menu.h" + +typedef enum { + game_state_menu = 0, + game_state_game, + game_state_credits, + game_state_dead +} Game_State; + +typedef struct Game Game; + +typedef struct { + void (*state_init)(Game* game); + void (*state_update)(Game* game); + void (*state_deinit)(Game* game); +} Game_State_Fns; + +struct Game { + const Game_State_Fns* fns; + Game_State state; + Menu menu; + + World world; +}; + +void game_init(Game* game, Game_State state); +void game_update(Game* game); +void game_deinit(Game* game); + +void game_change_state(Game* game, Game_State state); + +#endif |