aboutsummaryrefslogtreecommitdiff
path: root/src/games/minesweeper
diff options
context:
space:
mode:
Diffstat (limited to 'src/games/minesweeper')
-rw-r--r--src/games/minesweeper/Minesweeper.cpp58
-rw-r--r--src/games/minesweeper/Minesweeper.hpp28
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;