aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/games/minesweeper/Minesweeper.cpp16
-rw-r--r--src/games/minesweeper/Minesweeper.hpp3
-rw-r--r--src/renderer/Renderer.cpp10
-rw-r--r--src/renderer/Renderer.hpp2
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: