From 9d72ed2d5801b1506158082f08bd0b47e58db17f Mon Sep 17 00:00:00 2001 From: fschildt Date: Mon, 29 Sep 2025 13:20:43 +0200 Subject: renderer: major refactor; vectors: now aggregates --- src/games/minesweeper/Minesweeper.cpp | 32 ++++++++++++++++---------------- src/games/minesweeper/Minesweeper.hpp | 9 +++------ 2 files changed, 19 insertions(+), 22 deletions(-) (limited to 'src/games/minesweeper') 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 #include +#include + +#include #include #include @@ -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& 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 +#include #include #include @@ -38,7 +37,7 @@ public: }; public: - Minesweeper(RenderGroup& render_group); + Minesweeper(); ~Minesweeper() = default; bool Update(std::vector& 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; -- cgit v1.2.3