# Spécifications : Accueil des Animaux

## Définition
Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou transferts). C'est le point d'entrée unique pour tout animal avant son placement en enclos.

## Fonctionnalités
- **Acclimatation** : Période obligatoire avant de pouvoir placer l'animal sur la grille active.
- **Stockage temporaire** : Évite de devoir placer immédiatement un animal acheté si le terrain n'est pas prêt.
- **Inspection** : Permet au joueur de voir les stats de l'animal avant placement.

## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
- **Effet** : Réduit le temps d'acclimatation. Améliore le potentiel reproducteur de l'animal entrant.
- **Ratio** : 1 unité couvre 1 animal en cours d'accueil.

# Annexes Techniques

## 1. Données et États
### Modèle de Données (JSON)
```json
{
  "id": "uuid",
  "type": "building_reception",
  "created_at": "timestamp",
  "updated_at": "timestamp",
  "level": "integer (1-7)",
  "position": { "x": "integer", "y": "integer" },
  "slots": [
    {
      "slot_id": "integer (0-index)",
      "animal_id": "uuid (nullable)",
      "status": "enum (EMPTY, OCCUPIED, READY)",
      "arrival_time": "timestamp",
      "acclimatization_end_time": "timestamp",
      "bonus_applied": "boolean"
    }
  ],
  "iso_x": "integer",
  "iso_y": "integer",
  "z_index": "integer"
}
```

### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) | Valeur Max (Niv 7) |
| :--- | :--- | :--- |
| Temps Acclimatation | 600 secondes (10 min) | 0 secondes (Instantané) |
| Capacité | 1 animal | 7 animaux |

### Scores Initiaux
| Score | Valeur Initiale | Plage (Min-Max) | Impact |
| :--- | :--- | :--- | :--- |
| Confort Quarantaine | 60 | 0-100 | Modifie le stress initial de l’animal lors du placement (\(-\)stress = +confort). |
| Risque Contamination | 2% | 0-25% | Probabilité d’incident sanitaire (quarantaine prolongée, coût supplémentaire) par animal accueilli. |
| Traçabilité | 80 | 0-100 | Qualité des infos affichées au joueur (traits révélés, historique). |

## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Présent au démarrage du jeu (Tutorial ou Nouvelle Partie). Position fixe généralement près de l'entrée.

### Conditions de Disparition
Indestructible. Ne peut pas être vendu ni déplacé (sauf si feature de réaménagement global).

### Hérédité
| Parent | Trait Transmis | Probabilité | Mutation Possible |
|---|---|---|---|
| Accueil Niv 4+ | Trait temporaire “Calme” (+5 Satisfaction Visiteurs à proximité après placement) | 100% | Non (effet temporaire, non génétique) |
| Accueil Niv 7 | Trait temporaire “Confiant” (stress \(-15\) au placement) | 100% | Non |

## 3. Impacts Environnementaux
### Impact Température
Zone neutre (T° idéale simulée). Les animaux ne subissent pas de dégâts de température ici.

### Impact Milieu (Biome)
Zone neutre. Compatible avec tous les biomes d'animaux.

### Impact Saisons
Protégé des intempéries.

### Impact Heure / Jour-Nuit
Fonctionne 24/7. Pas de pénalité la nuit.

## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Bonus Repro** : Un animal passant par un accueil de haut niveau gagne un bonus temporaire de fertilité.
- Niv 1-3 : +0%
- Niv 4-6 : +10% fertilité (durée 2 jours in-game)
- Niv 7 : +25% fertilité (durée 5 jours in-game)

### Impact Mort
Pas de mort possible en zone d'accueil (Stase). Les jauges de faim/soif/santé sont gelées.

### Impact Nourriture
Nourri automatiquement (coût nul ou inclus dans les frais de gestion globaux).

### Impact Attractivité (Visiteurs/Animaux)
| Action/État | Gain Attractivité | Rayon d'action |
|---|---:|---:|
| Façade entretenue (Propreté > 80) | +5 | 6 cases |
| File d’attente visible (Capacité saturée) | -10 | 8 cases |
| Livraison spectaculaire (animal rare) | +20 | 10 cases |

