aboutsummaryrefslogtreecommitdiff
path: root/src/games/snake
diff options
context:
space:
mode:
Diffstat (limited to 'src/games/snake')
-rw-r--r--src/games/snake/Snake.cpp24
-rw-r--r--src/games/snake/Snake.hpp8
2 files changed, 18 insertions, 14 deletions
diff --git a/src/games/snake/Snake.cpp b/src/games/snake/Snake.cpp
index 6a95521..aa8cedf 100644
--- a/src/games/snake/Snake.cpp
+++ b/src/games/snake/Snake.cpp
@@ -2,7 +2,9 @@
#include <imgui.h>
-Snake::Snake () {
+Snake::Snake(RenderGroup& render_group)
+ : m_RenderGroup{render_group}
+{
m_IsPaused = false;
m_IsRunning = true;
@@ -33,9 +35,9 @@ Snake::Snake () {
m_Dist = std::uniform_int_distribution<int32_t>(0, m_MapWidth * m_MapHeight - 3);
SpawnFood();
- }
+}
-bool Snake::Update(std::vector<SDL_Event> &events, RenderGroup &render_group) {
+bool Snake::Update(std::vector<SDL_Event> &events) {
uint64_t milliseconds_since_t0 = SDL_GetTicks();
uint64_t milliseconds_since_t0_last = m_LastMillisecondsSinceT0;
uint64_t dt_in_milliseconds = milliseconds_since_t0 - milliseconds_since_t0_last;
@@ -44,8 +46,8 @@ bool Snake::Update(std::vector<SDL_Event> &events, RenderGroup &render_group) {
Color clear_color = {0.3f, 0.3f, 0.3f, 1.0f};
- render_group.SetCameraSize(4.0f, 3.0f);
- render_group.Clear(clear_color);
+ m_RenderGroup.SetCameraSize(4.0f, 3.0f);
+ m_RenderGroup.Clear(clear_color);
for (SDL_Event &event : events) {
@@ -66,7 +68,7 @@ bool Snake::Update(std::vector<SDL_Event> &events, RenderGroup &render_group) {
}
- Draw(render_group);
+ Draw();
DoImgui();
return m_IsRunning;
@@ -249,7 +251,7 @@ void Snake::SpawnFood() {
m_FoodPosition = {bit0_x, bit0_y};
}
-void Snake::Draw(RenderGroup &render_group) {
+void Snake::Draw() {
float world_width = 4.0f;
float world_height = 3.0f;
@@ -275,7 +277,7 @@ void Snake::Draw(RenderGroup &render_group) {
map_world_pos.y + map_world_dim.y
};
Color bg_color = {0.0f, 0.0f, 0.0f, 1.0f};
- render_group.PushRectangle(map_world_rect, map_world_pos.z, bg_color);
+ m_RenderGroup.PushRectangle(map_world_rect, map_world_pos.z, bg_color);
/* draw snake */
@@ -304,7 +306,7 @@ void Snake::Draw(RenderGroup &render_group) {
};
Color color = {0.3f, 0.3f, 0.3f, 1.0f};
- render_group.PushRectangle(world_rect, world_pos.z, color);
+ m_RenderGroup.PushRectangle(world_rect, world_pos.z, color);
tail++;
}
tail = 0;
@@ -332,7 +334,7 @@ void Snake::Draw(RenderGroup &render_group) {
};
Color color = {0.3f, 0.3f, 0.3f, 1.0f};
- render_group.PushRectangle(world_rect, world_pos.z, color);
+ m_RenderGroup.PushRectangle(world_rect, world_pos.z, color);
tail++;
}
@@ -351,7 +353,7 @@ void Snake::Draw(RenderGroup &render_group) {
pos.y + dim.y
};
Color color = {0.3f, 0.6f, 0.4f, 1.0f};
- render_group.PushRectangle(rect, pos.z, color);
+ m_RenderGroup.PushRectangle(rect, pos.z, color);
}
void Snake::DoImgui() {
diff --git a/src/games/snake/Snake.hpp b/src/games/snake/Snake.hpp
index f04ad16..ef1fd34 100644
--- a/src/games/snake/Snake.hpp
+++ b/src/games/snake/Snake.hpp
@@ -17,8 +17,8 @@ public:
public:
- Snake();
- bool Update(std::vector<SDL_Event> &events, RenderGroup &render_group) override;
+ Snake(RenderGroup& render_group);
+ bool Update(std::vector<SDL_Event> &events) override;
private:
@@ -28,7 +28,7 @@ private:
void MaybeMoveSnake(float dt_in_seconds);
void SpawnFood();
- void Draw(RenderGroup &render_group);
+ void Draw();
void DoImgui();
@@ -37,6 +37,8 @@ private:
static constexpr int32_t MAX_MAP_WIDTH = 16;
static constexpr int32_t MAX_MAP_HEIGHT = 16;
+ RenderGroup& m_RenderGroup;
+
bool m_IsPaused;
bool m_IsRunning;