diff options
Diffstat (limited to 'src/games/minesweeper')
| -rw-r--r-- | src/games/minesweeper/Minesweeper.cpp | 58 | ||||
| -rw-r--r-- | src/games/minesweeper/Minesweeper.hpp | 28 |
2 files changed, 16 insertions, 70 deletions
diff --git a/src/games/minesweeper/Minesweeper.cpp b/src/games/minesweeper/Minesweeper.cpp index a1886ff..e110acb 100644 --- a/src/games/minesweeper/Minesweeper.cpp +++ b/src/games/minesweeper/Minesweeper.cpp @@ -1,3 +1,4 @@ +#include "games/Game.hpp" #include <games/minesweeper/Minesweeper.hpp> #include <renderer/Renderer.hpp> @@ -117,31 +118,31 @@ Minesweeper::Update(std::vector<SDL_Event>& events) g_renderer.Clear({0.3f, 0.2f, 0.3f}); for (SDL_Event &event : events) { - if (m_run_state == exit) { + if (m_game_status == game_exit) { return false; } - else if (m_run_state == pause) { + else if (m_game_status == game_paused) { ProcessEventDuringPause(event); } - else if (m_run_state == resume) { + else if (m_game_status== game_resuming) { ProcessEventDuringResume(event); } } - if (m_run_state == exit) { + if (m_game_status == game_exit) { return false; } - if (m_run_state == pause) { + if (m_game_status == game_paused) { DrawBoard(); - DrawPauseMenu(); + DrawGamePausedMenu(); } - else if (m_run_state == start) { + else if (m_game_status == game_starting) { DrawStartMenu(); } - else if (m_run_state == resume) { + else if (m_game_status == game_resuming) { DrawBoard(); } - else if (m_run_state == game_over) { + else if (m_game_status == game_over) { DrawBoard(); DrawGameOverMenu(); } @@ -155,7 +156,7 @@ Minesweeper::ProcessEventDuringPause(SDL_Event &event) switch (event.type) { case SDL_EVENT_KEY_DOWN: { if (event.key.key == SDLK_ESCAPE) { - m_run_state = resume; + m_game_status = game_resuming; } } break; @@ -169,7 +170,7 @@ Minesweeper::ProcessEventDuringResume(SDL_Event &event) switch (event.type) { case SDL_EVENT_KEY_DOWN: { if (event.key.key == SDLK_ESCAPE) { - m_run_state = pause; + m_game_status = game_paused; } } break; @@ -200,7 +201,7 @@ Minesweeper::ProcessEventDuringResume(SDL_Event &event) if (IsMine(x, y)) { m_is_covered_bitmap[y] &= ~(1 << x); UncoverMines(); - m_run_state = game_over; + m_game_status = game_over; } else { Uncover(x, y); @@ -302,22 +303,6 @@ Minesweeper::ScreenPosToViewPos(V2F32 screen_pos) } void -Minesweeper::DrawPauseMenu() -{ - ImGui::Begin("MinesweeperPause"); - if (ImGui::Button("Resume")) { - m_run_state = resume; - } - if (ImGui::Button("Restart")) { - m_run_state = start; - } - if (ImGui::Button("Exit")) { - m_run_state = exit; - } - ImGui::End(); -} - -void Minesweeper::DrawStartMenu() { ImGui::Begin("MinesweeperStart"); @@ -332,23 +317,10 @@ Minesweeper::DrawStartMenu() } if (ImGui::Button("Start")) { Reset(m_difficulty); - m_run_state = resume; - } - if (ImGui::Button("Exit")) { - m_run_state = exit; - } - ImGui::End(); -} - -void -Minesweeper::DrawGameOverMenu() -{ - ImGui::Begin("MinesweeperGameOverMenu"); - if (ImGui::Button("Play Again")) { - m_run_state = start; + m_game_status = game_resuming; } if (ImGui::Button("Exit")) { - m_run_state = exit; + m_game_status = game_exit; } ImGui::End(); } diff --git a/src/games/minesweeper/Minesweeper.hpp b/src/games/minesweeper/Minesweeper.hpp index f29df14..867ca6a 100644 --- a/src/games/minesweeper/Minesweeper.hpp +++ b/src/games/minesweeper/Minesweeper.hpp @@ -7,29 +7,8 @@ #include <array> -namespace std { - template <> - struct hash<V2ST> { - size_t operator()(const V2ST& v) const { - size_t h1 = hash<size_t>{}(v.x); - size_t h2 = hash<size_t>{}(v.y); - return h1 ^ (h2 << 1); - } - }; -} - - - class Minesweeper : public Game { public: - enum RunState { - start, - pause, - resume, - game_over, - exit - }; - enum Difficulty { beginner, intermediate, @@ -66,8 +45,6 @@ private: private: void DrawBoard(); void DrawStartMenu(); - void DrawPauseMenu(); - void DrawGameOverMenu(); private: @@ -77,16 +54,13 @@ private: private: - RunState m_run_state = start; Difficulty m_difficulty = beginner; float m_world_width = 4.0f; float m_world_height = 3.0f; int32_t m_grid_width; - int32_t m_grid_height; - - V2F32 m_grid_pos; + int32_t m_grid_height; V2F32 m_grid_pos; V2F32 m_cell_outer_size; V2F32 m_cell_inner_size; |
