62 lines
1.7 KiB
C++
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
|