#pragma once #include #include #include #include class Tetris : public Game { public: Tetris(); bool Update(std::vector& events) override; private: void Start(); void UpdateResumeState(SDL_Event& event); void UpdatePauseState(SDL_Event& event); uint32_t GetSoftdropCount(float dt); void HandleTetrominoPlacement(); void HandleGameOver(); void Draw(); void DrawLineCounter(); void DrawStatistics(); void DrawScore(); void DrawNextTetromino(); void DrawLevel(); void DrawGameOverMenu(); private: Font m_font; Board m_board; Tetromino m_active_tetromino; Tetromino::Id m_next_tetromino_id; int32_t m_tetromino_counters[Tetromino::id_count] {}; int32_t m_score = 0; int32_t m_line_counter = 0; int32_t m_starting_level = 0; int32_t m_level = 0; int32_t m_softdrop_counter = 0; int32_t m_highscore = 0; };