aboutsummaryrefslogtreecommitdiff
path: root/src/games
diff options
context:
space:
mode:
Diffstat (limited to 'src/games')
-rw-r--r--src/games/minesweeper/Minesweeper.cpp71
-rw-r--r--src/games/snake/Snake.cpp42
-rw-r--r--src/games/tetris/Board.cpp20
-rw-r--r--src/games/tetris/Tetris.cpp2
-rw-r--r--src/games/tetris/Tetromino.cpp20
-rw-r--r--src/games/tetris/Tetromino.hpp2
6 files changed, 110 insertions, 47 deletions
diff --git a/src/games/minesweeper/Minesweeper.cpp b/src/games/minesweeper/Minesweeper.cpp
index 60502c6..6dc77a4 100644
--- a/src/games/minesweeper/Minesweeper.cpp
+++ b/src/games/minesweeper/Minesweeper.cpp
@@ -85,7 +85,7 @@ void Minesweeper::InitAdjacentMineCounters() {
}
bool Minesweeper::Update(std::vector<SDL_Event> &events, RenderGroup &render_group) {
- V3F32 clear_color = {0.3f, 0.2f, 0.3f};
+ Color clear_color = {0.3f, 0.2f, 0.3f};
render_group.SetCameraSize(4.0f, 3.0f);
render_group.Clear(clear_color);
@@ -266,10 +266,10 @@ void Minesweeper::DrawGameOverMenu(RenderGroup &render_group) {
}
void Minesweeper::DrawBoard(RenderGroup &render_group) {
- V3F32 covered_cell_color = V3F32(0.4f, 0.4f, 0.4f);
- V3F32 uncovered_cell_color = V3F32(0.2f, 0.2f, 0.2f);
- V3F32 flag_color = {0.6f, 0.3f, 03.f};
- V3F32 mine_color = {0.8f, 0.2f, 0.2f};
+ Color covered_cell_color = {0.4f, 0.4f, 0.4f};
+ Color uncovered_cell_color = {0.2f, 0.2f, 0.2f};
+ Color flag_color = {0.6f, 0.3f, 03.f};
+ Color mine_color = {0.8f, 0.2f, 0.2f};
V2F32 flag_draw_size = {m_CellInnerViewSize.x * 0.5f, m_CellInnerViewSize.y * 0.5f};
V2F32 flag_draw_offset = {
@@ -278,42 +278,63 @@ void Minesweeper::DrawBoard(RenderGroup &render_group) {
};
-
- // Todo: avoid if-statement by having them in separate contiguous locations?
-
for (int32_t y = 0; y < m_MapHeight; y++) {
for (int32_t x = 0; x < m_MapWidth; x++) {
- V3F32 world_pos = {
+ V2F32 world_pos = {
m_MapViewPos.x + (float)x * m_CellOuterViewSize.x,
m_MapViewPos.y + (float)y * m_CellOuterViewSize.y,
- 0.0f
};
bool is_covered = IsCovered(x, y);
bool is_flagged = IsFlagged(x, y);
bool is_mine = IsMine(x, y);
if (is_covered) {
- render_group.PushRectangle(world_pos, m_CellInnerViewSize, covered_cell_color);
- }
- if (is_covered && is_flagged) {
- assert(IsCovered(x ,y));
- V3F32 flag_world_pos = {
- world_pos.x + flag_draw_offset.x,
- world_pos.y + flag_draw_offset.y,
- 1.0f
+ RectF32 cell_world_rect = {
+ world_pos.x, world_pos.y,
+ world_pos.x + m_CellInnerViewSize.x, world_pos.y + m_CellInnerViewSize.y
};
- render_group.PushRectangle(flag_world_pos, flag_draw_size, flag_color);
- }
- if (!is_covered && !is_mine) {
- render_group.PushRectangle(world_pos, m_CellInnerViewSize, uncovered_cell_color);
+ render_group.PushRectangle(cell_world_rect, 0.0f, covered_cell_color);
+
+
+ if (is_flagged) {
+ V3F32 flag_world_pos = {
+ world_pos.x + flag_draw_offset.x,
+ world_pos.y + flag_draw_offset.y,
+ 1.0f
+ };
+ RectF32 flag_world_rect = {
+ flag_world_pos.x,
+ flag_world_pos.y,
+ flag_world_pos.x + m_CellInnerViewSize.x,
+ flag_world_pos.y + m_CellInnerViewSize.y,
+ };
+ render_group.PushRectangle(flag_world_rect, flag_world_pos.z, flag_color);
+ }
}
- if (!is_covered && is_mine) {
+ else {
V3F32 mine_world_pos = {
world_pos.x,
world_pos.y,
- 2.0f
+ 1.0f
};
- render_group.PushRectangle(mine_world_pos, m_CellInnerViewSize, mine_color);
+ if (is_mine) {
+ RectF32 mine_world_rect = {
+ mine_world_pos.x,
+ mine_world_pos.y,
+ mine_world_pos.x + m_CellInnerViewSize.x,
+ mine_world_pos.y + m_CellInnerViewSize.y,
+ };
+ render_group.PushRectangle(mine_world_rect, mine_world_pos.z, mine_color);
+ }
+ else {
+ RectF32 mine_world_rect = {
+ mine_world_pos.x,
+ mine_world_pos.y,
+ mine_world_pos.x + m_CellInnerViewSize.x,
+ mine_world_pos.y + m_CellInnerViewSize.y,
+ };
+ render_group.PushRectangle(mine_world_rect, mine_world_pos.z, uncovered_cell_color);
+ }
}
}
}
diff --git a/src/games/snake/Snake.cpp b/src/games/snake/Snake.cpp
index 9764a9e..6a95521 100644
--- a/src/games/snake/Snake.cpp
+++ b/src/games/snake/Snake.cpp
@@ -43,7 +43,7 @@ bool Snake::Update(std::vector<SDL_Event> &events, RenderGroup &render_group) {
m_LastMillisecondsSinceT0 = milliseconds_since_t0;
- V3F32 clear_color = V3F32(0.3f, 0.3f, 0.3f);
+ Color clear_color = {0.3f, 0.3f, 0.3f, 1.0f};
render_group.SetCameraSize(4.0f, 3.0f);
render_group.Clear(clear_color);
@@ -268,8 +268,14 @@ void Snake::Draw(RenderGroup &render_group) {
/* draw map background */
V3F32 map_world_pos = {map_x, map_y, 0.0f};
V2F32 map_world_dim = {map_view_width, map_view_height};
- V3F32 bg_color = {0.0f, 0.0f, 0.0f};
- render_group.PushRectangle(map_world_pos, map_world_dim, bg_color);
+ RectF32 map_world_rect = {
+ map_world_pos.x,
+ map_world_pos.y,
+ map_world_pos.x + map_world_dim.x,
+ 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);
/* draw snake */
@@ -290,9 +296,15 @@ void Snake::Draw(RenderGroup &render_group) {
1.0f
};
V2F32 world_dim = local_dim;
+ RectF32 world_rect = {
+ world_pos.x,
+ world_pos.y,
+ world_pos.x + world_dim.x,
+ world_pos.y + world_dim.y,
+ };
- V3F32 color = {0.3f, 0.3f, 0.3f};
- render_group.PushRectangle(world_pos, world_dim, color);
+ Color color = {0.3f, 0.3f, 0.3f, 1.0f};
+ render_group.PushRectangle(world_rect, world_pos.z, color);
tail++;
}
tail = 0;
@@ -312,9 +324,15 @@ void Snake::Draw(RenderGroup &render_group) {
1.0f
};
V2F32 world_dim = local_dim;
+ RectF32 world_rect = {
+ world_pos.x,
+ world_pos.y,
+ world_pos.x + world_dim.x,
+ world_pos.y + world_dim.y,
+ };
- V3F32 color = {0.3f, 0.3f, 0.3f};
- render_group.PushRectangle(world_pos, world_dim, color);
+ Color color = {0.3f, 0.3f, 0.3f, 1.0f};
+ render_group.PushRectangle(world_rect, world_pos.z, color);
tail++;
}
@@ -326,8 +344,14 @@ void Snake::Draw(RenderGroup &render_group) {
1.0f
};
V2F32 dim = {bodypart_size, bodypart_size};
- V3F32 color = {0.3f, 0.6f, 0.4f};
- render_group.PushRectangle(pos, dim, color);
+ RectF32 rect = {
+ pos.x,
+ pos.y,
+ pos.x + dim.x,
+ pos.y + dim.y
+ };
+ Color color = {0.3f, 0.6f, 0.4f, 1.0f};
+ render_group.PushRectangle(rect, pos.z, color);
}
void Snake::DoImgui() {
diff --git a/src/games/tetris/Board.cpp b/src/games/tetris/Board.cpp
index 9dff135..2230ee5 100644
--- a/src/games/tetris/Board.cpp
+++ b/src/games/tetris/Board.cpp
@@ -106,8 +106,14 @@ void Board::Draw(int32_t level, RenderGroup& render_group) {
tetromino_size_with_border * 10,
tetromino_size_with_border * 20
};
- V3F32 bg_color = {0.0f, 0.0f, 0.0f};
- render_group.PushRectangle(bg_world_pos, bg_world_dim, bg_color);
+ RectF32 bg_world_rect = {
+ bg_world_pos.x,
+ bg_world_pos.y,
+ bg_world_pos.x + bg_world_dim.x,
+ bg_world_pos.y + bg_world_dim.y,
+ };
+ Color bg_color = {0.0f, 0.0f, 0.0f, 1.0f};
+ render_group.PushRectangle(bg_world_rect, bg_world_pos.z, bg_color);
// tetromino parts
@@ -128,10 +134,16 @@ void Board::Draw(int32_t level, RenderGroup& render_group) {
1.0f
};
V2F32 world_dim = local_dim;
+ RectF32 world_rect = {
+ world_pos.x,
+ world_pos.y,
+ world_pos.x + world_dim.x,
+ world_pos.y + world_dim.y,
+ };
- V3F32 color = Tetromino::GetColor(static_cast<TetrominoId>(tetromino_id));
- render_group.PushRectangle(world_pos, world_dim, color);
+ Color color = Tetromino::GetColor(static_cast<TetrominoId>(tetromino_id));
+ render_group.PushRectangle(world_rect, world_pos.z, color);
}
}
}
diff --git a/src/games/tetris/Tetris.cpp b/src/games/tetris/Tetris.cpp
index e776fb0..24881a8 100644
--- a/src/games/tetris/Tetris.cpp
+++ b/src/games/tetris/Tetris.cpp
@@ -35,7 +35,7 @@ void Tetris::Restart() {
}
bool Tetris::Update(std::vector<SDL_Event> &events, RenderGroup &render_group) {
- V3F32 clear_color = V3F32(0.2f, 0.2f, 0.2f);
+ Color clear_color = {0.2f, 0.2f, 0.2f, 1.0f};
render_group.SetCameraSize(4.0f, 3.0f);
render_group.Clear(clear_color);
diff --git a/src/games/tetris/Tetromino.cpp b/src/games/tetris/Tetromino.cpp
index 577a869..78ac68d 100644
--- a/src/games/tetris/Tetromino.cpp
+++ b/src/games/tetris/Tetromino.cpp
@@ -153,24 +153,24 @@ void Tetromino::GetBitmap(TetrominoId id, BoardPos pos, int32_t ori, uint16_t *b
*dest = *src >> pos.x;
}
-V3F32 Tetromino::GetColor(TetrominoId id) {
+Color Tetromino::GetColor(TetrominoId id) {
using enum TetrominoId;
- V3F32 color;
+ Color color;
switch (id) {
case TETROMINO_I:
case TETROMINO_O:
case TETROMINO_T: {
- color = V3F32(0.8f, 0.8f, 0.8f);
+ color = {0.8f, 0.8f, 0.8f, 1.0f};
} break;
case TETROMINO_J:
case TETROMINO_S: {
- color = V3F32(0.8f, 0.2f, 0.2f);
+ color = {0.8f, 0.2f, 0.2f, 1.0f};
} break;
default: {
- color = V3F32(0.2f, 0.4f, 0.2f);
+ color = {0.2f, 0.4f, 0.2f, 1.0f};
}
}
return color;
@@ -201,10 +201,16 @@ void Tetromino::Draw(TetrominoId id, int32_t ori, V2F32 pos, float scale, Render
1.0f
};
V2F32 world_dim = local_dim;
+ RectF32 world_rect = {
+ world_pos.x,
+ world_pos.y,
+ world_pos.x + world_dim.x,
+ world_pos.y + world_dim.y,
+ };
- V3F32 color = GetColor(id);
- render_group.PushRectangle(world_pos, world_dim, color);
+ Color color = GetColor(id);
+ render_group.PushRectangle(world_rect, world_pos.z, color);
}
}
}
diff --git a/src/games/tetris/Tetromino.hpp b/src/games/tetris/Tetromino.hpp
index c3ceeff..d6d99c6 100644
--- a/src/games/tetris/Tetromino.hpp
+++ b/src/games/tetris/Tetromino.hpp
@@ -42,7 +42,7 @@ public:
public:
static bool IsCollisionWithBoard(TetrominoId id, BoardPos pos, int32_t ori, uint16_t *board_bitmap);
static void GetBitmap(TetrominoId id, BoardPos pos, int32_t ori, uint16_t *bitmap);
- static V3F32 GetColor(TetrominoId id);
+ static Color GetColor(TetrominoId id);
static void Draw(TetrominoId id, int32_t ori, V2F32 pos, float scale, RenderGroup &render_group);