### Impact Valeur
| Facteur | Variation Prix | Condition |
|---|---:|---|
| Niveau Accueil | +5% / niveau | Appliqué à la valeur du zoo (bâtiment clé non revendable). |
| Historique sans incident | +10% | Si aucun événement `QUARANTINE_ALERT` sur 7 jours in-game. |

## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Réduction Temps Acclimatation** :
| Niveau | Temps Base | Réduction % |
| :--- | :--- | :--- |
| 1 | 10 min | 0% |
| 2 | 8 min | 20% |
| 3 | 6 min | 40% |
| 4 | 4 min | 60% |
| 5 | 2 min | 80% |
| 6 | 1 min | 90% |
| 7 | Instantané | 100% |

### Dépenses (Boutiques/Visiteurs)
| Poste | Coût Hebdo | Maintenance |
|---|---:|---:|
| Consommables quarantaine | 50 pièces | 10 pièces |
| Nettoyage & désinfection | 30 pièces | 5 pièces |
| Contrôle vétérinaire | 80 pièces | 0 pièce (service périodique) |

### Trajet Visiteurs
| Trajet | Condition | Effet | Détails |
|---|---|---|---|
| Visiteurs passent devant | Chemin adjacent | Attraction faible | Le bâtiment n’est pas une attraction nominale, mais une façade visible peut influer sur l’ambiance. |
| Visiteurs évitent la zone | `QUARANTINE_ALERT` actif | Déviation | Les visiteurs recalculent leur chemin pour éviter un rayon de 6 cases autour. |

## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
*   **Arrivée (`ANIMAL_ARRIVAL`)** : Animal livré par camion, entre dans un slot libre.
*   **Prêt (`ANIMAL_READY`)** : Le temps d'acclimatation est écoulé.
*   **Placement (`ANIMAL_PLACED`)** : Le joueur sort l'animal de l'accueil vers un enclos.

## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Capacité | Temps Acclimatation | Temps Construction |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 100 | 1 | 10 min | 0s |
| 2 | 200 | 2 | 8 min | 10s |
| 3 | 400 | 3 | 6 min | 30s |
| 4 | 800 | 4 | 4 min | 1m |
| 5 | 1600 | 5 | 2 min | 2m |
| 6 | 3200 | 6 | 1 min | 5m |
| 7 | 6400 | 7 | 0 min | 10m |

## 8. Logique et Interfaces
### Pseudo-code Impacts
```python
def update_reception(reception_center, current_time):
    # Vérification de l'intégrité
    if not reception_center or not reception_center.slots:
        return error("Invalid reception center")

    for slot in reception_center.slots:
        if slot.status == "OCCUPIED":
            # Vérifier si le temps est écoulé
            if current_time >= slot.acclimatization_end_time:
                slot.status = "READY"
                trigger_event("ANIMAL_READY", {"animal_id": slot.animal_id})
                
def add_animal_to_reception(reception_center, animal):
    # Trouver un slot vide
    empty_slot = find_first_empty_slot(reception_center.slots)
    
    if not empty_slot:
        return error("RECEPTION_FULL")
        
    # Calcul du temps selon le niveau
    duration = get_acclimatization_duration(reception_center.level)
    
    empty_slot.animal_id = animal.id
    empty_slot.arrival_time = now()
    empty_slot.acclimatization_end_time = now() + duration
    empty_slot.status = "OCCUPIED"
    
    return success()
```

### Messages d'Infos / Alerte
| ID | Niveau | Message | Condition |
| :--- | :--- | :--- | :--- |
| `ANIMAL_READY` | Info | "Un nouvel animal est prêt à rejoindre le zoo !" | `slot.status` passe à `READY` |
| `RECEPTION_FULL` | Warning | "Accueil saturé, impossible d'acheter." | Tentative d'achat sans slot libre |
| `PLACEMENT_ERROR` | Error | "Impossible de placer ici (Enclos plein / Biome incompatible)." | Drag & Drop invalide |

