diff options
| author | fschildt <florian.schildt@protonmail.com> | 2025-09-29 13:20:43 +0200 | 
|---|---|---|
| committer | fschildt <florian.schildt@protonmail.com> | 2025-09-29 13:20:43 +0200 | 
| commit | 9d72ed2d5801b1506158082f08bd0b47e58db17f (patch) | |
| tree | 1fe30ab6dae55db5a3faaac6b8d54f67a31255d3 /src/games/minesweeper | |
| parent | d793b79dea7d5e19982128528276cf05d6c23b5d (diff) | |
renderer: major refactor; vectors: now aggregates
Diffstat (limited to 'src/games/minesweeper')
| -rw-r--r-- | src/games/minesweeper/Minesweeper.cpp | 32 | ||||
| -rw-r--r-- | src/games/minesweeper/Minesweeper.hpp | 9 | 
2 files changed, 19 insertions, 22 deletions
diff --git a/src/games/minesweeper/Minesweeper.cpp b/src/games/minesweeper/Minesweeper.cpp index 2174ab8..8e27eb3 100644 --- a/src/games/minesweeper/Minesweeper.cpp +++ b/src/games/minesweeper/Minesweeper.cpp @@ -1,5 +1,7 @@ -#include <renderer/RenderGroup.hpp>  #include <games/minesweeper/Minesweeper.hpp> +#include <renderer/Renderer.hpp> + +#include <imgui.h>  #include <algorithm>  #include <random> @@ -7,8 +9,7 @@  // Todo: winning condition (maybe: total_cells - uncovered_cells = mine_count) -Minesweeper::Minesweeper(RenderGroup& render_group) -    : m_render_group {render_group} +Minesweeper::Minesweeper()  {      m_font.Init("fonts/dejavu_ttf/DejaVuSansMono.ttf", 16);      for (uint32_t i = 0; i < m_digit_glyphs.size(); ++i) { @@ -112,9 +113,8 @@ Minesweeper::InitAdjacentMineCounters()  bool  Minesweeper::Update(std::vector<SDL_Event>& events)  { -    Color clear_color = {0.3f, 0.2f, 0.3f}; -    m_render_group.SetCameraSize(4.0f, 3.0f); -    m_render_group.Clear(clear_color); +    g_renderer.SetCameraSize(4.0f, 3.0f); +    g_renderer.Clear({0.3f, 0.2f, 0.3f});      for (SDL_Event &event : events) {          if (m_run_state == exit) { @@ -171,8 +171,8 @@ Minesweeper::ProcessEventDuringResume(SDL_Event &event)      } break;          case SDL_EVENT_MOUSE_BUTTON_DOWN: { -            V2F32 click_screen_pos = {event.button.x, (float)m_render_group.m_ScreenHeight -1 - event.button.y}; -            V2F32 click_view_pos = ScreenPosToViewPos(click_screen_pos, m_render_group); +            V2F32 click_screen_pos = {event.button.x, (float)g_renderer.m_screen_h-1 - event.button.y}; +            V2F32 click_view_pos = ScreenPosToViewPos(click_screen_pos);          float x_adjusted = click_view_pos.x - m_grid_pos.x;          float y_adjusted = click_view_pos.y - m_grid_pos.y; @@ -285,12 +285,12 @@ Minesweeper::IsMine(int32_t x, int32_t y)  }  V2F32 -Minesweeper::ScreenPosToViewPos(V2F32 screen_pos, RenderGroup &render_group) +Minesweeper::ScreenPosToViewPos(V2F32 screen_pos)  {      // e.g. [0, 1024] -> [0, 1] -> [0, 4]      // e.g. [0,  768] -> [0, 1] -> [0, 3] -    float screen_width = (float)render_group.m_ScreenWidth; -    float screen_height = (float)render_group.m_ScreenHeight; +    float screen_width = (float)g_renderer.m_screen_w; +    float screen_height = (float)g_renderer.m_screen_h;      V2F32 view_pos;      view_pos.x = (screen_pos.x / screen_width) * m_world_width; @@ -381,7 +381,7 @@ Minesweeper::DrawBoard()              bool is_mine = IsMine(x, y);              if (is_covered) { -                m_render_group.PushRectangle(cell_rect, 0.0f, covered_cell_color); +                g_renderer.PushRectangle(cell_rect, 0.0f, covered_cell_color);                  if (is_flagged) { @@ -396,7 +396,7 @@ Minesweeper::DrawBoard()                          flag_pos.x + flag_size.x,                          flag_pos.y + flag_size.y,                      }; -                    m_render_group.PushRectangle(flag_rect, flag_pos.z, flag_color); +                    g_renderer.PushRectangle(flag_rect, flag_pos.z, flag_color);                  }              }              else { @@ -412,10 +412,10 @@ Minesweeper::DrawBoard()                          mine_pos.x + m_cell_inner_size.x,                          mine_pos.y + m_cell_inner_size.y,                      }; -                    m_render_group.PushRectangle(mine_rect, mine_pos.z, mine_color); +                    g_renderer.PushRectangle(mine_rect, mine_pos.z, mine_color);                  }                  else { -                    m_render_group.PushRectangle(cell_rect, 0.0f, uncovered_cell_color); +                    g_renderer.PushRectangle(cell_rect, 0.0f, uncovered_cell_color);                      // Todo: Figure out how to scale this properly.                      //       256.0f is a random number that just works for now. @@ -425,7 +425,7 @@ Minesweeper::DrawBoard()                          256.0f                      };                      size_t mine_count_val = (size_t)m_adjacent_mine_counts[y*m_grid_width + x]; -                    m_render_group.PushBitmap( +                    g_renderer.PushMonoBitmap(                              mine_count_pos,                              m_digit_glyphs[mine_count_val].bitmap.width,                              m_digit_glyphs[mine_count_val].bitmap.height, diff --git a/src/games/minesweeper/Minesweeper.hpp b/src/games/minesweeper/Minesweeper.hpp index b89743e..b90f4a3 100644 --- a/src/games/minesweeper/Minesweeper.hpp +++ b/src/games/minesweeper/Minesweeper.hpp @@ -1,8 +1,7 @@  #pragma once -#include "imgui.h" -#include "renderer/RenderGroup.hpp"  #include <games/Game.hpp> +#include <basic/math.hpp>  #include <common/Font.hpp>  #include <array> @@ -38,7 +37,7 @@ public:      };  public: -    Minesweeper(RenderGroup& render_group); +    Minesweeper();      ~Minesweeper() = default;      bool Update(std::vector<SDL_Event>& events) override; @@ -61,7 +60,7 @@ private:      bool IsMine(int32_t x, int32_t y); -    V2F32 ScreenPosToViewPos(V2F32 screen_pos, RenderGroup& render_group); +    V2F32 ScreenPosToViewPos(V2F32 screen_pos);  private: @@ -78,8 +77,6 @@ private:  private: -    RenderGroup& m_render_group; -      RunState m_run_state = start_menu;      Difficulty m_difficulty = beginner;  | 
