# Spécifications : Achat et Upgrade des Cases du Zoo (Agrandissement)

## Agrandissement du Zoo
- **Action** : Acheter une nouvelle parcelle de terrain adjacente à la grille existante.
- **Coût** : Très élevé, progressif selon la taille actuelle du zoo.
- **Contenu** : La nouvelle case arrive avec un biome par défaut (selon sa position géographique Prairie/Océan/Montagne) et vide.
- **Contraintes** : Limité par la taille de la carte globale ("Monde" ou "Région").

# Annexes Techniques

## 1. Données et États
### Modèle de Données (JSON)
Action sur l'objet `Zoo` (dimensions).
```json
{
  "zoo_id": "uuid",
  "dimensions": { "width": 5, "height": 6 },
  "expansion_history": [
    { "direction": "EAST", "cost": 1000, "timestamp": "timestamp" }
  ],
  "max_dimensions": { "width": 20, "height": 20 }
}
```

### Caractéristiques Initiales
**Taille Initiale** : 5x6 cases (30 cases).

## 7. Progression
### Tableau des Upgrades (Agrandissement)
| Extension | Coût (Pièces) | Gain |
| :--- | :--- | :--- |
| +1 Colonne (Est) | 1000 | +Hauteur cases (6) |
| +1 Ligne (Sud) | 1000 | +Largeur cases (5) |
| +1 Colonne (Ouest) | 2000 | +Hauteur cases |
| +1 Ligne (Nord) | 2000 | +Largeur cases |
| +1 Colonne (Est 2) | 5000 | +Hauteur cases |
| +1 Ligne (Sud 2) | 5000 | +Largeur cases |

## 8. Logique et Interfaces
### Algorithme d'Expansion
```python
def expand_zoo(zoo, direction, player):
    cost = calculate_expansion_cost(zoo, direction)
    
    if player.money < cost:
        return error("INSUFFICIENT_FUNDS")
        
    if reaches_world_limit(zoo, direction):
        return error("WORLD_LIMIT_REACHED")
        
    player.money -= cost
    
    # Mise à jour de la grille
    new_cells = generate_new_strip(direction, zoo.dimensions)
    zoo.grid.merge(new_cells)
    zoo.update_dimensions(direction)
    
    return success("ZOO_EXPANDED")
```

# Annexes UX/UI

## 0. Direction Artistique & Vue
*   **Vue** : Isométrique (2.5D).
*   **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg).
*   **Sprites** : 4 directions.
*   **Interactions** :
    *   **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner.
    *   **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.


## 1. Expérience Utilisateur (UX)
### Achat Parcelle (Action)
**Description UX** : Le joueur clique sur une zone "Hors Limites" adjacente pour l'acheter.
**Description UI** : Zone grisée ou avec panneau "À Vendre". Au survol, prix affiché.
**Emplacement** : Bords de la Carte Zoo.
**Intégration** : Grille étendue.
**Navigation** : Clic Zone Grisée -> Confirmer Achat.
**Événements** : `EXPAND_ZOO`.

#### Assets
- **Musiques** : Son "Vent dans les plaines" lors du survol.
- **Sons** : `land_buy.mp3`.
- **Graphiques** : Panneau "For Sale".
- **Images** : Texture herbe (cachée par brouillard).
- **Vidéos** : Timelapse accéléré de la construction des clôtures (2s).
- **Animations** : Brouillard se dissipe, herbe apparaît.
- **Couleurs** : Gris (Inaccessible) -> Vert (Accessible).
- **Textes** : "Acheter Terrain (X Pièces)".
- **Formes** : Carré.

### Vue Isométrique
- **Brouillard de Guerre** : Les zones non achetées sont couvertes par des nuages ou un brouillard semi-transparent.
- **Dévoilement** : Lors de l'achat, les nuages se dissipent (fade out + scale up) pour révéler le nouveau terrain.
- **Clôtures** : Les clôtures délimitant le zoo se déplacent automatiquement vers la nouvelle limite.
