diff options
| -rw-r--r-- | src/games/minesweeper/Minesweeper.cpp | 16 | ||||
| -rw-r--r-- | src/games/minesweeper/Minesweeper.hpp | 3 | ||||
| -rw-r--r-- | src/renderer/Renderer.cpp | 10 | ||||
| -rw-r--r-- | src/renderer/Renderer.hpp | 2 |
4 files changed, 13 insertions, 18 deletions
diff --git a/src/games/minesweeper/Minesweeper.cpp b/src/games/minesweeper/Minesweeper.cpp index a2738a2..f1aa223 100644 --- a/src/games/minesweeper/Minesweeper.cpp +++ b/src/games/minesweeper/Minesweeper.cpp @@ -136,7 +136,7 @@ Minesweeper::ProcessEvent(SDL_Event& event) case SDL_EVENT_MOUSE_BUTTON_DOWN: { 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); + V2F32 click_view_pos = g_renderer.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; @@ -260,20 +260,6 @@ Minesweeper::IsMine(int32_t x, int32_t y) return is_mine; } -V2F32 -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)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; - view_pos.y = (screen_pos.y / screen_height) * m_world_height; - return view_pos; -} - void Minesweeper::Draw() { diff --git a/src/games/minesweeper/Minesweeper.hpp b/src/games/minesweeper/Minesweeper.hpp index 8f8a2d2..46c6b3d 100644 --- a/src/games/minesweeper/Minesweeper.hpp +++ b/src/games/minesweeper/Minesweeper.hpp @@ -42,9 +42,6 @@ private: bool IsMine(int32_t x, int32_t y); - V2F32 ScreenPosToViewPos(V2F32 screen_pos); - - private: static constexpr int32_t s_max_grid_height = 32; static constexpr int32_t s_max_grid_width = 32; diff --git a/src/renderer/Renderer.cpp b/src/renderer/Renderer.cpp index 37d90f3..e430039 100644 --- a/src/renderer/Renderer.cpp +++ b/src/renderer/Renderer.cpp @@ -61,6 +61,16 @@ Renderer::WorldYToScreenY(float world_y) return (int32_t)screen_y; } + +V2F32 +Renderer::ScreenPosToViewPos(V2F32 screen_pos) +{ + V2F32 view_pos = {}; + view_pos.x = (screen_pos.x / (float)m_screen_w) * m_camera_w; + view_pos.y = (screen_pos.y / (float)m_screen_h) * m_camera_h; + return view_pos; +} + void Renderer::SetClearColor(Color color) { diff --git a/src/renderer/Renderer.hpp b/src/renderer/Renderer.hpp index eaa9630..91a919d 100644 --- a/src/renderer/Renderer.hpp +++ b/src/renderer/Renderer.hpp @@ -96,6 +96,8 @@ public: int32_t WorldWidthToScreenWidth(float w); int32_t WorldHeightToScreenHeight(float h); + V2F32 ScreenPosToViewPos(V2F32 screen_pos); + public: |
