# Spécifications : Zoo (Site)

## Définition
Représentation d'un zoo (joueur ou bot) sur la Carte du Monde.

## Affichage
- **Nom du zoo** : Sur une banderole d'accueil personnalisable (poteaux bois).
- **Avatar Joueur** : Visible en coin de l'écran.
- **Vue** : Isométrique (2.5D). Le zoo est présenté comme un diorama vivant. La banderole flotte au vent.
- **Skins** : Le zoo peut avoir des thèmes visuels (Skins de Zoo).
- **Icône** : 🏠
- **Slot d'offre** :
  - Pour les autres zoos : Affiche l'œuf/bébé/animal en vente (Type + Prix).
  - Pour le zoo du joueur : Masqué (pas d'offre visible pour soi-même).
- **Indicateurs (Bots)** : Pièces disponibles, Niveau de parcelle.

## Indicateurs de Performance (Cases dédiées sous le zoo)
1.  **Score d'Attractivité** : Influence la venue des visiteurs.
2.  **Score de Reproduction** : Influence la qualité des naissances.
3.  **Case de Vente** : Offre active visible par les autres joueurs.

## Interaction
- **Achat** : Glisser l'offre du zoo vers le camion du joueur.

# Annexes Techniques

## 1. Données et États
### Modèle de Données (JSON)
```json
{
  "id": "uuid",
  "type": "zoo",
  "owner_id": "uuid",
  "scores": {
    "attractiveness": "int",
    "reproduction": "int"
  },
  "current_offer": { "animal_id": "uuid", "price": "int" },
  "customization": {
    "banner_text": "Mon Zoo",
    "active_skin_id": "skin_default",
    "avatar_visible": true
  }
}
```

### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Attractivité | 0 |
| Reproduction | 0 |

### Scores Initiaux
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
|---|---:|---|---|
| Attractivité | 0 | 0-100000 | Détermine le flux de visiteurs (via billeterie + attractivité ville→zoo). |
| Reproduction | 0 | 0-10000 | Modifie la chance de naissances et la qualité des bébés. |
| Réputation | 0 | 0-10000 | Modifie le rayonnement sur carte monde (ville→zoo). |
| Survie | 100 | 0-100 | Influence maladies, mortalité, et valeur des animaux. |

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

### Conditions de Disparition
Suppression compte.

### Hérédité
**Bonus Héritage** : +5% Attractivité initiale si l'ancien zoo du joueur avait atteint > 1000 visiteurs (Réputation persistante).

## 3. Impacts Environnementaux
### Impact Température
| Condition | Effet |
| :--- | :--- |
| **Canicule (>30°C)** | -10% Visiteurs (sauf si Glaces en vente). |
| **Grand Froid (<0°C)** | -20% Visiteurs (sauf si Chocolat Chaud/Café en vente). |
| **Tempéré (15-25°C)** | Bonus +5% Satisfaction Visiteurs. |

### Impact Milieu (Biome)
| Biome | Effet Construction |
| :--- | :--- |
| **Plaine** | Coût standard. |
| **Désert** | Coût Eau x2 (Arrosage/Entretien). |
| **Montagne** | Coût Construction Bâtiments +50% (Fondations). |
| **Marais** | Risque Maladie +10%. |

### Impact Saisons
| Saison | Effet Global |
| :--- | :--- |
| **Printemps** | Naissances +10% (Saison des amours). |
| **Été** | Pic Visiteurs (+30%), Coût Eau +20%. |
| **Automne** | Déchets (Feuilles) +50% (Besoin nettoyage). |
| **Hiver** | Visiteurs -30%, Ventes Boutique Cadeaux +10% (Noël). |

### Impact Heure / Jour-Nuit
| Période | État |
| :--- | :--- |
| **Jour (08h-20h)** | Ouvert. Revenus actifs. |
| **Nuit (20h-08h)** | Fermé. Maintenance (Coûts réduits, pas de revenus). Animaux dorment (Santé récupère). |

## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
Score visible publiquement.

### Impact Mort
**Négligence** : Un animal mort non ramassé dans un enclos visible cause -50 Attractivité/heure et fait fuir les visiteurs à proximité.

### Impact Nourriture
**Pénurie** : Si Stock Nourriture = 0 pendant > 24h, Santé Animaux baisse -> Mort -> Baisse Attractivité massive (-100/mort).

### Impact Attractivité (Visiteurs/Animaux)
Score visible publiquement. Détermine le flux d'entrée (voir Billeterie) et le classement mondial.

### Impact Valeur
**Valorisation** : La valeur de revente du zoo (si faillite/reset) est estimée à 50% des investissements totaux (Bâtiments + Animaux).

## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
- **Vitesse Visiteurs** : 1 case / 2 sec (Chemin), 1 case / 4 sec (Herbe).
- **Vitesse Staff** : 1 case / 1 sec (Optimisé).

### Dépenses (Boutiques/Visiteurs)
**Maintenance** : 10 pièces / jour par bâtiment construit (Coûts fixes).

### Trajet Visiteurs
Destination possible. Algorithme de *Pathfinding* (A*) depuis l'entrée vers les Enclos et Boutiques.

## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
*   **Nouvelle Offre** : Mise en vente.
*   **Vente** : Offre achetée.
*   **Inspection** : Contrôle sanitaire aléatoire (Bonus/Malus selon propreté).
*   **Fête du Zoo** : Event annuel (Revenus x2 pendant 24h).

## 7. Progression
### Tableau des Upgrades
| Niveau | Nom | Effet | Coût |
| :--- | :--- | :--- | :--- |
| 1 | **Petit Parc** | Capacité 50 visiteurs. | 0 |
| 2 | **Zoo Local** | Capacité 100, Débloque Marketing Local. | 1000 |
| 3 | **Zoo Régional** | Capacité 250, Débloque Bus Touristique. | 5000 |
| 4 | **Zoo National** | Capacité 500, Débloque Hôtel (Séjour long). | 15000 |
| 5 | **Réserve** | Capacité 1000, Débloque Safari. | 50000 |
| 6 | **Monde Animal** | Capacité 2500, Débloque Aéroport. | 150000 |
| 7 | **Sanctuaire** | Capacité Illimitée, Prestige Max. | 500000 |

## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function updateZooState(zoo) {
  // Cycle Jour/Nuit
  if (isNight(zoo.time)) {
    closeGates(zoo);
    zoo.maintenanceCost += calculateUpkeep(zoo.buildings);
  } else {
    openGates(zoo);
    zoo.revenue += processTicketSales(zoo);
  }

  // Impact Météo
  if (zoo.weather == "HEATWAVE") {
    zoo.visitorFlow *= 0.9;
    zoo.shopSales["ice_cream"] *= 2.0;
  }
}
```

### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `ZOO_OPEN` | Info | "Le zoo ouvre ses portes ! Bonne journée." |
| `ZOO_CLOSE` | Info | "Fermeture du zoo. Les visiteurs sortent." |
| `MAINTENANCE_PAID` | Info | "Frais de maintenance journaliers payés : -{amount}." |
| `NO_FUNDS` | Alerte | "Fonds insuffisants pour la maintenance ! Risque de grève." |

# 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)
### Visualisation Offre (Passif)
**Description UX** : Voir ce que vend un autre joueur.
**Description UI** : Une "bulle" ou un "panneau" accroché sous l'icône du zoo. Affiche l'animal (sprite) et le prix.
**Emplacement** : Carte Monde.
**Intégration** : World Space UI.
**Navigation** : Clic sur Bulle -> Détails Offre.
**Événements** : `OFFER_UPDATE`.

#### Assets
- **Musiques** : `ambience_zoo_busy.mp3` (bruit de fond léger).
- **Sons** : `ui_hover.mp3`.
- **Graphiques** : Cadre Offre (Bois/Or).
- **Images** : Sprite Animal.
- **Vidéos** : Animal qui bouge (GIF/WebM).
- **Animations** : Prix qui clignote si bas.
- **Couleurs** : Or (Prix), Vert (Rareté).
- **Textes** : "500".
- **Formes** : Bulle BD.

### Interaction Achat (Action)
**Description UX** : Acheter l'animal.
**Description UI** : Drag de l'offre vers le camion (en bas de l'écran ou sur la carte).
**Alternative** : Tap Offre -> Tap Camion.
**Emplacement** : Carte Monde.
**Intégration** : Drag & Drop.
**Navigation** : Drag -> Drop.
**Événements** : `DRAG_OFFER`.

#### Assets
- **Musiques** : Jingle `purchase_success.mp3`.
- **Sons** : `pickup.mp3`, `coin_register.mp3`.
- **Graphiques** : Fantôme offre sous curseur.
- **Images** : Icône Pièce animée.
- **Vidéos** : Effet de transaction (flux de données).
- **Animations** : Traînée d'étincelles lors du drag.
- **Couleurs** : Jaune brillant.
- **Textes** : "-500".
- **Formes** : Curseur Main fermée.
