diff options
Diffstat (limited to 'src/games/minesweeper/Minesweeper.cpp')
| -rw-r--r-- | src/games/minesweeper/Minesweeper.cpp | 71 |
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); + } } } } |
