aboutsummaryrefslogtreecommitdiff
path: root/src/games/minesweeper/Minesweeper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/games/minesweeper/Minesweeper.cpp')
-rw-r--r--src/games/minesweeper/Minesweeper.cpp71
1 files changed, 46 insertions, 25 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);
+ }
}
}
}