This commit is contained in:
2026-03-05 04:01:29 +01:00
parent dfecb09b7c
commit 6c8a710432
32 changed files with 8203 additions and 3 deletions

View File

@@ -229,3 +229,514 @@ function updateNurserie(nurserie):
- **Couleurs** : Vert #00FF00 (OK), Rouge #FF0000 (KO).
- **Textes** : Tooltip "Placer ici".
- **Formes** : Carré de sélection.
## Définition
| Champ | Valeur |
|---|---|
| Concept | Bâtiment “nurserie” : incubation des œufs, croissance sécurisée des bébés, et tampon avant placement sur la grille. |
| Rôle | Réduire la mortalité infantile via régulation température/soins, gérer les slots, et fournir un parcours UI simple (clic nurserie → slots). |
| Portée | Une instance de bâtiment sur la grille isométrique, avec `level` et `slots[]`. |
| Contrainte | Pas de cache/mémorisation : timers et progressions recalculés à la volée (lazy update) ; pas de fallback silencieux (slot invalide => erreur + message). |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Ouvrir nurserie | clic bâtiment | `nurserie_id` | UI slots | affiche slots + timers | Event `OPEN_NURSERIE` |
| Affecter œuf à slot | achat/repro | `egg_id` | slot rempli | auto si slot vide ; sinon erreur | Event `EGG_ADDED` / `NURSERIE_FULL` |
| Éclosion | fin timer + clic | `egg_id` | `baby_id` | reveal au clic ; slot passe bébé | Event `EGG_HATCHED` |
| Croissance | tick lazy | temps, level | `growth_progress` ↑ | multiplicateur par level ; clamp | Event `BABY_GROWTH_UPDATED` |
| Réguler température | calcul impact | env temp | dégâts temp ↓ | tolérance selon level | Event `NURSERIE_TEMP_REGULATED` |
| Nourrir auto | tick | stock nourriture | faim ↓ | si stock > 0, conso | Event `BABY_AUTO_FED` |
| Sortir bébé | drag/tap place | `baby_id`, case | bébé placé | validation case ; transfert iso coords | Event `PLACE_BABY` |
| Upgrade nurserie | action joueur | coins, niveau | level ↑ | max 7 ; effets cumulés | Event `NURSERIE_UPGRADED` |
| Urgence soins | action | `baby_id` | santé ↑ | dispo level ≥ 4 | Event `NURSERIE_EMERGENCY_CARE` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Bâtiment couveuse/vitrine, fumée douce, lumières chaudes |
| Couleur dominante | Pastel (jaune paille, bleu clair) |
| Variantes | `nursery_lvl_{1..7}_dir_{N,E,S,W}.png` |
| États | `idle`, `egg_ready` (brille), `baby_ready` (jauge 100), `full` (badge) |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Ouvrir slots | Consultation | - | clic nurserie | bottom sheet slots | - |
| Placer œuf | Action | slot vide | achat/repro → auto place | slot occupé | `NURSERIE_FULL` |
| Cliquer œuf éclos | Action | timer fini | clic slot | popup bébé | - |
| Sortir bébé | Action | bébé en slot | drag vers grille + confirm | bébé placé | `PLACEMENT_INVALID`, `BABY_TOO_FRAGILE` |
| Upgrade | Action | coins ok | clic “Améliorer” | level ↑ | `NOT_ENOUGH_COINS` |
| Soins durgence | Action | level ≥ 4 | bouton “Urgence” | santé ↑ | `LEVEL_TOO_LOW` |
## Personnage contextuel (événements & interaction)
Voir `nurse.md`.
### Affichage
La nurse saffiche lorsque :
- la nurserie est **actionnée** (ouverture, clic slot, éclosion, placement, urgence) ;
- un **événement** de nurserie survient (slot prêt, nurserie pleine, bébé critique).
### Déclencheurs (événements)
| Event | Condition | Effet UI personnage |
|---|---|---|
| `OPEN_NURSERIE` | clic bâtiment | portrait + état slots + CTA |
| `EGG_ADDED` | œuf affecté | bulle “Œuf placé” + deep-link slot |
| `EGG_HATCHED` | clic éclosion | bulle “Bébé né” + CTA “Voir bébé” |
| `NURSERIE_FULL` | slots pleins | bulle “Nurserie pleine” + CTA “Voir slots” |
| `BABY_CRITICAL` | bébé en danger | bulle “Urgence” + CTA “Voir bébé” |
### Skins & thèmes
Uniforme et accessoires de la nurse suivent `theme.md` et `inventaire_skins.md`.
## 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 | `nurserie` | DB | constant |
| `level` | int | 1 | DB | 1..7 |
| `slots[].slot_id` | int | 1 | DB | 1..level |
| `slots[].content_type` | string \| null | `egg` | DB | `egg`/`baby`/null |
| `slots[].content_id` | uuid_v4 \| null | `uuid_v4` | DB | egg_id/baby_id |
| `slots[].timer_end` | timestamp \| null | - | DB | UTC |
| `slots[].growth_progress` | float \| null | 42.0 | DB | 0..100 si bébé |
| `iso_x` | int | 120 | DB | grille |
| `iso_y` | int | 88 | DB | grille |
| `z_index` | int | 12088 | calcul | profondeur iso |
| `modules.has_vitrine` | boolean | false | DB | unlock level ≥ 3 |
| `modules.has_emergency_care` | boolean | false | DB | unlock level ≥ 4 |
| `timestamps.created_at` | timestamp | - | DB | UTC |
#### Caractéristiques Initiales (tableau détaillé)
| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Slots | 1 | count | level 1 |
| Vitesse éclosion | 1.0 | coef | base |
| Vitesse croissance | 1.0 | coef | base |
| Tolérance T° | 2 | °C | ± |
| Auto-nourrissage | actif | bool | si stock > 0 |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Taux survie (si conditions) | 100% | 0..100% | objectif gestion |
| Jumeaux | 1% | 0..5% | événement rare |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Construction | joueur | coins | nurserie | position iso fixe |
| Utilisation | achat/repro | œufs | slots | capacité limitée |
| Éclosion | timer fini + clic | egg_id | baby_id | reveal explicite |
| Croissance | temps | baby_id | progress | clamp |
| Sortie | placement | baby_id | sur grille | slot libéré |
#### Conditions d'Apparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Construction | true | est | nurserie créée |
| Début partie | true | est | nurserie initiale (si scénario) |
#### Conditions de Disparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Destruction | true | est | supprimée si vide |
#### Hérédité (tableau détaillé)
| Élément | Hérité | Règle |
|---|---|---|
| Niveau nurserie | Oui | persiste |
| Bonus génétique | Oui | chance rareté (level ≥ 5) |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Condition | Effet nurserie | Notes |
|---|---|---|
| \(|\Delta T|\le 2\) (lvl1) | pas de dégâts | tolérance |
| \(|\Delta T|\le 10\) (lvl7) | pas de dégâts | climatisation |
| hors tolérance | dégâts réduits | protège mais pas invincible |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet | Notes |
|---|---|---|
| Compatible avec œuf | croissance +10% | règle existante |
| Incompatible | aucun bonus | pas de malus direct |
#### Impact Saisons (tableau détaillé)
| Saison | Effet | Notes |
|---|---|---|
| Hiver/Été | atténue extrêmes | via régulation |
| Printemps | vitesse +10% | règle existante |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet | Notes |
|---|---|---|
| Nuit | veilleuse | pas de malus obscurité |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet sur taux | Condition |
|---|---|---|
| Incubateur | vitesse +10% | parents présents (règle existante) |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| Bébé en nurserie | mortalité ↓ | santé stable sauf faim extrême |
| Urgence | soins | level ≥ 4 |
#### Impact Nourriture (tableau détaillé)
| Ressource | Effet | Condition |
|---|---|---|
| Stock global > 0 | nourrir auto | conso réduite 50% vs adulte |
| Stock = 0 | faim ↑ | alertes |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| Action/État | Gain | Rayon | Notes |
|---|---:|---:|---|
| Vitrine active | + | 1 case | attroupement devant vitre |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action/État | Effet animaux | Condition |
|---|---|---|
| - | - | - |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Certificat bonne santé | +10% | bébé né + bien traité |
### 5. Impacts Logistiques et Économiques
#### Vitesse (Camion) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Level 1..7 | x{1.0,1.2,1.5,2.0,3.0,5.0,10.0} | progression existante |
#### Vitesse (Accueil) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Recherche) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Bonus rareté | +5% | level ≥ 5 |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Vitrine | attroupement | module vitrine |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Électricité | 5 | coins / h | règle existante |
#### Dépenses (Visiteurs) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Employés) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Soins urgence | 10 | coins | level ≥ 4 |
#### 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 |
|---|---:|---|---|
| Upgrade | variable | coins | level up |
#### Dépenses (Nourriture) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Conso bébé | 0.5 | ration | vs adulte |
#### Dépenses (Acceuil des animaux) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Contrôle santé | 0 | - | inclus (spécif) |
#### 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 |
|---|---|---|---|
| - | - | - | - |
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Allées | Vitrine nurserie | curiosité | attroupement |
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Vitrine | Boutique | souvenir | détour |
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Entrée | Nurserie | signal UI | route directe |
### 6. Événements
#### Événements du Jeu (tableau détaillé)
| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `OPEN_NURSERIE` | clic | `nurserie_id` | UI |
| `EGG_ADDED` | auto | `egg_id` | slot rempli |
| `EGG_HATCHED` | clic | `egg_id`, `baby_id` | spawn bébé |
| `NURSERIE_FULL` | erreur | `nurserie_id` | message |
| `NURSERIE_UPGRADED` | action | `level` | effets |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `NURSERY_MARKER_SHOW` | map open | marker |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `HATCH_CLICK` | clic | animation |
| `PLACE_BABY` | placement | transfert |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_GATHERS_AT_NURSERY` | vitrine | attroupement |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_STOPS_AT_WINDOW` | proximité | temps visite + |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `PLAYER_UPGRADES_NURSERY` | clic | level ↑ |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 100 | 1 slot, tolérance ±2°C | base |
| 2 | 200 | 2 slots, vitesse x1.2 | - |
| 3 | 400 | 3 slots, vitrine | visiteurs |
| 4 | 800 | 4 slots, urgence soins | soins |
| 5 | 1600 | 5 slots, rareté +5% | génétique |
| 6 | 3200 | 6 slots, vitesse x5 | - |
| 7 | 6400 | 7 slots, tolérance ±10°C | clim |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `assignEggToSlot` | egg, slots | slot_id | pas de slot => erreur |
| `hatchEgg` | egg | baby | reveal au clic |
| `computeNurseryMultiplier` | level | float | table |
| `applyTempRegulation` | envTemp, level | delta | tolérance |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `EGG_HATCHED` | Info | "Un œuf a éclos en nurserie." | éclosion |
| `NURSERIE_FULL` | Warning | "Nurserie pleine." | slots pleins |
| `TWINS` | Info | "Des jumeaux sont nés." | chance 1% |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Gérer slots | suivre œufs/bébés | navigation | clic direct bâtiment |
| Éclosion | révéler bébé | attente | badge “prêt” + clic unique |
| Sortir bébé | placement | erreurs | overlay vert/rouge |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| Bottom sheet | grille slots | open/closed |
| Slot | icône + barre | egg/baby/empty |
| Popup récompense | espèce/rareté | confirm |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| Carte zoo | sur case | clic |
| Modal | centre/bottom | slots |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| `bebe_animal.md` | croissance | jauge |
| `inventaire_bebe_animaux.md` | deep-link | navigation |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir | clic nurserie | slots |
| Aller slot | clic notif | focus slot |
| Placer | drag → drop | bébé sur grille |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_NURSERIE` | clic | modal |
| `HATCH_CLICK` | clic slot | reveal |
| `DRAG_START` | drag | placement mode |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `nursery_lullaby_loop.mp3` | nurserie | loop | doux |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `ui_open.mp3` | ouvrir | bas |
| `crack_egg.mp3` | éclosion | moyen |
| `baby_cry.mp3` | reveal | bas |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `nursery_slot_frame.png` | slot | scalable |
| `placement_grid_overlay.png` | placement | contraste |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `egg_rarity_badge.png` | rareté |
| `baby_card_bg.png` | popup |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `nursery_clouds_bg.webm` | fond | loop |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| tremblement œuf | proche éclosion | 0.8s loop |
| glow slot | prêt | 0.6s |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `nursery_pastel_yellow` | #F7E7A6 | fond |
| `nursery_ok_green` | #00FF00 | placement |
| `nursery_ko_red` | #FF0000 | placement |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `nursery.title` | Nurserie | Nursery |
| `nursery.slot` | Slot | Slot |
| `nursery.full` | Nurserie pleine. | Nursery full. |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Slot | rectangle arrondi | lisible |
| Badge prêt | rond | contraste |