Files
builazoo/docs/specs/accueil_animaux.md
2026-03-05 04:01:29 +01:00

776 lines
28 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 lanimal lors du placement (\(-\)stress = +confort). |
| Risque Contamination | 2% | 0-25% | Probabilité dincident 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 dattente 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 nest pas une attraction nominale, mais une façade visible peut influer sur lambiance. |
| 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 dacclimatation (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.
## Définition
| Champ | Valeur |
|---|---|
| Concept | Bâtiment “Accueil des animaux” : point dentrée unique des animaux livrés/achetés, avec slots, acclimatation/quarantaine, et passage vers placement sur la grille. |
| Rôle | Éviter le placement immédiat, révéler/afficher des informations avant placement, appliquer des règles dacclimatation et incidents sanitaires observables. |
| Portée | Une instance de bâtiment sur la carte zoo (iso), gérant une liste de slots `EMPTY/OCCUPIED/READY`. |
| Contrainte | Timers et statuts recalculés à la volée (lazy update), sans cache/mémorisation ; aucun fallback silencieux en cas dincohérence (log + erreur + message). |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Ouvrir accueil | clic bâtiment | `reception_id` | bottom sheet slots | liste slots + progression | Event `OPEN_RECEPTION` |
| Réceptionner un animal | livraison camion/achat | `animal_id`, `arrival_time` | slot OCCUPIED | 1 slot libre requis, sinon `RECEPTION_FULL` | Event `ANIMAL_ARRIVAL` |
| Calculer fin acclimatation | arrivée/upgrade | level, baseDuration | `acclimatization_end_time` | formule par niveau ; clamp ≥ now | Event `ACCLIMATIZATION_SCHEDULED` |
| Passer READY | tick lazy | now, end_time | status READY | idempotent ; pas de skip | Event `ANIMAL_READY` |
| Inspection pré-placement | ouverture slot | `animal_id` | UI stats | révèle traits selon “Traçabilité” | Event `RECEPTION_INSPECTED` |
| Placement vers zoo | action joueur | `animal_id`, coord/enclos | animal placé | valide biome/enclos/case, sinon `PLACEMENT_ERROR` | Event `ANIMAL_PLACED` |
| Appliquer bonus temporaire | sortie accueil | level | modifs temporaires | fertilité + calm/confident selon niveau | Event `RECEPTION_BONUS_APPLIED` |
| Déclencher incident quarantaine | tick (par animal) | `risk_contamination` | quarantaine prolongée/coût | probabilité explicite ; jamais silencieux | Event `QUARANTINE_ALERT` |
| Gestion saturation | slot plein | - | signal UI | badge + réduction attractivité façade | Event `RECEPTION_SATURATED` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Porte/étable + caisse, badge quarantaine |
| Couleur dominante | Ambre/bois (caisse), vert (prêt) |
| Variantes | `reception_building_dir_{N,E,S,W}.png`, `reception_icon.png` |
| États | `idle`, `occupied`, `ready`, `quarantine_alert`, `full` |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Ouvrir slots | Consultation | - | clic accueil | bottom sheet | - |
| Inspecter animal | Consultation | slot OCCUPIED/READY | clic slot | panneau détail | `ANIMAL_NOT_FOUND` |
| Placer animal | Action | slot READY | bouton “Placer” → mode placement | placement | `PLACEMENT_ERROR` |
| Détails incident | Consultation | `QUARANTINE_ALERT` actif | clic badge | panneau cause/coût | - |
| Quitter | Navigation | sheet ouvert | fermer | retour carte | - |
## Personnage contextuel (événements & interaction)
Voir `personnel_accueil.md`.
### Affichage
Le personnel daccueil saffiche lorsque :
- le module est **actionné** (ouverture de laccueil, inspection dun slot, lancement du placement) ;
- un **événement** lié à laccueil survient (arrivée, prêt, saturation, quarantaine).
### Déclencheurs (événements)
| Event | Condition | Effet UI personnage |
|---|---|---|
| `OPEN_RECEPTION` | clic bâtiment | portrait + état slots, CTA vers slot/placement |
| `ANIMAL_ARRIVAL` | slot affecté | bulle “Arrivée enregistrée” + deep-link inspection |
| `ANIMAL_READY` | slot passe READY | bulle “Prêt à placer” + CTA “Placer” |
| `RECEPTION_FULL` | pas de slot libre | bulle “Accueil saturé” + CTA “Voir slots” |
| `QUARANTINE_ALERT` | incident actif | bulle “Alerte quarantaine” + CTA “Voir détails” |
### Skins & thèmes
Le rendu du personnage suit `theme.md` et les skins éventuels via `inventaire_skins.md` (uniforme, badge, clipboard).
## Annexes Techniques
### 1. Données et États (tableau détaillé)
| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `id` | uuid_v4 | `uuid_v4` | DB | - |
| `type` | string | `building_reception` | DB | constant |
| `level` | int | 1 | DB | 1..7 |
| `position.x` | int | 10 | DB | grid |
| `position.y` | int | 12 | DB | grid |
| `iso_x` | int | 120 | DB/calcul | rendu iso |
| `iso_y` | int | 88 | DB/calcul | rendu iso |
| `z_index` | int | 12088 | calcul | profondeur |
| `slots[].slot_id` | int | 0 | DB | 0..capacity-1 |
| `slots[].animal_id` | uuid_v4 \| null | `uuid_v4` | DB | null si vide |
| `slots[].status` | enum | `OCCUPIED` | DB | `EMPTY/OCCUPIED/READY` |
| `slots[].arrival_time` | timestamp \| null | - | DB | UTC |
| `slots[].acclimatization_end_time` | timestamp \| null | - | DB | UTC |
| `slots[].bonus_applied` | boolean | false | DB | idempotent |
| `scores.comfort_quarantine` | int | 60 | calcul/config | 0..100 |
| `scores.risk_contamination` | float | 0.02 | config | 0..0.25 |
| `scores.traceability` | int | 80 | config | 0..100 |
#### Caractéristiques Initiales (tableau détaillé)
| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Capacité | 1 | slots | level 1 |
| Temps acclimatation | 600 | s | base |
| Zone température | neutre | - | stase |
| Nourrissage | auto | bool | coût inclus |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Confort quarantaine | 60 | 0..100 | stress initial \(\downarrow\) |
| Risque contamination | 2% | 0..25% | incident sanitaire |
| Traçabilité | 80 | 0..100 | traits révélés |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Apparition | début jeu | - | bâtiment présent | indestructible |
| Entrée animal | livraison | animal_id | slot OCCUPIED | capacité |
| READY | fin timer | now | status READY | idempotent |
| Sortie | placement | coord | animal placé | slot libéré |
| Incident | tirage risque | risk | prolongation/coût | observable |
#### Conditions d'Apparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Nouvelle partie | true | est | accueil présent |
#### Conditions de Disparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| - | - | - | indestructible |
#### Hérédité (tableau détaillé)
| Élément | Hérité | Règle |
|---|---|---|
| Bonus temporaires | Non | expirent |
| Niveau accueil | Oui | persiste |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Condition | Effet accueil | Notes |
|---|---|---|
| - | neutre | pas de dégâts température |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet accueil | Notes |
|---|---|---|
| - | neutre | compatible tous |
#### Impact Saisons (tableau détaillé)
| Saison | Effet accueil | Notes |
|---|---|---|
| - | protégé | pas dintempéries |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet accueil | Notes |
|---|---|---|
| Nuit | aucun | 24/7 |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet sur taux | Condition |
|---|---|---|
| Level 4..6 | +10% temporaire | 2 jours in-game |
| Level 7 | +25% temporaire | 5 jours in-game |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| Stase | pas de mort | jauges gelées |
#### Impact Nourriture (tableau détaillé)
| Ressource | Effet | Condition |
|---|---|---|
| Stock global | nourri auto | coût inclus |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| Action/État | Gain | Rayon | Notes |
|---|---:|---:|---|
| Façade propre > 80 | +5 | 6 cases | ambiance |
| File visible (saturation) | -10 | 8 cases | frustration |
| Livraison animal rare | +20 | 10 cases | spectacle |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action/État | Effet animaux | Condition |
|---|---|---|
| Quarantaine visible | stress voisin + | proximité |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Niveau accueil | +5% / niveau | valeur zoo |
| Sans incident 7 jours | +10% | aucun `QUARANTINE_ALERT` |
### 5. Impacts Logistiques et Économiques
#### Vitesse (Camion) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Livraison | pousse slot OCCUPIED | camion arrive |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Accueil) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Temps acclimatation | table par level | 1..7 |
#### Vitesse (Recherche) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Traçabilité | + | score |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Saturation | détour visiteurs | `QUARANTINE_ALERT` |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Consommables quarantaine | 50 | coins / semaine | utilisation |
| Nettoyage/désinfection | 30 | coins / semaine | maintenance |
| Contrôle vétérinaire | 80 | coins / semaine | périodique |
#### Dépenses (Visiteurs) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Employés) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Intervention quarantaine | 10 | coins | incident |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Section dupliquée | 0 | - | conservée |
#### Dépenses (Nurseries) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Nourriture) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Nourrissage auto | 0 | - | inclus |
#### Dépenses (Acceuil des animaux) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Maintenance accueil | 10 | coins / semaine | base |
#### Dépenses (Camion) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Trajet Visiteurs
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Ville | Zoo | réputation | fréquentation \(\downarrow\) si incidents |
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Allées | Accueil | curiosité façade | détour faible |
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Accueil | Boutique | stress/peur | détour fuite |
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Accueil | Sortie | quarantaine visible | sortie anticipée |
### 6. Événements
#### Événements du Jeu (tableau détaillé)
| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `ANIMAL_ARRIVAL` | camion | animal_id | slot OCCUPIED |
| `ANIMAL_READY` | timer | animal_id | status READY |
| `ANIMAL_PLACED` | placement | animal_id, coord | sortie slot |
| `RECEPTION_FULL` | livraison | - | message |
| `QUARANTINE_ALERT` | tirage | animal_id | avoidance visiteurs |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| - | - | - |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `OPEN_RECEPTION` | clic | bottom sheet |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_AVOIDS_QUARANTINE` | `QUARANTINE_ALERT` | reroute |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_SEES_QUEUE` | saturation | satisfaction - |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `PLAYER_PLACES_ANIMAL_FROM_RECEPTION` | CTA | placement |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 100 | 1 slot, 10 min | base |
| 4 | 800 | fertilité +10% (2j) | bonus calme |
| 7 | 6400 | instant, fertilité +25% (5j) | bonus confiant |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `getAcclimatizationDuration` | level | seconds | table |
| `updateReceptionSlots` | reception, now | reception | READY idempotent |
| `tryStartQuarantineIncident` | slot, risk | incident? | observable |
| `applyReceptionBonus` | animal, level | animal | temporaire |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `ANIMAL_READY` | Info | "Un animal est prêt à rejoindre le zoo." | slot READY |
| `RECEPTION_FULL` | Warning | "Accueil saturé." | pas de slot libre |
| `PLACEMENT_ERROR` | Error | "Impossible de placer ici." | placement invalide |
| `QUARANTINE_ALERT` | Warning | "Alerte quarantaine." | incident |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Voir arrivées | savoir quoi faire | dispersion | notif → deep-link accueil |
| Inspecter | vérifier stats | menus | clic slot direct |
| Placer | intégrer au zoo | erreurs | overlay OK/KO + CTA |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| Bottom sheet accueil | liste slots | open/closed |
| Slot | portrait + barre | empty/occupied/ready |
| Badge état | sablier/! | visible au-dessus bâtiment |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| Carte zoo | bâtiment | sélection base sprite |
| HUD | notifications | deep-link |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| `camion.md` | livraison | pousse vers accueil |
| `enclos.md` | placement | validation |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir accueil | clic bâtiment | slots |
| Aller depuis notif | clic notif | focus slot |
| Placer | CTA | mode placement |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_RECEPTION` | clic | sheet |
| `CLICK_PLACE_FROM_RECEPTION` | CTA | placement |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `ambience_stable_soft.mp3` | accueil | loop | discret |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `crate_drop.mp3` | arrivée | moyen |
| `ui_open.mp3` | ouvrir | bas |
| `ui_confirm_place.mp3` | placer | bas |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `badge_quarantine.png` | état | contraste |
| `reception_icon_ready.png` | prêt | lisible |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `reception_building.png` | bâtiment |
| `placement_ghost_ok.png` | overlay |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `delivery_short.webm` | notif | 2.0s |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| badge sablier | OCCUPIED | loop |
| badge ! vert | READY | loop |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `reception_amber` | #F39C12 | en cours |
| `reception_green` | #2ECC71 | prêt |
| `reception_red` | #E74C3C | erreur |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `reception.delivery_done` | Livraison effectuée | Delivery complete |
| `reception.ready` | Prêt | Ready |
| `reception.full` | Accueil saturé | Reception full |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Slot | rectangle arrondi | lisible |
| Badge état | rond | visible |