diff options
| author | fschildt <florian.schildt@protonmail.com> | 2025-09-27 18:19:42 +0200 | 
|---|---|---|
| committer | fschildt <florian.schildt@protonmail.com> | 2025-09-27 18:20:14 +0200 | 
| commit | 3d30e1ee9d1c9fb67cca8e3f178ba5fd05a2726e (patch) | |
| tree | b9b4cdb2f50d9bccc98df895fbc02c74ad4af0e7 /src/games/tetris | |
| parent | dbb42e741d29ab213f2a51fc8d9568c02f844647 (diff) | |
tetris: use unscoped enums in Tetromino class
Diffstat (limited to 'src/games/tetris')
| -rw-r--r-- | src/games/tetris/Board.cpp | 14 | ||||
| -rw-r--r-- | src/games/tetris/Tetris.cpp | 40 | ||||
| -rw-r--r-- | src/games/tetris/Tetris.hpp | 2 | ||||
| -rw-r--r-- | src/games/tetris/Tetromino.cpp | 19 | ||||
| -rw-r--r-- | src/games/tetris/Tetromino.hpp | 38 | 
5 files changed, 60 insertions, 53 deletions
diff --git a/src/games/tetris/Board.cpp b/src/games/tetris/Board.cpp index 2230ee5..87a0e22 100644 --- a/src/games/tetris/Board.cpp +++ b/src/games/tetris/Board.cpp @@ -12,14 +12,14 @@ Board::Board() {      for (int y = 0; y < 22; y++) {          for (int x = 0; x < 10; x++) { -            m_Idmap[y][x] = (uint8_t)TetrominoId::TETROMINO_ID_NONE; +            m_Idmap[y][x] = Tetromino::tetromino_id_none;          }      }  }  int32_t Board::PlaceTetromino(Tetromino &tetromino) {      BoardPos pos = tetromino.GetPos(); -    TetrominoId id = tetromino.GetId(); +    Tetromino::TetrominoId id = tetromino.GetId();      uint16_t tetromino_bitmap[4];      tetromino.GetBitmap(tetromino_bitmap); @@ -44,7 +44,7 @@ int32_t Board::PlaceTetromino(Tetromino &tetromino) {              if (tetromino_bitmap[y] & bitmap_x) {                  int32_t idmap_x = pos.x + x - 3;                  int32_t idmap_y = pos.y + y - 2; -                m_Idmap[idmap_y][idmap_x] = static_cast<uint8_t>(id); +                m_Idmap[idmap_y][idmap_x] = id;              }          }      } @@ -77,7 +77,7 @@ int32_t Board::ClearRows(int32_t y0) {      }      for (int32_t y = 24-rows_cleared; y < 24; y++) {          m_Bitmap[y] = 0xe007; -        std::fill(m_Idmap[y-2], m_Idmap[y-2] + 10, (uint8_t)TetrominoId::TETROMINO_ID_NONE); +        std::fill(m_Idmap[y-2], m_Idmap[y-2] + 10, Tetromino::tetromino_id_none);      } @@ -119,8 +119,8 @@ void Board::Draw(int32_t level, RenderGroup& render_group) {      // tetromino parts      for (size_t y = 0; y < 20; y++) {          for (size_t x = 0; x < 10; x++) { -            uint8_t tetromino_id = m_Idmap[y][x]; -            if (tetromino_id < (uint8_t)TetrominoId::TETROMINO_ID_COUNT) { +            Tetromino::TetrominoId tetromino_id = (Tetromino::TetrominoId)m_Idmap[y][x]; +            if (tetromino_id < Tetromino::tetromino_id_count) {                  V2F32 local_pos = {                      (float)x * tetromino_size_with_border + tetromino_offset,                      (float)y * tetromino_size_with_border + tetromino_offset @@ -142,7 +142,7 @@ void Board::Draw(int32_t level, RenderGroup& render_group) {                  }; -                Color color = Tetromino::GetColor(static_cast<TetrominoId>(tetromino_id)); +                Color color = Tetromino::GetColor(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 24881a8..f2a7384 100644 --- a/src/games/tetris/Tetris.cpp +++ b/src/games/tetris/Tetris.cpp @@ -83,9 +83,9 @@ void Tetris::UpdateResumeState(SDL_Event &event) {      case SDL_EVENT_KEY_DOWN: {          auto key = event.key.key;          if (key == SDLK_RIGHT) { -            m_ActiveTetromino.MaybeMoveHorizontally(TetrominoDirection::Right); +            m_ActiveTetromino.MaybeMoveHorizontally(Tetromino::right);          } else if (key == SDLK_LEFT) { -            m_ActiveTetromino.MaybeMoveHorizontally(TetrominoDirection::Left); +            m_ActiveTetromino.MaybeMoveHorizontally(Tetromino::left);          } else if (key == SDLK_DOWN) {              bool moved_down = m_ActiveTetromino.MaybeMoveDown();              if (!moved_down) { @@ -95,9 +95,9 @@ void Tetris::UpdateResumeState(SDL_Event &event) {                  m_SoftdropCounter++;              }          } else if (key == SDLK_X) { -            m_ActiveTetromino.MaybeRotate(TetrominoRotation::Clockwise); +            m_ActiveTetromino.MaybeRotate(Tetromino::rotate_clockwise);          } else if (key == SDLK_Z || key == SDLK_Y) { -            m_ActiveTetromino.MaybeRotate(TetrominoRotation::CounterClockwise); +            m_ActiveTetromino.MaybeRotate(Tetromino::rotate_counter_clockwise);          } else if (key == SDLK_ESCAPE) {              m_RunningState = TetrisRunningState::Pause;          } @@ -131,7 +131,7 @@ void Tetris::HandleTetrominoPlacement() {      m_LineCounter += rows_cleared; -    m_TetrominoCounters[(size_t)m_ActiveTetromino.GetId()] += 1; +    m_TetrominoCounters[m_ActiveTetromino.GetId()] += 1;      if (rows_cleared == 1) {          m_Score += 40 * (m_Level + 1); @@ -279,27 +279,25 @@ void Tetris::DrawStatistics(RenderGroup &render_group) {      ImVec2 screen_text_gap = render_group.ViewSizeToScreenSizeImGui(view_text_gap); -    using enum TetrominoId; - -    Tetromino::Draw(TETROMINO_T, 0, view_tetrominoes_pos, 0.5f, render_group); +    Tetromino::Draw(Tetromino::t_piece, 0, view_tetrominoes_pos, 0.5f, render_group);      view_tetrominoes_pos.y -= view_advance.y; -    Tetromino::Draw(TETROMINO_J, 0, view_tetrominoes_pos, 0.5f, render_group); +    Tetromino::Draw(Tetromino::j_piece, 0, view_tetrominoes_pos, 0.5f, render_group);      view_tetrominoes_pos.y -= view_advance.y; -    Tetromino::Draw(TETROMINO_Z, 0, view_tetrominoes_pos, 0.5f, render_group); +    Tetromino::Draw(Tetromino::z_piece, 0, view_tetrominoes_pos, 0.5f, render_group);      view_tetrominoes_pos.y -= view_advance.y; -    Tetromino::Draw(TETROMINO_O, 0, view_tetrominoes_pos, 0.5f, render_group); +    Tetromino::Draw(Tetromino::o_piece, 0, view_tetrominoes_pos, 0.5f, render_group);      view_tetrominoes_pos.y -= view_advance.y; -    Tetromino::Draw(TETROMINO_S, 0, view_tetrominoes_pos, 0.5f, render_group); +    Tetromino::Draw(Tetromino::s_piece, 0, view_tetrominoes_pos, 0.5f, render_group);      view_tetrominoes_pos.y -= view_advance.y; -    Tetromino::Draw(TETROMINO_L, 0, view_tetrominoes_pos, 0.5f, render_group); +    Tetromino::Draw(Tetromino::l_piece, 0, view_tetrominoes_pos, 0.5f, render_group);      view_tetrominoes_pos.y -= view_advance.y; -    Tetromino::Draw(TETROMINO_I, 0, view_tetrominoes_pos, 0.5f, render_group); +    Tetromino::Draw(Tetromino::i_piece, 0, view_tetrominoes_pos, 0.5f, render_group);      view_tetrominoes_pos.y -= view_advance.y; @@ -312,19 +310,19 @@ void Tetris::DrawStatistics(RenderGroup &render_group) {      ImGui::SetNextWindowPos(screen_text_pos);      ImGui::Begin("TetrisStatistics", nullptr, s_DefaultImGuiWindowFlags); -    ImGui::Text("%d", m_TetrominoCounters[(size_t)TETROMINO_T]); +    ImGui::Text("%d", m_TetrominoCounters[Tetromino::t_piece]);      ImGui::Dummy(screen_text_gap); -    ImGui::Text("%d", m_TetrominoCounters[(size_t)TETROMINO_J]); +    ImGui::Text("%d", m_TetrominoCounters[Tetromino::j_piece]);      ImGui::Dummy(screen_text_gap); -    ImGui::Text("%d", m_TetrominoCounters[(size_t)TETROMINO_Z]); +    ImGui::Text("%d", m_TetrominoCounters[Tetromino::z_piece]);      ImGui::Dummy(screen_text_gap); -    ImGui::Text("%d", m_TetrominoCounters[(size_t)TETROMINO_O]); +    ImGui::Text("%d", m_TetrominoCounters[Tetromino::o_piece]);      ImGui::Dummy(screen_text_gap); -    ImGui::Text("%d", m_TetrominoCounters[(size_t)TETROMINO_S]); +    ImGui::Text("%d", m_TetrominoCounters[Tetromino::s_piece]);      ImGui::Dummy(screen_text_gap); -    ImGui::Text("%d", m_TetrominoCounters[(size_t)TETROMINO_L]); +    ImGui::Text("%d", m_TetrominoCounters[Tetromino::l_piece]);      ImGui::Dummy(screen_text_gap); -    ImGui::Text("%d", m_TetrominoCounters[(size_t)TETROMINO_I]); +    ImGui::Text("%d", m_TetrominoCounters[Tetromino::i_piece]);      ImGui::Dummy(screen_text_gap);      ImGui::End(); diff --git a/src/games/tetris/Tetris.hpp b/src/games/tetris/Tetris.hpp index 30167d8..42981db 100644 --- a/src/games/tetris/Tetris.hpp +++ b/src/games/tetris/Tetris.hpp @@ -54,7 +54,7 @@ private:      Tetromino m_ActiveTetromino;      Tetromino m_NextTetromino; -    int32_t m_TetrominoCounters[(size_t)TetrominoId::TETROMINO_ID_COUNT] {}; +    int32_t m_TetrominoCounters[Tetromino::tetromino_id_count] {};      int32_t m_Score = 0;      int32_t m_LineCounter = 0;      int32_t m_StartingLevel = 0; diff --git a/src/games/tetris/Tetromino.cpp b/src/games/tetris/Tetromino.cpp index 78ac68d..a77fa57 100644 --- a/src/games/tetris/Tetromino.cpp +++ b/src/games/tetris/Tetromino.cpp @@ -57,8 +57,8 @@ static const uint16_t s_left_aligned_bitmaps[7][4][4] = {  }; -TetrominoId Tetromino::GetRandomId() { -    static std::uniform_int_distribution<int> s_Dist(0, (int)TetrominoId::TETROMINO_ID_COUNT-1); +Tetromino::TetrominoId Tetromino::GetRandomId() { +    static std::uniform_int_distribution<int> s_Dist(0, tetromino_id_count-1);      static std::mt19937 s_Rng((std::random_device()()));      TetrominoId id = static_cast<TetrominoId>(s_Dist(s_Rng));      return id; @@ -77,7 +77,7 @@ Tetromino::Tetromino(Board &board) :  {  } -TetrominoId Tetromino::GetId() { +Tetromino::TetrominoId Tetromino::GetId() {      return m_Id;  } @@ -95,8 +95,7 @@ bool Tetromino::IsCollisionWithBoard() {  }  void Tetromino::MaybeRotate(TetrominoRotation rotation) { -    int32_t rot = static_cast<int32_t>(rotation); -    int32_t ori = (m_Ori + rot) % 4; +    int32_t ori = (m_Ori + rotation) % 4;      if (!IsCollisionWithBoard(m_Id, m_Pos, ori, m_BoardBitmap)) {          m_Ori = ori;      } @@ -158,14 +157,14 @@ Color Tetromino::GetColor(TetrominoId id) {      Color color;      switch (id) { -        case TETROMINO_I: -        case TETROMINO_O: -        case TETROMINO_T: { +        case i_piece: +        case o_piece: +        case t_piece: {              color = {0.8f, 0.8f, 0.8f, 1.0f};          } break; -        case TETROMINO_J: -        case TETROMINO_S: { +        case j_piece: +        case s_piece: {              color = {0.8f, 0.2f, 0.2f, 1.0f};          } break; diff --git a/src/games/tetris/Tetromino.hpp b/src/games/tetris/Tetromino.hpp index d6d99c6..0f97821 100644 --- a/src/games/tetris/Tetromino.hpp +++ b/src/games/tetris/Tetromino.hpp @@ -5,23 +5,33 @@  #include <renderer/RenderGroup.hpp>  #include <games/tetris/Board.hpp> -enum class TetrominoId : uint8_t { -    TETROMINO_O = 0, -    TETROMINO_S, -    TETROMINO_Z, -    TETROMINO_T, -    TETROMINO_L, -    TETROMINO_J, -    TETROMINO_I, -    TETROMINO_ID_COUNT, -    TETROMINO_ID_NONE, -}; -enum class TetrominoRotation {Clockwise = 1, CounterClockwise = 3}; -enum class TetrominoDirection {Left = -1, Right = 1}; -  class Tetromino {  public: +    enum TetrominoId : uint8_t { +        o_piece, +        s_piece, +        z_piece, +        t_piece, +        l_piece, +        j_piece, +        i_piece, +        tetromino_id_count, +        tetromino_id_none, +    }; + +    enum TetrominoRotation { +        rotate_clockwise = 1, +        rotate_counter_clockwise = 3 +    }; + +    enum TetrominoDirection { +        left = -1, +        right = 1 +    }; + + +public:      Tetromino() = delete;      Tetromino(Board &board);      Tetromino(uint16_t *board_bitmap);  | 
