#include #include #include #include "presentation/states/state_ingame.h" #include "presentation/states/state_main_menu.h" #include "third_party/raylib.h" #include "session/networking.h" #include "instance/game_instance.h" int main() { InitWindow(1280, 720, "snejk"); SetTargetFPS(60); SetExitKey(KEY_NULL); bool should_quit_game = false; Game_Instance local_game_instance; memset(&local_game_instance, 0, sizeof(Game_Instance)); game_instance_init(&local_game_instance); Presentation_State_Ingame_Context presentation_state_ingame_ctx; memset(&presentation_state_ingame_ctx, 0, sizeof(Presentation_State_Ingame_Context)); Presentation_State_Main_Menu_Context presentation_state_main_menu_ctx = { .should_quit_game = &should_quit_game, .game_instance = &local_game_instance, .ingame_ctx = &presentation_state_ingame_ctx }; presentation_state_ingame_init(&presentation_state_ingame_ctx); presentation_state_main_menu_init(&presentation_state_main_menu_ctx); presentation_state_machine_go_to(&presentation_state_main_menu); while(true) { if(WindowShouldClose() || should_quit_game) { break; } // Tick. if(presentation_state_machine.current != NULL && presentation_state_machine.current->tick != NULL) { presentation_state_machine.current->tick(presentation_state_machine.current); } // if(IsKeyPressed(KEY_F)) { // TODO: SS - Add this back, but not 'F'. // ToggleFullscreen(); // } // Render. BeginDrawing(); { if(presentation_state_machine.current != NULL && presentation_state_machine.current->render != NULL) { presentation_state_machine.current->render(presentation_state_machine.current); } } EndDrawing(); } assert(presentation_state_machine_go_to(NULL)); CloseWindow(); game_instance_dispose(&local_game_instance); return 0; }