# 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)
### Arrivée Animal (Passif)
**Description UX** : Le camion décharge un animal. Il apparaît dans l'Accueil en mode "Attente".
**Description UI** : Notification "Livraison effectuée". L'icône de l'Accueil change (ex: porte fermée -> porte avec caisse devant).
**Notification Push** : "Votre [Animal] est arrivé à l'accueil !" envoyée si le joueur est hors ligne.
**Emplacement** : Case Accueil.
**Intégration** : Suite de l'action Camion.
**Navigation** : Clic sur Accueil → Bottom Sheet “Accueil” (liste slots) → action “Placer” ouvre le mode placement sur la carte du zoo.
**Événements** : `DELIVERY_COMPLETE`.

#### Assets
- **Musiques** : `ambience_stable_soft.mp3` (léger, discret, pas intrusif).
- **Sons** : `truck_door.mp3`, `crate_drop.mp3`.
- **Graphiques** : Sprite Caisse en bois.
- **Images** : `reception_building.png` (bâtiment), `reception_icon.png` (icône), `badge_quarantine.png` (badge).
- **Vidéos** : `delivery_short.webm` (2s, loop optionnel sur notif).
- **Animations** : Camion qui repart.
- **Couleurs** : Marron (Caisse).
- **Textes** : `RECEPTION_DELIVERY_DONE` = "Livraison effectuée", `RECEPTION_ANIMAL_ARRIVED` = "Votre {animalName} est arrivé à l'accueil !"
- **Formes** : Bulle (notif), badge rond (état).

### Consultation & Acclimatation (Consultation)
**Description UX** : Le joueur vérifie le temps restant avant de pouvoir placer l'animal.
**Description UI** : **Bottom Sheet** listant les animaux en transit. Barre de progression "Acclimatation" pour chacun.
**Emplacement** : Modal Accueil.
**Intégration** : Liste verticale.
**Navigation** : Clic Accueil -> Modal.
**Événements** : `OPEN_RECEPTION`.

#### Assets
- **Musiques** : `ui_modal_soft.mp3` (jingle court).
- **Sons** : `ui_open.mp3`
- **Graphiques** : Style "Quarantaine" ou "Étable propre".
- **Images** : Portrait animal.
- **Vidéos** : `progress_fill.webm` (0.8s loop) pour la barre d’acclimatation (optionnel).
- **Animations** : Barre de progression qui avance.
- **Couleurs** : Orange (En cours), Vert (Prêt).
- **Textes** : "Prêt dans X min".
- **Formes** : Barres arrondies.

### Transfert vers Zoo (Action)
**Description UX** : L'animal est prêt. Le joueur le glisse vers le zoo.
**Description UI** : Bouton "Placer" ou Drag & Drop depuis la liste.
**Alternative** : Tap to Select -> Tap to Place.
**Emplacement** : Modal Accueil -> Carte Zoo.
**Intégration** : Mode placement (comme Nurserie).
**Navigation** : Drag -> Drop.
**Événements** : `PLACE_ANIMAL`.

#### Assets
- **Musiques** : `ui_confirm_place.mp3` (jingle court de confirmation).
- **Sons** : `animal_happy.mp3` (cri de l'animal).
- **Graphiques** : Sprite Animal.
- **Images** : `placement_ghost_ok.png`, `placement_ghost_ko.png` (surbrillance vert/rouge).
- **Vidéos** : `placement_glow.webm` (1.2s, non loop).
- **Animations** : Animal qui saute de joie au placement.
- **Couleurs** : Vert (#2ECC71) placement valide, Rouge (#E74C3C) placement invalide, Ambre (#F39C12) état “en acclimatation”.
- **Textes** : `BTN_PLACE` = "Placer", `RECEPTION_READY` = "Prêt"
- **Formes** : Badge “!” (prêt), sablier (en cours).

### Vue Isométrique
- **Sprite Bâtiment** : 4 directions isométriques (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest) pour s'aligner avec les chemins.
- **Occlusion** : Le bâtiment doit être semi-transparent si le joueur passe la souris derrière (pour voir les objets cachés).
- **Indicateur d'état** : Une icône flottante (bulle) au-dessus du bâtiment indique si un animal est prêt (point d'exclamation vert) ou en cours (sablier).
- **Z-Index** : Doit être trié correctement par rapport aux visiteurs passant devant.
