diff options
Diffstat (limited to 'src/games')
| -rw-r--r-- | src/games/minesweeper/Minesweeper.cpp | 71 | ||||
| -rw-r--r-- | src/games/snake/Snake.cpp | 42 | ||||
| -rw-r--r-- | src/games/tetris/Board.cpp | 20 | ||||
| -rw-r--r-- | src/games/tetris/Tetris.cpp | 2 | ||||
| -rw-r--r-- | src/games/tetris/Tetromino.cpp | 20 | ||||
| -rw-r--r-- | src/games/tetris/Tetromino.hpp | 2 | 
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);  | 
