aboutsummaryrefslogtreecommitdiff
path: root/src/games/minesweeper
diff options
context:
space:
mode:
Diffstat (limited to 'src/games/minesweeper')
-rw-r--r--src/games/minesweeper/Minesweeper.cpp81
-rw-r--r--src/games/minesweeper/Minesweeper.hpp20
2 files changed, 26 insertions, 75 deletions
diff --git a/src/games/minesweeper/Minesweeper.cpp b/src/games/minesweeper/Minesweeper.cpp
index 3638af8..a2738a2 100644
--- a/src/games/minesweeper/Minesweeper.cpp
+++ b/src/games/minesweeper/Minesweeper.cpp
@@ -30,15 +30,15 @@ Minesweeper::Minesweeper()
}
void
-Minesweeper::Reset(Difficulty difficulty)
+Minesweeper::Start()
{
m_cells_uncovered = 0;
- if (difficulty == beginner) {
+ if (m_difficulty == beginner) {
m_grid_width = 8;
m_grid_height = 8;
m_mine_count = 10;
}
- else if(difficulty == intermediate) {
+ else if (m_difficulty == intermediate) {
m_grid_width = 16;
m_grid_height = 16;
m_mine_count = 40;
@@ -64,6 +64,8 @@ Minesweeper::Reset(Difficulty difficulty)
memset(m_is_flagged_bitmap, 0 , sizeof(m_is_flagged_bitmap));
InitIsMineBitmap();
InitAdjacentMineCounters();
+
+ m_game_status = game_resume;
}
void
@@ -122,66 +124,13 @@ Minesweeper::IsWon()
return is_won;
}
-bool
-Minesweeper::Update(std::vector<SDL_Event>& events)
-{
- g_renderer.SetCameraSize(4.0f, 3.0f);
- g_renderer.SetClearColor({0.3f, 0.2f, 0.3f});
-
- for (SDL_Event &event : events) {
- if (m_game_status == game_exit) {
- return false;
- }
- else if (m_game_status == game_paused) {
- ProcessEventDuringPause(event);
- }
- else if (m_game_status== game_resuming) {
- ProcessEventDuringResume(event);
- }
- }
- if (m_game_status == game_exit) {
- return false;
- }
-
- if (m_game_status == game_paused) {
- DrawBoard();
- DrawDefaultGamePausedMenu();
- }
- else if (m_game_status == game_starting) {
- DrawStartMenu();
- }
- else if (m_game_status == game_resuming) {
- DrawBoard();
- }
- else if (m_game_status == game_over) {
- DrawBoard();
- DrawGameOverMenu();
- }
-
- return true;
-}
-
void
-Minesweeper::ProcessEventDuringPause(SDL_Event &event)
+Minesweeper::ProcessEvent(SDL_Event& event)
{
switch (event.type) {
case SDL_EVENT_KEY_DOWN: {
if (event.key.key == SDLK_ESCAPE) {
- m_game_status = game_resuming;
- }
- } break;
-
- default:;
- }
-}
-
-void
-Minesweeper::ProcessEventDuringResume(SDL_Event &event)
-{
- switch (event.type) {
- case SDL_EVENT_KEY_DOWN: {
- if (event.key.key == SDLK_ESCAPE) {
- m_game_status = game_paused;
+ m_game_status = game_pause;
}
} break;
@@ -237,6 +186,11 @@ Minesweeper::ProcessEventDuringResume(SDL_Event &event)
}
void
+Minesweeper::FinishUpdate(float dt)
+{
+}
+
+void
Minesweeper::Uncover(int32_t x, int32_t y)
{
if (x < 0) return;
@@ -321,7 +275,7 @@ Minesweeper::ScreenPosToViewPos(V2F32 screen_pos)
}
void
-Minesweeper::DrawBoard()
+Minesweeper::Draw()
{
uint32_t z = 1;
Color covered_cell_color {0.6f, 0.6f, 0.6f};
@@ -403,9 +357,9 @@ Minesweeper::DrawBoard()
}
void
-Minesweeper::DrawStartMenu()
+Minesweeper::DrawGameStartMenu()
{
- ImGui::Begin("MinesweeperStart");
+ ImGui::Begin("MinesweeperGameStartMenu");
if (ImGui::RadioButton("beginner", m_difficulty == beginner ? true : false)) {
m_difficulty = beginner;
}
@@ -416,8 +370,7 @@ Minesweeper::DrawStartMenu()
m_difficulty = expert;
}
if (ImGui::Button("Start")) {
- Reset(m_difficulty);
- m_game_status = game_resuming;
+ Start();
}
if (ImGui::Button("Exit")) {
m_game_status = game_exit;
@@ -436,7 +389,7 @@ Minesweeper::DrawGameOverMenu()
ImGui::Text("You Lost.");
}
if (ImGui::Button("Play Again")) {
- m_game_status = game_starting;
+ m_game_status = game_start;
}
if (ImGui::Button("Exit")) {
m_game_status = game_exit;
diff --git a/src/games/minesweeper/Minesweeper.hpp b/src/games/minesweeper/Minesweeper.hpp
index 9088d10..8f8a2d2 100644
--- a/src/games/minesweeper/Minesweeper.hpp
+++ b/src/games/minesweeper/Minesweeper.hpp
@@ -13,18 +13,22 @@ public:
expert
};
+
public:
Minesweeper();
~Minesweeper() = default;
- bool Update(std::vector<SDL_Event>& events) override;
-
private:
- void ProcessEventDuringPause(SDL_Event& event);
- void ProcessEventDuringResume(SDL_Event& event);
+ void Start() override;
+ void ProcessEvent(SDL_Event& event) override;
+ void FinishUpdate(float dt) override;
+ void Draw() override;
+
+ void DrawGameStartMenu() override;
+ void DrawGameOverMenu() override;
+
- void Reset(Difficulty Difficulty);
void InitIsMineBitmap();
void InitAdjacentMineCounters();
bool IsWon();
@@ -42,12 +46,6 @@ private:
private:
- void DrawBoard();
- void DrawStartMenu();
- void DrawGameOverMenu();
-
-
-private:
static constexpr int32_t s_max_grid_height = 32;
static constexpr int32_t s_max_grid_width = 32;