# 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. ## Définition | Champ | Valeur | |---|---| | Concept | Bâtiment “Accueil des animaux” : point d’entré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 d’acclimatation 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 d’incohé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 d’accueil s’affiche lorsque : - le module est **actionné** (ouverture de l’accueil, inspection d’un slot, lancement du placement) ; - un **événement** lié à l’accueil 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 d’intempé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 |