Files
basic1/games/monopoly/monopoly_game.h
T
2026-01-31 22:46:26 -05:00

62 lines
1.7 KiB
C++

// ============================================================================
// 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