// ============================================================================ // MONOPOLY GAME HEADER // ============================================================================ // Concrete implementation of the Game interface for Monopoly #ifndef MONOPOLY_GAME_H #define MONOPOLY_GAME_H #include "../../lib/game.h" #include "player.h" #include "monopoly_board.h" #include "chance.h" #include "community_chest.h" /** * @brief Monopoly game implementation for the custom console * * - Button/touch input for actions * - Board and player state * - Rendering and input handling */ class MonopolyGame : public Game { public: MonopolyGame(uint16_t width, uint16_t height, LowLevelRenderer* renderer, LowLevelGUI* gui, InputManager* input_manager); void init() override; bool update(const InputEvent& event) override; void draw() override; private: // Game state and helpers Player players[MAX_PLAYERS]; int players_count; int current_player_idx; bool has_rolled; int double_rolls; bool just_sent_to_jail; // UI selection state int selected_action; // 0: Context action, 1: Pay $50 (Jail), 2: View Board int current_action_count = 2; // Modal games Game* active_modal = nullptr; int last_dice1 = 0; int last_dice2 = 0; int modal_property_index = -1; int chance_deck[CHANCE_DECK_SIZE]; int current_chance_idx; int last_drawn_chance_idx = -1; int community_deck[COMMUNITY_DECK_SIZE]; int current_community_idx; int last_drawn_community_idx = -1; int rent_multiplier = 1; bool force_utility_10x = false; void shuffle_chance_deck(); void shuffle_community_deck(); }; #endif // MONOPOLY_GAME_H