#ifndef CHANCE_H
#define CHANCE_H

typedef enum {
    CHANCE_ADVANCE,             // Move to a specific index or category
    CHANCE_EARN,                // Add money
    CHANCE_SPEND,               // Subtract money
    CHANCE_SPEND_EACH_PLAYER,   // Pay every other player
    CHANCE_BACK,                // Move back X spaces
    CHANCE_JAIL,                // Go to jail
    CHANCE_JAIL_FREE,           // Keep a get out of jail free card
    CHANCE_REPAIRS              // Pay per house/hotel
} ChanceType;

// Sentinel values for "nearest" targets
#define TARGET_NEAREST_UTILITY -1
#define TARGET_NEAREST_RAILROAD -2

typedef struct {
    const char* description;
    ChanceType type;
    int value;                  // Used for index, amount, or spaces back
    int value2;                 // Specifically for repairs (Hotel cost)
} ChanceCard;

#define CHANCE_DECK_SIZE 16

static const ChanceCard CHANCE_DECK[CHANCE_DECK_SIZE] = {
    {"Advance to Go", CHANCE_ADVANCE, 0, 0},
    {"Advance to Illinois Ave", CHANCE_ADVANCE, 24, 0},
    {"Advance to nearest Utility. If unowned, buy it. If owned, pay 10x dice.", CHANCE_ADVANCE, TARGET_NEAREST_UTILITY, 0},
    {"Advance to nearest Railroad. If unowned, buy it. If owned, pay twice rental.", CHANCE_ADVANCE, TARGET_NEAREST_RAILROAD, 0},
    {"Advance to St. Charles Place – if you pass Go, collect $200", CHANCE_ADVANCE, 11, 0},
    {"Bank pays you dividend of $50", CHANCE_EARN, 50, 0},
    {"Get out of Jail free", CHANCE_JAIL_FREE, 0, 0},
    {"Go back 3 spaces", CHANCE_BACK, 3, 0},
    {"Go directly to Jail", CHANCE_JAIL, 0, 0},
    {"Make general repairs - $25 per house, $100 per hotel", CHANCE_REPAIRS, 25, 100},
    {"Pay poor tax of $15", CHANCE_SPEND, 15, 0},
    {"Take a trip to Reading Railroad", CHANCE_ADVANCE, 5, 0},
    {"Take a walk on the Boardwalk", CHANCE_ADVANCE, 39, 0},
    {"Elected chairman of the board – pay each player $50", CHANCE_SPEND_EACH_PLAYER, 50, 0},
    {"Your building loan matures – collect $150", CHANCE_EARN, 150, 0},
    {"You have won a crossword competition - collect $100", CHANCE_EARN, 100, 0}
};

#endif

/*
Implementation Tips for your main.c:
Handling "Nearest": When you draw a card with TARGET_NEAREST_UTILITY, use a loop starting from the player's current position to find the next index where MONOPOLY_BOARD[i].type == TILE_UTILITY.

The Repair Card: When the type is CHANCE_REPAIRS, you'll need to look at the player's owned properties and count how many houses/hotels they have (once you implement the building logic), then multiply by value (25) and value2 (100).

Shuffling: In C, you can shuffle the deck at the start of the game using a Fisher-Yates shuffle algorithm on an array of indices [0...15].
*/