#include #include #include #include #include #include std::unique_ptr Game::Select(GameType type) { switch (type) { case no_game: { return nullptr; } break; case minesweeper: { return std::make_unique(); } break; case snake: { return std::make_unique(); } break; case tetris: { return std::make_unique(); } break; InvalidDefaultCase; } return nullptr; } float Game::ProcessDt() { uint64_t tnow_milliseconds = SDL_GetTicks(); uint64_t tlast_milliseconds = m_tlast_milliseconds; uint64_t dt_milliseconds = tnow_milliseconds - tlast_milliseconds; float dt_seconds = float(dt_milliseconds) / 1000.0f; dt_seconds += m_dt_remaining_seconds; m_tlast_milliseconds = tnow_milliseconds; m_dt_remaining_seconds = 0.0f; return dt_seconds; } void Game::DrawGameOverMenu() { ImGui::Begin("DefaultGameOverMenu", nullptr, s_imgui_window_flags_menu); ImGui::Text("Game Over."); if (ImGui::Button("Play Again")) { m_game_status = game_starting; } if (ImGui::Button("Exit")) { m_game_status = game_exit; } ImGui::End(); } void Game::DrawGamePausedMenu() { ImGui::Begin("DefaultGamePauseMenu", nullptr, s_imgui_window_flags_menu); if (ImGui::Button("Resume")) { m_game_status = game_resuming; } if (ImGui::Button("Restart")) { m_game_status = game_starting; } if (ImGui::Button("Exit")) { m_game_status = game_exit; } ImGui::End(); }