# Spécifications : Carte du Zoo

## Définition
La carte du zoo est l'espace principal de gestion du joueur où il place ses bâtiments et ses animaux.

## Structure
- **Vue** : Isométrique (2.5D).
- **Affichage** : Plein écran sous la barre du haut, dézoom possible.
- **Grille** : Composée de cases individuelles.
- **Biomes** : Divisée en tiers de largeur :
  - Gauche : Prairie
  - Milieu : Océan
  - Droite : Montagne
- **Dégradés** : Couleurs et températures varient doucement au sein des biomes.

## Contenu Initial (Lancement)
- 1 Case Agrandissement du zoo (+1 case, payant)
- 1 Case Recherche (Coin haut gauche)
- 1 Case Billeterie (Coin haut gauche)
- 1 Case Nurserie (Coin haut gauche)
- 1 Case Accueil nouveaux animaux (Coin haut gauche)
- 1 Case Nourriture générale (Coin haut gauche)
- 1 Case Camion (Coin haut gauche)
- 24 Cases de terrain (3 couleurs différentes réparties selon les biomes)

## Mécaniques
- **Placement** : Le joueur peut placer des œufs, des animaux et des bâtiments sur les cases vides.
- **Déplacement** : Glisser-déposer pour réorganiser.
- **Visiteurs** : Les visiteurs se déplacent sur la grille.
- **Feedbacks** : L'état du terrain (herbe jaunie, givre) reflète l'adéquation avec les animaux.

# Annexes Techniques

## 1. Données et États
### Modèle de Données (JSON)
```json
{
  "id": "uuid",
  "owner_id": "uuid",
  "width": "integer (init 5)",
  "height": "integer (init 6)",
  "cases": [
    {
      "id": "uuid",
      "grid": { "x": "integer", "y": "integer" },
      "iso": { "iso_x": "integer", "iso_y": "integer" },
      "z_index": "integer",
      "biome": "enum('prairie','ocean','montagne')",
      "terrain": {
        "ground_type": "enum('herbe','terre','sable','roche','eau')",
        "path_type": "enum('none','terre','gravier','paves','bois_pont')",
        "decoration_ids": "uuid[]"
      },
      "occupancy": {
        "type": "enum('empty','animal','building','service','enclosure_fence','water_obstacle')",
        "entity_id": "uuid | null"
      },
      "render": {
        "tile_variant": "string (auto-tiling key)",
        "occluder": "boolean",
        "click_hitbox": "enum('tile','base_sprite','custom_polygon')"
      },
      "timestamps": {
        "created_at": "timestamp",
        "updated_at": "timestamp"
      }
    }
  ]
}
```

### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Taille | 30 cases (5x6 approx) |
| Biomes | 3 (Tiers) |

### Scores Initiaux
**Score Aménagement** : 0/100 (Utilisation de l'espace).

## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Création du compte joueur.

### Conditions de Disparition
**Reset Joueur** : Suppression du compte ou Faillite totale.

### Hérédité
**Fondations** : Les extensions de terrain achetées sont conservées en cas de "Soft Reset" (Prestige).

## 3. Impacts Environnementaux
### Impact Température
**Micro-climats** : Les cases adjacentes à l'Océan sont plus fraîches (-2°C). Celles en Montagne sont plus froides (-5°C).

### Impact Milieu (Biome)
**Bonus Synergie** : Placer 4 cases de même biome en carré crée un "Super Biome" (+10% efficacité).

### Impact Saisons
**Décor** : Les arbres (décoration) changent de couleur (Vert -> Orange -> Blanc -> Bourgeons).

### Impact Heure / Jour-Nuit
**Lumières** : Les lampadaires et bâtiments s'allument la nuit (Ambiance).

## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Intimité** : Les buissons (décoration) placés autour d'un enclos augmentent la fertilité (+5%).

### Impact Mort
**Compost** : Un animal mort fertilise le sol. L'herbe devient plus verte sur cette case après disparition du corps.

### Impact Nourriture
**Pousse** : L'herbe (nourriture gratuite) repousse lentement sur les cases Prairie vides.

### Impact Attractivité (Visiteurs/Animaux)
**Beauté** : +1 Attractivité par élément de décoration (Arbre, Banc, Fontaine).

### Impact Valeur
**Foncier** : Chaque case achetée augmente la valeur théorique du zoo.

## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Chemins** : Augmentent la vitesse de déplacement des visiteurs (+50%).

### Dépenses (Boutiques/Visiteurs)
**Entretien Espaces Verts** : Coût hebdomadaire pour garder le zoo propre (1 pièce/case).

### Trajet Visiteurs
Support du pathfinding (A* sur la grille). Les visiteurs évitent les obstacles (Rochers, Eau profonde).

## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
*   **Agrandissement** : Ajout d'une colonne/ligne ou case adjacente.
*   **Catastrophe** : Inondation (Océan déborde) ou Éboulement (Montagne).

## 7. Progression
### Tableau des Upgrades
Voir `achat_upgrade_case_zoo.md`.

## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function initZooMap():
  width = 6
  height = 5
  for x in 0..width:
    for y in 0..height:
      biome = getBiomeByColumn(x, width)
      createCase(x, y, biome)
```

### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `MAP_EXPAND` | Succès | "Le zoo s'agrandit ! Nouvelles terres disponibles." |

# Annexes UX/UI

## 0. Direction Artistique & Vue
*   **Vue** : Isométrique (2.5D).
*   **Grille** : Les déplacements se font sur une grille losange.
*   **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest).
*   **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut").
*   **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`.
    *   Coloré, vivant, détails foisonnants.
    *   Aspect "dessiné à la main" ou "cartoon soigné".
    *   Couleurs vives et contours nets.

## 1. Expérience Utilisateur (UX)
### Interaction Grille (Action)
**Description UX** : Le joueur clique sur une case pour voir son contenu ou construire.
**Description UI** : Surbrillance de la case au survol. Clic ouvre un **Panneau Latéral (Bottom Sheet)** non bloquant (Info/Construire).
**Emplacement** : Grille.
**Intégration** : Curseur.
**Navigation** : Clic -> Menu.
**Événements** : `CLICK_CASE`.

#### Assets
- **Musiques** : Son "Pop" discret.
- **Sons** : `click_tile.mp3`.
- **Graphiques** : Cadre de sélection blanc/brillant.
- **Vidéos** : Effet de "Pop" au clic.
- **Animations** : Pulsation du cadre.
- **Couleurs** : Blanc.
- **Textes** : Nom de l'objet sélectionné.
- **Formes** : Carré.

### Mode Construction (Action)
**Description UX** : Le joueur place un bâtiment ou modifie le terrain.
**Description UI** : Grille visible. Cases valides en vert, invalides en rouge.
**Mode Peinture** : Le joueur peut glisser son doigt (Drag) pour construire/modifier plusieurs cases d'affilée (ex: peindre un biome ou poser une route).
**Alternative Accessibilité** : Tap to Select (Bâtiment) -> Tap to Place (Case) pour éviter le Drag & Drop.
**Emplacement** : Grille.
**Intégration** : Overlay.
**Navigation** : Drag -> Drop.
**Événements** : `ENTER_BUILD_MODE`.

#### Assets
- **Musiques** : Musique "Mode Édition" (calme, boucle).
- **Sons** : `grid_snap.mp3`.
- **Graphiques** : Grille semi-transparente.
- **Vidéos** : Effet de grille holographique.
- **Animations** : Snap to grid.
- **Couleurs** : Vert/Rouge (Alpha 0.5).
- **Textes** : "Placer ici".
- **Formes** : Carrés.
