ok
This commit is contained in:
@@ -266,3 +266,510 @@ def add_animal_to_reception(reception_center, animal):
|
|||||||
- **Occlusion** : Le bâtiment doit être semi-transparent si le joueur passe la souris derrière (pour voir les objets cachés).
|
- **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).
|
- **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.
|
- **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 |
|
||||||
|
|||||||
@@ -80,6 +80,16 @@ def update_security_agent(agent, world):
|
|||||||
* **Feedback :** Les visiteurs s'écartent sur son passage.
|
* **Feedback :** Les visiteurs s'écartent sur son passage.
|
||||||
* **Vue Isométrique :** Sprite 8 directions pour des déplacements fluides.
|
* **Vue Isométrique :** Sprite 8 directions pour des déplacements fluides.
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
L’agent de sécurité sert de personnage contextuel lors des incidents d’ordre/sécurité.
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `VANDALISM_ALERT` / `VANDALISM_DETECTED` | menace détectée | bulle “Incident” + CTA “Envoyer sécurité” |
|
||||||
|
| `ESCAPE_ALERT` / `ESCAPE_DETECTED` | évasion détectée | bulle “Évasion” + CTA focus zone |
|
||||||
|
| `ZONE_BLOCKED` | zone bloquée | message explicite + explication détour |
|
||||||
|
|
||||||
|
|
||||||
# Annexes UX/UI
|
# Annexes UX/UI
|
||||||
|
|
||||||
|
|||||||
@@ -250,18 +250,36 @@ function updateBaby(baby, context):
|
|||||||
| Sortie prématurée | Action | bébé en nurserie | drag vers case → confirm | bébé sur grille | `PLACEMENT_INVALID`, `BABY_TOO_FRAGILE` |
|
| Sortie prématurée | Action | bébé en nurserie | drag vers case → confirm | bébé sur grille | `PLACEMENT_INVALID`, `BABY_TOO_FRAGILE` |
|
||||||
| Mettre en vente | Action | bébé stable | “Vendre” → choisir mode | listing créé | `BABY_CRITICAL` |
|
| Mettre en vente | Action | bébé stable | “Vendre” → choisir mode | listing créé | `BABY_CRITICAL` |
|
||||||
|
|
||||||
|
## Personnages contextuels (événements & interaction)
|
||||||
|
- **Nurse (nurserie)** : voir `nurse.md` (triage, urgences, éclosion).
|
||||||
|
- **Soigneur** : voir `soigneur.md` (soins santé, maladies, stabilisation globale).
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
La nurse est le personnage contextuel principal des actions “bébé” (éclosion, sortie prématurée, danger). Le soigneur est affiché lors des événements de santé (maladie, traitement, surcharge).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Personnage | Effet UI |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `BABY_CREATED` | naissance/éclosion | nurse | bulle “Bébé né” + CTA “Voir” |
|
||||||
|
| `BABY_CRITICAL` | danger critique | nurse | bulle “Urgence” + CTA “Soigner / Voir” |
|
||||||
|
| `ANIMAL_SICK` (bébé) | état maladie | soigneur | bulle “Maladie détectée” + CTA “Appeler soigneur” |
|
||||||
|
| `ANIMAL_HEALED` (bébé) | fin soin | soigneur | message fin intervention |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Rendu des personnages : `theme.md` + skins via `inventaire_skins.md` (si skins de staff).
|
||||||
|
|
||||||
## Annexes Techniques
|
## Annexes Techniques
|
||||||
|
|
||||||
### 1. Données et États (tableau détaillé)
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| `animal_id` | uuid_v4 | `...` | DB | identifiant stable |
|
| `animal_id` | uuid_v4 | `uuid_v4` | DB | identifiant stable |
|
||||||
| `species_id` | string | `PANDA` | DB | enum espèces |
|
| `species_id` | string | `PANDA` | DB | enum espèces |
|
||||||
| `is_baby` | boolean | true | DB | vrai jusqu’à transition adulte |
|
| `is_baby` | boolean | true | DB | vrai jusqu’à transition adulte |
|
||||||
| `growth_progress` | float | 42.5 | calcul/DB | clamp 0..100 |
|
| `growth_progress` | float | 42.5 | calcul/DB | clamp 0..100 |
|
||||||
| `growth_stage` | string | `juvenile` | calcul | dérivé de `growth_progress` |
|
| `growth_stage` | string | `juvenile` | calcul | dérivé de `growth_progress` |
|
||||||
| `nurserie_id` | uuid_v4 \| null | `...` | DB | null si sur grille |
|
| `nurserie_id` | uuid_v4 \| null | `uuid_v4` | DB | null si sur grille |
|
||||||
| `position.iso_x` | int \| null | 120 | DB | requis si sur grille |
|
| `position.iso_x` | int \| null | 120 | DB | requis si sur grille |
|
||||||
| `position.iso_y` | int \| null | 88 | DB | requis si sur grille |
|
| `position.iso_y` | int \| null | 88 | DB | requis si sur grille |
|
||||||
| `render.z_index` | int | 12088 | calcul | tri profondeur (iso) |
|
| `render.z_index` | int | 12088 | calcul | tri profondeur (iso) |
|
||||||
|
|||||||
@@ -121,3 +121,500 @@ def process_entry(zoo):
|
|||||||
### Vue Isométrique
|
### Vue Isométrique
|
||||||
- **File d'attente** : Afficher physiquement les sprites des visiteurs qui attendent devant le guichet.
|
- **File d'attente** : Afficher physiquement les sprites des visiteurs qui attendent devant le guichet.
|
||||||
- **Portiques** : Animation d'ouverture/fermeture des barrières.
|
- **Portiques** : Animation d'ouverture/fermeture des barrières.
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Voir `guichetiere.md`.
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
La guichetière s’affiche lorsque :
|
||||||
|
- la billetterie est **actionnée** (clic panneau, upgrade, consultation stats) ;
|
||||||
|
- un **événement** d’entrée survient (saturation, file longue, arrivée VIP).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `CLICK_BILLETERIE` | clic bâtiment | portrait + synthèse (prix, capacité, file) |
|
||||||
|
| `ZOO_FULL` | capacité atteinte | bulle “Zoo complet” + CTA “Améliorer billetterie” |
|
||||||
|
| `QUEUE_LONG` | file > seuil | bulle “File longue” + CTA “Voir billetterie” |
|
||||||
|
| `VIP_BUS` | arrivée VIP | bulle “Bus VIP” + CTA “Voir entrée” |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Uniforme et guichet suivent `theme.md` ; variantes éventuelles via `inventaire_skins.md`.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Bâtiment “billeterie” : point unique d’entrée/sortie des visiteurs et point de monétisation “tickets”. |
|
||||||
|
| Rôle | Transformer l’attractivité (ville → zoo) en entrées contrôlées (capacité/queue) et en revenus (prix ticket), avec signaux visibles (file, portiques, saturation). |
|
||||||
|
| Portée | Une instance fixe sur la carte zoo, connectée au réseau de chemins, agissant comme spawn/despawn visiteurs. |
|
||||||
|
| Contrainte | Aucun tracking externe/analytics ; flux et revenus calculés à la volée (lazy update), sans cache/mémorisation ; saturation doit produire message + event (pas silencieux). |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Ouvrir panneau billeterie | clic bâtiment | `ticket_booth_id` | UI stats | montre prix/capacité/queue/revenus jour | Event `CLICK_BILLETERIE` |
|
||||||
|
| Calculer demandes d’entrée | tick logique | attractivité, villes, saison | `potential_visitors` | dépend distance ville + attractivité zoo | Event `VISITOR_DEMAND_COMPUTED` |
|
||||||
|
| Alimenter file | tick logique | `potential_visitors` | `current_queue_length` | clamp ≥ 0 | Event `QUEUE_UPDATED` |
|
||||||
|
| Convertir file en entrées | tick logique | level, queue | `actual_entries` | limité par vitesse guichet et capacité zoo | Event `VISITOR_ENTERED` |
|
||||||
|
| Encaisser ticket | entrée | ticket_price | coins + | atomicité par visiteur entré | Event `TICKET_SOLD` |
|
||||||
|
| Bloquer si zoo complet | capacité atteinte | `current_visitors` | entrée 0 | déclenche alerte + évaporation file (visiteurs partent) | Event `ZOO_FULL` |
|
||||||
|
| Gérer bus VIP | event | multiplicateur | pic entrées | bus si condition (réputation/ville riche) | Event `VIP_BUS` |
|
||||||
|
| Mesurer impatience | queue longue | temps attente | départs | si attente > seuil, départs + malus réputation léger | Event `QUEUE_LONG` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Guichet + ticket + portique |
|
||||||
|
| Couleur dominante | Bleu/rouge (signalétique), or (coins) |
|
||||||
|
| Variantes | `billeterie_lvl_{1..7}_dir_{N,E,S,W}.png`, `icon_ticket_booth.png` |
|
||||||
|
| États | `open`, `busy` (queue), `full` (zoo complet), `vip_bus` (arrivée) |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Consulter stats | Consultation | - | clic billeterie | panneau stats | - |
|
||||||
|
| Upgrader | Action | coins ok | panneau → “Améliorer” | level +1 | `NOT_ENOUGH_COINS` |
|
||||||
|
| Voir file | Consultation | file > 0 | survol bâtiment | tooltip “X en attente” | - |
|
||||||
|
| Aller à la saturation | Navigation | `ZOO_FULL` | clic notif | focus billeterie | - |
|
||||||
|
| Forcer fermeture | Action (option future) | mode maintenance | toggle | entrées stoppées | `MAINTENANCE_REQUIRED` |
|
||||||
|
|
||||||
|
## 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 | `ticket_booth` | DB | constant |
|
||||||
|
| `level` | int | 3 | DB | 1..7 |
|
||||||
|
| `position.x` | int | 1 | DB | grid |
|
||||||
|
| `position.y` | int | 1 | DB | grid |
|
||||||
|
| `stats.total_entries` | int | 1280 | DB | cumul |
|
||||||
|
| `stats.daily_revenue` | int | 420 | DB | reset journalier in-game |
|
||||||
|
| `stats.current_queue_length` | int | 18 | DB/calcul | clamp ≥ 0 |
|
||||||
|
| `entry_log[].timestamp` | timestamp | - | DB | UTC |
|
||||||
|
| `entry_log[].visitor_count` | int | 5 | DB | batch |
|
||||||
|
| `entry_log[].revenue` | int | 50 | DB | batch |
|
||||||
|
| `iso_x` | int | 120 | DB/calcul | rendu |
|
||||||
|
| `iso_y` | int | 88 | DB/calcul | rendu |
|
||||||
|
| `z_index` | int | 12088 | calcul | profondeur |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Prix ticket (lvl1) | 10 | coins | base |
|
||||||
|
| Capacité max (lvl1) | 20 | visiteurs | base |
|
||||||
|
| Vitesse guichet (lvl1) | 2 | visiteurs/tick | file |
|
||||||
|
| Seuil queue longue | 25 | visiteurs | message + départs |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Satisfaction d’entrée | 50 | 0..100 | queue longue la baisse |
|
||||||
|
| Taux départ file | 0% | 0..100% | impatience |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Apparition | création zoo | - | bâtiment présent | fixe |
|
||||||
|
| Fonctionnement | zoo ouvert | attractivité | entrées | capacité respectée |
|
||||||
|
| Saturation | zoo plein | - | entrées stoppées | alerte obligatoire |
|
||||||
|
| Upgrade | action joueur | coins | level ↑ | monotone |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Zoo créé | true | est | billeterie placée |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | - | - | bâtiment persistant |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Niveau | Oui | persiste |
|
||||||
|
| Statistiques | Oui | logs conservés, pas d’analytics |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet billeterie | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Canicule | flux -10% | visiteurs évitent attente au soleil |
|
||||||
|
| Froid extrême | flux -15% | sortie plus rapide |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Proche océan (frais) | impatience - | queue tolérée |
|
||||||
|
| Boue autour entrée | impatience + | pénalise |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Été | demande +20% | vacances |
|
||||||
|
| Hiver | demande -30% | froid |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Matin | pics d’entrée | 9h-12h |
|
||||||
|
| Soir | pics de sortie | 17h-19h |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Bébés visibles | satisfaction entrée +5 | marketing “naissances” |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Incident visible à l’entrée | flux -40% | pendant 1 jour in-game |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Stand boisson proche | impatience - | file longue |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Entrée fluide | +5 | 8 cases | file courte |
|
||||||
|
| File longue | -10 | 8 cases | visiteurs partent |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Foule bruyante | stress + | enclos proche entrée |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Upgrade billeterie | + | valeur zoo | capacité |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Bus VIP | entrées batch | event `VIP_BUS` |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Naissances annoncées | demande + | saison |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Nouveaux animaux placés près entrée | intérêt + | visiteurs |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Marketing recherche | demande + | upgrade futur |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Offre rare | pics | annonce |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Portiques auto | entrées/tick + | level élevé |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Impression tickets | 100 | $/semaine | lore |
|
||||||
|
| Maintenance portiques | 20 | coins/semaine | level ≥ 3 |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Signalétique | 10 | coins/semaine | esthétique |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Perte opportunité | ticket non vendu | coins | queue trop longue |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Agent accueil | 1500 | $/mois | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Section dupliquée | 1 | coins | conservée |
|
||||||
|
|
||||||
|
#### Dépenses (Nurseries) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Vitrine bébés | 50 | coins/semaine | option |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Eau file d’attente | 5 | coins/jour | été |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Signal “nouvel animal” | 5 | coins | panneau |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Bus touristes | 25 | coins/event | `VIP_BUS` |
|
||||||
|
|
||||||
|
#### Trajet Visiteurs
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Ville | Billeterie | demande calculée | spawn file |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Billeterie | Enclos | plan visite | route via chemins |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Enclos | Boutique | faim/soif | détour |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Zoo | Billeterie | fin visite | sortie |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `TICKET_SOLD` | entrée | price | coins + |
|
||||||
|
| `ZOO_FULL` | capacité | current/max | stop entrées |
|
||||||
|
| `QUEUE_LONG` | queue > seuil | length | départs + |
|
||||||
|
| `VIP_BUS` | event | count | entrées batch |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `FOCUS_TICKET_BOOTH` | clic notif | caméra |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `VISITOR_SPAWNED_AT_ENTRY` | entrée | spawn point |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CITY_FLOW_DISPATCHED` | calcul | demande |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `VISITOR_LEAVES_QUEUE` | impatience | départ |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLAYER_UPGRADES_TICKET_BOOTH` | UI | stats maj |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| 3 | 400 | portiques visibles + vitesse guichet | anim porte |
|
||||||
|
| 5 | 1600 | file plus courte (vitesse) | satisfaction + |
|
||||||
|
| 7 | 6400 | capacité 300 + prix 35 | “grand hall” |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `getEntrySpeed` | level | int | visiteurs/tick |
|
||||||
|
| `computePotentialVisitors` | zoo, villes, saison | int | à la volée |
|
||||||
|
| `processEntry` | zoo, booth | int | encaisse + spawn |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `ZOO_FULL` | Alerte | "Le zoo est complet." | capacité atteinte |
|
||||||
|
| `QUEUE_LONG` | Warning | "La file d'attente est trop longue." | queue > seuil |
|
||||||
|
| `VIP_BUS` | Info | "Un bus de touristes arrive." | event |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Voir revenus | décider upgrade | stats dispersées | panneau unique billeterie |
|
||||||
|
| Réagir à saturation | éviter pertes | notif | clic notif → focus |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Panneau billeterie | prix/capacité/revenus | normal/full |
|
||||||
|
| File visuelle | sprites visiteurs | courte/longue |
|
||||||
|
| Badge bus VIP | icône bus | visible |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Carte zoo | entrée | file visible |
|
||||||
|
| HUD | compteur coins | feedback pièces |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `visiteur.md` | spawn/despawn | flux |
|
||||||
|
| `ville.md` | demande | distance |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Ouvrir stats | clic bâtiment | panneau |
|
||||||
|
| Upgrader | panneau → bouton | level ↑ |
|
||||||
|
| Focus | clic notif | caméra |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CLICK_BILLETERIE` | clic | ouvre |
|
||||||
|
| `CLICK_UPGRADE_TICKET_BOOTH` | bouton | upgrade |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `ticket_booth_crowd_loop.mp3` | proximité entrée | loop | discret |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `gate_open.mp3` | portiques | bas |
|
||||||
|
| `coin_jingle.mp3` | ticket vendu | bas |
|
||||||
|
| `ui_denied.mp3` | zoo plein | moyen |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `ticket_booth_ui_panel.png` | panneau | scalable |
|
||||||
|
| `queue_indicator.png` | badge | lisible |
|
||||||
|
| `vip_bus_icon.png` | bus | contraste |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `billeterie_lvl1.png` | bâtiment |
|
||||||
|
| `billeterie_lvl7.png` | bâtiment |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `ticket_gate_cycle.webm` | portiques | 1.0s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| pièces qui volent | ticket vendu | 0.6s |
|
||||||
|
| bounce badge | queue longue | 0.4s |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `ticket_blue` | #1976D2 | signalétique |
|
||||||
|
| `ticket_gold` | #D4AF37 | revenus |
|
||||||
|
| `ticket_alert_red` | #D32F2F | saturation |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `ticket_booth.title` | Billeterie | Ticket booth |
|
||||||
|
| `ticket_booth.capacity` | Capacité | Capacity |
|
||||||
|
| `ticket_booth.queue_long` | File trop longue. | Queue too long. |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Panneau | rectangle arrondi | lisible |
|
||||||
|
| Badge | rond | constant |
|
||||||
|
|||||||
@@ -144,6 +144,25 @@ function processShop(shop, visitors):
|
|||||||
| `SHOP_FULL` | Warning | "Boutique pleine ! Des clients partent." |
|
| `SHOP_FULL` | Warning | "Boutique pleine ! Des clients partent." |
|
||||||
| `SHOP_PROMO` | Info | "Soldes lancées ! Affluence +20%." |
|
| `SHOP_PROMO` | Info | "Soldes lancées ! Affluence +20%." |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Voir `vendeur.md`.
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
Le vendeur s’affiche lorsque :
|
||||||
|
- la boutique est **actionnée** (clic panneau stats, upgrade, skin de boutique) ;
|
||||||
|
- un **événement** de boutique survient (vente, surcharge, promo).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_SHOP` | clic boutique | portrait + stats + CTA |
|
||||||
|
| `SALE_MADE` | vente | feedback “caisse” + pièce/FX |
|
||||||
|
| `SHOP_FULL` | capacité atteinte | bulle “Surcharge” + CTA “Améliorer / Ajouter boutique” |
|
||||||
|
| `SHOP_PROMO` | promo active | bulle “Promo” + détails (si module) |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Uniforme et comptoir suivent `theme.md`, avec skins de boutique via `inventaire_skins.md`.
|
||||||
|
|
||||||
# Annexes UX/UI
|
# Annexes UX/UI
|
||||||
|
|
||||||
## 0. Direction Artistique & Vue
|
## 0. Direction Artistique & Vue
|
||||||
@@ -213,3 +232,483 @@ function processShop(shop, visitors):
|
|||||||
- **Couleurs** : Bleu (Blueprint).
|
- **Couleurs** : Bleu (Blueprint).
|
||||||
- **Textes** : "Construction".
|
- **Textes** : "Construction".
|
||||||
- **Formes** : Grille de placement.
|
- **Formes** : Grille de placement.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Bâtiment “boutique” : point de vente in-zoo (souvenirs/food/boissons) qui convertit les besoins des visiteurs en revenus. |
|
||||||
|
| Rôle | Augmenter la rétention et la satisfaction via la résolution des besoins (faim/soif/cadeau), et créer des micro-flux (file, service, rupture). |
|
||||||
|
| Portée | Une instance de bâtiment sur carte zoo, avec paramètres (capacité, vitesse service, catalogue, skin). |
|
||||||
|
| Contrainte | Pas d’analytics ; revenus calculés à la volée à partir des interactions visiteurs ; pas de fallback silencieux (rupture/plein => message + event). |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Construire boutique | mode build | coord, type boutique | bâtiment créé | case vide requise | Event `BUILD_SHOP` |
|
||||||
|
| Ouvrir stats | clic bâtiment | `shop_id` | UI stats | revenus totaux + clients | Event `OPEN_SHOP` |
|
||||||
|
| Attirer visiteurs | besoin/curiosité | visitor, rayon | target set | poids pathfinding élevé si besoin > seuil | Event `VISITOR_TARGETS_SHOP` |
|
||||||
|
| Servir visiteur | arrivée en file | visitor, stock | revenue + satisfaction | service limité par capacité + vitesse | Event `SALE_MADE` |
|
||||||
|
| Gérer file | dépassement capacité | queue length | impatience | si queue > seuil -> départ + malus | Event `SHOP_FULL` |
|
||||||
|
| Adapter produits au climat | temp/saison | météo, saison | mod ventes | canicule: eau + ; froid: chocolat + | Event `SHOP_DEMAND_MOD_CHANGED` |
|
||||||
|
| Appliquer skin biome | skin, biome | ids | bonus | +10% ventes si match | Event `SHOP_THEME_MATCH_BONUS` |
|
||||||
|
| Réapprovisionner | tick économique | CA, ratio | stock + coût | coût = 10% du CA | Event `SHOP_RESTOCKED` |
|
||||||
|
| Rupture | stock=0 | - | fermeture temporaire | déclenche panneau “Rupture” | Event `SHOP_OUT_OF_STOCK` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Boutique avec enseigne (cadeau/food) |
|
||||||
|
| Couleur dominante | Or (revenu) + couleur du type (rouge food, bleu boisson) |
|
||||||
|
| Variantes | `shop_gift_dir_{N,E,S,W}.png`, `shop_food_dir_{N,E,S,W}.png`, `shop_drink_dir_{N,E,S,W}.png` |
|
||||||
|
| États | `open`, `busy`, `full`, `out_of_stock`, `promo` |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Placer boutique | Action | case libre | sélectionner → placer | construction | `CELL_OCCUPIED` |
|
||||||
|
| Voir revenus | Consultation | boutique posée | clic | panneau stats | - |
|
||||||
|
| Upgrader | Action | coins ok | panneau → améliorer | level ↑ | `NOT_ENOUGH_COINS` |
|
||||||
|
| Voir file | Consultation | visiteurs proches | survol | tooltip file | - |
|
||||||
|
| Activer promo | Action (event) | condition event | clic toggle | affluence + | `PROMO_NOT_AVAILABLE` |
|
||||||
|
|
||||||
|
## 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 | `shop` | DB | constant |
|
||||||
|
| `subtype` | string | `gift` | DB/config | `gift/food/drink` |
|
||||||
|
| `level` | int | 2 | DB | 1..7 |
|
||||||
|
| `position.x` | int | 10 | DB | grid |
|
||||||
|
| `position.y` | int | 12 | DB | grid |
|
||||||
|
| `stats.revenue_total` | int | 12500 | DB | cumul |
|
||||||
|
| `stats.visitors_served` | int | 840 | DB | cumul |
|
||||||
|
| `stock.units` | int | 100 | DB | >=0 |
|
||||||
|
| `popularity` | int | 10 | calcul/DB | 0..100 |
|
||||||
|
| `capacity` | int | 5 | config | visitors simultanés |
|
||||||
|
| `service_seconds_per_visitor` | float | 5.0 | config | 1..10 |
|
||||||
|
| `attractiveness` | int | 10 | config | poids target |
|
||||||
|
| `skin_id` | string | `shop_wood_forest` | DB | cosmétique |
|
||||||
|
| `iso_x` | int | 120 | DB/calcul | rendu |
|
||||||
|
| `iso_y` | int | 88 | DB/calcul | rendu |
|
||||||
|
| `z_index` | int | 12088 | calcul | profondeur |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Revenu / visiteur | 15 | coins | level 1 |
|
||||||
|
| Capacité | 5 | visiteurs | level 1 |
|
||||||
|
| Vitesse service | 5 | s/visiteur | level 1 |
|
||||||
|
| Rayon attraction | 2 | cases | level 1 |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Stock | 100 | 0..∞ | rupture possible |
|
||||||
|
| Popularité | 10 | 0..100 | mod conversion |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Construction | joueur | coins + coord | bâtiment | case occupée |
|
||||||
|
| Service | visiteurs | besoins | revenus | capacité respectée |
|
||||||
|
| Réappro | tick | CA | stock + | coût 10% CA |
|
||||||
|
| Rupture | stock=0 | - | fermeture | observable |
|
||||||
|
| Upgrade | action | coins | level ↑ | monotone |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Construction | true | est | boutique posée |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Destruction | true | est | remboursement 50% |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Franchise | Oui | coût -10% si 5 identiques |
|
||||||
|
| Stats | Oui | cumul |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet boutique | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| > 30°C | eau +200% | canicule |
|
||||||
|
| < 5°C | chocolat +200% | froid |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| forêt + skin bois | ventes +10% | thème match |
|
||||||
|
| désert + skin oasis | ventes +10% | thème match |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Été | ventes boisson +20% | règle |
|
||||||
|
| Hiver | ventes cadeaux +10% | règle |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| 12h-14h | demande food ++ | pic |
|
||||||
|
| Nuit | fermé | 0 ventes |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Naissance rare | ventes peluche x2 | “espèce du moment” |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Mort récente proche | ventes -20% | ambiance |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Concurrence < 3 cases | ventes food -10% | partage |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Boutique level 7 | + | 10 cases | centre commercial |
|
||||||
|
| Rupture stock | - | 6 cases | frustration |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Odeurs food | stress + | espèces sensibles |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Revente | 50% + upgrades | destruction |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Livraison stock | stock + | si feature livraison |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Peluches bébé | ventes + | bébés visibles |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Nouvel animal rare | promo | event |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Tech caisse auto | service 1s | level 7 |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Produit “science” | panier moyen + | zone labo |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| File d’attente | temps boutique + | capacité limitée |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | signalétique (conservée) |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Réappro | 10% CA | coins | automatique |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Temps perdu file | satisfaction - | points | queue |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Caissier (lore) | 1800 | $/mois | level < 7 |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Section dupliquée | 1 | coins | conservée |
|
||||||
|
|
||||||
|
#### Dépenses (Nurseries) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Peluche naissance | 2 | coins | production |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Matières food | 2 | coins/vente | marge |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Cadeau “nouvel arrivant” | 1 | coins | souvenir |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Livraison premium | 5 | coins | option |
|
||||||
|
|
||||||
|
#### Trajet Visiteurs
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Ville | Zoo | entrée | besoins init 0 |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Enclos | Boutique | faim/soif > 80 | target |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Boutique | Enclos | besoins résolus | continue visite |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Boutique | Sortie | budget 0 | départ |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `SALE_MADE` | service | revenue | coins + |
|
||||||
|
| `SHOP_FULL` | queue | length | départs |
|
||||||
|
| `SHOP_OUT_OF_STOCK` | stock | units | fermeture |
|
||||||
|
| `SHOP_RESTOCKED` | tick | cost | stock + |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `FOCUS_SHOP` | clic | caméra |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `VISITOR_BUYS_ITEM` | transaction | satisfaction + |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `WEATHER_HEATWAVE` | météo | eau ++ |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `VISITOR_LEAVES_SHOP_QUEUE` | impatience | satisfaction - |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLAYER_UPGRADES_SHOP` | UI | params + |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| 4 | 340 | capacité 18 + service plus rapide | file réduite |
|
||||||
|
| 7 | 1150 | 50 capacité + caisses auto | 1s/visiteur |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `computeSeasonDemandMod` | season, temp | float | eau/glaces/chocolat |
|
||||||
|
| `serveVisitor` | shop, visitor | revenue | résout besoins |
|
||||||
|
| `restockIfNeeded` | shop, CA | shop | coût 10% CA |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `SHOP_FULL` | Warning | "Boutique pleine." | queue > cap |
|
||||||
|
| `SHOP_OUT_OF_STOCK` | Warning | "Rupture de stock." | stock=0 |
|
||||||
|
| `SALE_MADE` | Info | "Vente effectuée." | service |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Construire | générer revenus | placement | mode construction direct |
|
||||||
|
| Lire stats | décider upgrade | menus | clic bâtiment |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Popup coins | +XX | burst | feedback |
|
||||||
|
| Panneau stats | total + served | open/closed |
|
||||||
|
| Badge rupture | icône | visible |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Carte zoo | sur case | sélection base sprite |
|
||||||
|
| HUD | compteur | pièces volantes |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `visiteur.md` | besoins | faim/soif |
|
||||||
|
| `chemin.md` | pathfinding | poids boutique |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Ouvrir stats | clic | panneau |
|
||||||
|
| Upgrader | panneau → CTA | level ↑ |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_SHOP` | clic | panneau |
|
||||||
|
| `BUILD_SHOP` | build | placement |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `shop_muzak_loop.mp3` | proximité boutique | loop | discret |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `cash_register.mp3` | vente | bas |
|
||||||
|
| `coin_jingle.mp3` | revenue | bas |
|
||||||
|
| `ui_open.mp3` | panneau | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `shop_coin_popup.png` | popup | lisible |
|
||||||
|
| `shop_queue_badge.png` | queue | contraste |
|
||||||
|
| `shop_out_of_stock_badge.png` | rupture | rouge |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `shop_blueprint.png` | construction |
|
||||||
|
| `shop_product_icons.png` | UI |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `shop_sales_bars.webm` | stats | 1.0s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| pièce monte | vente | 0.6s |
|
||||||
|
| porte ouvre/ferme | visiteur | 0.4s |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `shop_gold` | #FFD700 | revenus |
|
||||||
|
| `shop_profit_green` | #2E7D32 | stats |
|
||||||
|
| `shop_alert_red` | #D32F2F | rupture |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `shop.title` | Boutique | Shop |
|
||||||
|
| `shop.revenue` | Revenus | Revenue |
|
||||||
|
| `shop.out_of_stock` | Rupture de stock | Out of stock |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Popup | rectangle arrondi | lisible |
|
||||||
|
| Badge | rond | constant |
|
||||||
|
|||||||
@@ -231,3 +231,495 @@ function updateTruck(truck, deltaTime):
|
|||||||
- **Couleurs** : Rouge (Feux stop).
|
- **Couleurs** : Rouge (Feux stop).
|
||||||
- **Textes** : "Livraison effectuée".
|
- **Textes** : "Livraison effectuée".
|
||||||
- **Formes** : Carré de stationnement.
|
- **Formes** : Carré de stationnement.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Unité de transport “Camion” : véhicule qui exécute des missions (achat/vente/transfert) entre sites (carte monde) et le zoo. |
|
||||||
|
| Rôle | Relier les transactions (enchères/achats/ventes) à une logistique observable (trajet, délais, incidents), et injecter le cargo dans `accueil_animaux` / `nurserie` selon le cas. |
|
||||||
|
| Portée | Entité persistante (par joueur/zoo) avec `level`, `status`, `cargo`, `target_site_id`. |
|
||||||
|
| Contrainte | ETA et trajectoire calculés à la volée, sans cache/mémorisation ; aucun fallback silencieux (cargo manquant => erreur + log). |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Démarrer mission | achat/vente | `target_site_id`, cargo | status moving | refuse si déjà en mission | Event `TRUCK_DEPART` |
|
||||||
|
| Calculer durée | départ | distance, level | ETA | vitesse table par level + météo | Event `TRUCK_ETA_COMPUTED` |
|
||||||
|
| Déplacer sur carte | tick lazy | now, route | position | interpolation | Event `TRUCK_POSITION_UPDATED` |
|
||||||
|
| Appliquer stress cargo | tick | cargo, confort | fertilité/stress | perte fertilité/h selon level | Event `CARGO_STRESS_APPLIED` |
|
||||||
|
| Gérer incidents | tick | météo, entretien | delay | crevaison/panne explicités | Event `TRUCK_DELAYED` |
|
||||||
|
| Arriver au site | ETA atteint | - | status arrived | charge/décharge | Event `TRUCK_ARRIVED_SITE` |
|
||||||
|
| Retourner au zoo | fin opération | - | status moving_home | trajet retour | Event `TRUCK_RETURNING` |
|
||||||
|
| Décharger au zoo | arrivée | cargo | slot réception | adultes → `accueil_animaux`, œufs/bébés → `nurserie` (selon type) | Event `DELIVERY_COMPLETE` |
|
||||||
|
| Mini-jeu attente | clic camion | - | bonus léger | bonus borné, non obligatoire | Event `CLEAN_WINDSHIELD` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Camion isométrique + flèche direction |
|
||||||
|
| Couleur dominante | Jaune/noir ou blanc |
|
||||||
|
| Variantes | `truck_lvl_{1..7}_dir_{N,E,S,W}.png` |
|
||||||
|
| États | `idle`, `moving`, `delayed`, `arrived`, `cargo_loaded` |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Envoyer en mission | Action | camion idle | achat → auto départ | mission lancée | `TRUCK_BUSY` |
|
||||||
|
| Suivre trajet | Consultation | mission active | clic icône | panel ETA | - |
|
||||||
|
| Ouvrir mini-jeu | Action | mission active | clic camion | modal mini-jeu | - |
|
||||||
|
| Voir arrivée | Consultation | mission finie | notif | focus cargo | - |
|
||||||
|
|
||||||
|
## Personnages contextuels (événements & interaction)
|
||||||
|
Selon le contexte de la mission, le camion peut afficher un personnage contextuel :
|
||||||
|
- **Personnel d’accueil (déchargement au zoo)** : voir `personnel_accueil.md` (cargo adulte).
|
||||||
|
- **Nurse (déchargement vers nurserie)** : voir `nurse.md` (cargo œuf/bébé).
|
||||||
|
- **Laborantin (achat depuis le laboratoire)** : voir `laborantin.md` (refus/gating/validation).
|
||||||
|
- **Agent de sécurité (incident de trajet)** : voir `agent_securite.md` (retard/menace si la cause est “sécurité”).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Personnage | Effet UI |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `TRUCK_DEPART` | mission démarrée | (option UI) | état “en route” + destination |
|
||||||
|
| `TRUCK_DELAYED` | incident détecté | sécurité | bulle “Retard” + cause + CTA “Voir trajet” |
|
||||||
|
| `TRUCK_ARRIVE` / `DELIVERY_COMPLETE` | arrivée zoo | accueil ou nurse | bulle “Livraison effectuée” + deep-link vers `accueil_animaux`/`nurserie` selon cargo |
|
||||||
|
| `TRUCK_ARRIVED_SITE` | arrivée site | laborantin (si site labo) | bulle “Offre disponible” + CTA “Ouvrir labo” |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Le rendu des personnages suit `theme.md` et `inventaire_skins.md` (uniformes + accessoires). Le camion lui-même reste skinable via `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 | - |
|
||||||
|
| `owner_id` | uuid_v4 | `uuid_v4` | DB | - |
|
||||||
|
| `level` | int | 1 | DB | 1..7 |
|
||||||
|
| `status` | enum | `idle` | DB | `idle/moving_to_target/moving_home/delayed` |
|
||||||
|
| `cargo.type` | string \| null | `animal` | DB | null si vide |
|
||||||
|
| `cargo.id` | uuid_v4 \| null | `uuid_v4` | DB | - |
|
||||||
|
| `position.x` | float | 10.2 | calcul/DB | carte monde |
|
||||||
|
| `position.y` | float | 12.7 | calcul/DB | carte monde |
|
||||||
|
| `target_site_id` | uuid_v4 \| null | `uuid_v4` | DB | - |
|
||||||
|
| `iso_x` | int | 120 | DB/calcul | si rendu zoo |
|
||||||
|
| `iso_y` | int | 88 | DB/calcul | si rendu zoo |
|
||||||
|
| `z_index` | int | 12088 | calcul | profondeur |
|
||||||
|
| `maintenance.km_since_service` | float | 0 | DB | - |
|
||||||
|
| `timers.departed_at` | timestamp \| null | - | DB | UTC |
|
||||||
|
| `timers.eta_at` | timestamp \| null | - | calcul/DB | UTC |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Vitesse (lvl1) | 50 | km/h | simulé |
|
||||||
|
| Capacité | 1 | cargo | par camion |
|
||||||
|
| Confort | 0.0 | score | réduit stress |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Kilométrage | 0 | 0..∞ | entretien |
|
||||||
|
| Retards cumulés | 0 | 0..∞ | info joueur |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Apparition | début jeu | - | camion idle | 1 camion min |
|
||||||
|
| Mission | achat/vente | cargo+site | moving | exclusif |
|
||||||
|
| Arrivée | ETA | - | arrived | décharge |
|
||||||
|
| Retour | fin op | - | moving_home | - |
|
||||||
|
| Idle | arrivée zoo | - | idle | cargo null |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Début partie | true | est | camion créé |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | - | - | camion persiste |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Upgrades | Oui | persiste |
|
||||||
|
| Cargo | Non | mission-only |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet camion | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| > 40°C | vitesse -10% | surchauffe |
|
||||||
|
| < -10°C | démarrage +5s | gel |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet camion | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Sable | vitesse - | sans pneus |
|
||||||
|
| Terre | vitesse + | pneus adaptés |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet camion | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Hiver | vitesse -20% | neige |
|
||||||
|
| Automne | vitesse -5% | boue |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet camion | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Nuit sans phares | vitesse -30% | prudence |
|
||||||
|
| Nuit avec phares | normal | level ≥ 2 |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Stress transport | fertilité \(\downarrow\) | cargo animal |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Trajet > 24h + confort bas | risque mort | cas extrême |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Carburant | coût/km | mission |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Skin camion | +1 | zoo | esthétique |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Klaxon | stress + | au passage |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Niveau camion | + | richesse (score) |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Niveau | table vitesse | 1..7 |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Livraison œuf/bébé | push vers nurserie | cargo type |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Livraison adulte | push vers accueil | cargo type |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Route labo | vitesse selon route | autoroute/piste |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Entretien | 10 | coins / 1000 km | règle |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Chauffeur (abstrait) | 0 | - | inclus |
|
||||||
|
|
||||||
|
#### 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 |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Carburant | variable | coins | distance |
|
||||||
|
|
||||||
|
#### 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 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `TRUCK_DEPART` | mission | target, cargo | moving |
|
||||||
|
| `TRUCK_DELAYED` | incident | reason, delta | ETA \(\uparrow\) |
|
||||||
|
| `TRUCK_ARRIVE` | retour zoo | cargo | décharge |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `TRACK_TRUCK` | clic | panel |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `DELIVERY_COMPLETE` | arrivée | push accueil/nurserie |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLAYER_OPENS_TRUCK_PANEL` | clic | UI |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| 1 | 100 | 50 km/h | base |
|
||||||
|
| 2 | 200 | 70 km/h + phares | nuit |
|
||||||
|
| 7 | 6400 | 200 km/h | rapide |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `computeTruckSpeed` | level, season, temp | float | table + mods |
|
||||||
|
| `computeETA` | distance, speed | timestamp | à la volée |
|
||||||
|
| `applyCargoStress` | cargo, comfort, dt | cargo | fertilité/stress |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `TRUCK_ARRIVED` | Info | "Le camion est revenu au zoo." | arrivée |
|
||||||
|
| `TRUCK_DELAY` | Info | "Le camion a du retard." | incident |
|
||||||
|
| `TRUCK_BUSY` | Warning | "Camion déjà en mission." | lancement |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Acheter sur carte | déclencher livraison | navigation | auto-focus camion |
|
||||||
|
| Suivre | connaître ETA | dispersion | panel clic icône |
|
||||||
|
| Mini-jeu | occuper attente | option | accessible en 1 clic |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Icône camion | position + badge | moving/delayed |
|
||||||
|
| Panel trajet | ETA + destination | open/closed |
|
||||||
|
| Modal mini-jeu | taches | progress |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Carte monde | overlay | camion |
|
||||||
|
| Carte zoo | case camion | départ/arrivée |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `accueil_animaux.md` | livraison adulte | dépôt |
|
||||||
|
| `nurserie.md` | livraison œuf/bébé | dépôt |
|
||||||
|
| `vente_animal.md` | logistique | mission |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Suivre | clic camion | panel |
|
||||||
|
| Jouer | clic camion → mini-jeu | modal |
|
||||||
|
| Voir arrivée | clic notif | focus |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `TRACK_TRUCK` | clic | panel |
|
||||||
|
| `CLEAN_WINDSHIELD` | clic | mini-jeu |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `truck_radio_lofi.mp3` | mini-jeu | loop | doux |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `engine_start.mp3` | départ | moyen |
|
||||||
|
| `truck_stop.mp3` | arrivée | moyen |
|
||||||
|
| `wipe.mp3` | mini-jeu | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `truck_route_dotted.png` | route | overlay |
|
||||||
|
| `truck_badge_delayed.png` | retard | lisible |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `truck_map_icon.png` | carte |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `truck_depart_zoom.webm` | départ | 1.5s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| fumée échappement | moving | loop |
|
||||||
|
| rotation roues | moving | loop |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `truck_yellow` | #FBC02D | carrosserie |
|
||||||
|
| `truck_black` | #212121 | accents |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `truck.en_route` | En route vers {dest} | En route to {dest} |
|
||||||
|
| `truck.arrived` | Camion rentré | Truck arrived |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Badge | rond | statut |
|
||||||
|
| Flèche | triangle | direction |
|
||||||
|
|||||||
@@ -138,3 +138,464 @@ function updateMap(map):
|
|||||||
- **Couleurs** : Fond neutre hors carte.
|
- **Couleurs** : Fond neutre hors carte.
|
||||||
- **Textes** : Coordonnées (Debug).
|
- **Textes** : Coordonnées (Debug).
|
||||||
- **Formes** : Rectangulaire.
|
- **Formes** : Rectangulaire.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Abstraction “carte” : structure de grille + règles de navigation + horloge, déclinée en carte zoo et carte monde. |
|
||||||
|
| Rôle | Offrir un contrat commun de coordonnées, rendu isométrique, événements de déplacement/zoom, et cycle temps (jour/nuit, saisons). |
|
||||||
|
| Portée | Base pour `carte_zoo.md` et `carte_monde.md`, et pour les types `case_*`. |
|
||||||
|
| Contrainte | Aucun cache/mémorisation obligatoire : la carte fournit des fonctions de calcul à la volée (variants, z_index, routes). |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Initialiser carte | création | type, seed | grid | dimensions fixées | Event `MAP_INIT` |
|
||||||
|
| Résoudre case | lookup | x,y | case | unicité coord | Event `MAP_CASE_RESOLVED` |
|
||||||
|
| Convertir coord → iso | rendu | x,y | iso_x/iso_y | formule iso stable | Event `MAP_COORD_CONVERTED` |
|
||||||
|
| Calculer z_index | rendu | x,y | int | priorité y puis x | Event `MAP_ZINDEX_COMPUTED` |
|
||||||
|
| Déclencher tick | loop | deltaTime | events | mise à jour entités | Event `MAP_TICK` |
|
||||||
|
| Déplacement caméra | input | pan/zoom | camera state | clamp | Event `MAP_MOVE` / `MAP_ZOOM` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Grille + boussole |
|
||||||
|
| Couleur dominante | Neutre |
|
||||||
|
| Variantes | `icon_map_generic.png`, `icon_compass.png` |
|
||||||
|
| États | normal, loading, locked |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Pan | Navigation | carte autorise pan | drag | caméra bouge | - |
|
||||||
|
| Zoom | Navigation | - | pinch/wheel | caméra zoom | - |
|
||||||
|
| Sélection case | Consultation | case interactive | clic | panneau | `CASE_LOCKED` |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Les cartes peuvent afficher un personnage contextuel quand un module de carte est actionné ou lorsqu’un événement impacte la navigation.
|
||||||
|
|
||||||
|
### Références
|
||||||
|
- **Carte du zoo** : avatar du joueur actif comme contexte principal (`avatar_joueur.md`), plus visiteurs/staff selon événements (`carte_zoo.md`).
|
||||||
|
- **Carte du monde** : maire pour les événements de ville (`maire.md`, `ville.md`), joueurs/bots pour les interactions sociales (`joueur.md`, `bot.md`), visiteurs comme flux (`visiteur.md`).
|
||||||
|
|
||||||
|
### Déclencheurs (génériques)
|
||||||
|
| Event / Action | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `MAP_LOADED` | carte prête | portrait/mascotte de contexte (selon type) |
|
||||||
|
| `MAP_MOVE` / `MAP_ZOOM` | navigation | feedback passif (pas de spam) |
|
||||||
|
| `CASE_LOCKED` | gating | message explicite (raison + action) |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Le personnage contextuel suit `theme.md`. Les portraits/mini-avatars peuvent utiliser les skins via `inventaire_skins.md` si la mécanique est activée.
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `id` | uuid_v4 | `uuid_v4` | DB | unique |
|
||||||
|
| `type` | enum | `zoo` | DB | `zoo/world` |
|
||||||
|
| `width` | int | 6 | DB | >0 |
|
||||||
|
| `height` | int | 5 | DB | >0 |
|
||||||
|
| `grid[x][y].case_ref` | uuid_v4 | `uuid_v4` | DB | référence |
|
||||||
|
| `time.day_phase` | enum | `day` | calcul | jour/nuit |
|
||||||
|
| `time.season` | enum | `spring` | calcul | saisons |
|
||||||
|
| `iso_x` | int | 0 | calcul | origine |
|
||||||
|
| `iso_y` | int | 0 | calcul | origine |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Densité occupée | 0 | % | init |
|
||||||
|
| DeltaTime | 1 | tick | logique |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Exploration | 0 | 0..100 | carte monde |
|
||||||
|
| Aménagement | 0 | 0..100 | carte zoo |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Création | init jeu | seed | carte | stable |
|
||||||
|
| Utilisation | session | input | camera | clamp |
|
||||||
|
| Destruction | suppression compte | - | supprimée | - |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Initialisation | true | est | carte créée |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Compte supprimé | true | est | carte supprimée |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Configuration seed | Oui | rejouable |
|
||||||
|
| Variants render | Non | recalcul |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet carte | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Météo globale | mod cases | propagée |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet carte | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Répartition | gen/procédural | cohérence |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet carte | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Cycle | mod visuel | global |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet carte | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Nuit | assombrissement | global |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Population globale | caps | simulation |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Traces | journal | option |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Stocks | centralisation | option |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Score global | agrégation | monde | carte monde |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | base |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Terrain | + | cases |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| deltaTime | avance mission | tick |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| timers | progress | tick |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| timers | progress | tick |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| projets | durations | tick |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| refresh offres | 24h | tick |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| pathfinding | recalcul | obstacles |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Affichage UI | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Section dupliquée | 1 | coins | conservée |
|
||||||
|
|
||||||
|
#### Dépenses (Nurseries) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Trajet Visiteurs
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Ville | Zoo | attractivité | flux |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Entrée | Enclos | curiosité | route |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Enclos | Boutique | besoin | route |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Zoo | Sortie | fermeture | despawn |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `MAP_TICK` | loop | dt | update |
|
||||||
|
| `MAP_LOADED` | init | type | ready |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `MAP_MOVE` | input | camera |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `MAP_INIT` | create | grid |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `MAP_ZOOM` | input | camera |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `MAP_CASE_RESOLVED` | lookup | case |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `MAP_COORD_CONVERTED` | render | iso |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| 1 | 100 | zoom + | map |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `updateMap` | map, dt | map | tick |
|
||||||
|
| `toIso` | x,y | iso | projection |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `MAP_LOADED` | Info | "Carte chargée." | init |
|
||||||
|
| `CASE_LOCKED` | Warning | "Zone verrouillée." | gating |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Explorer | comprendre espace | navigation | pan/zoom |
|
||||||
|
| Centrer | retrouver point | perte | bouton recentrer |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| HUD carte | boutons | visible |
|
||||||
|
| Tooltip | coord/site | hover |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Plein écran | centre | carte |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `carte_zoo.md` | usage | build |
|
||||||
|
| `carte_monde.md` | usage | navigation |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Pan | drag | move |
|
||||||
|
| Zoom | pinch | scale |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `MAP_MOVE` | drag | camera |
|
||||||
|
| `MAP_ZOOM` | pinch | camera |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `map_generic_loop.mp3` | carte | loop | neutre |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `hover_soft.mp3` | hover | bas |
|
||||||
|
| `ui_zoom.mp3` | zoom | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `grid_lines.png` | overlay | subtil |
|
||||||
|
| `tooltip_bg.png` | tooltip | lisible |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `skybox.png` | fond |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `clouds_overlay.webm` | fond | loop |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| inertie pan | move | 0.2s |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `map_bg` | #202020 | hors carte |
|
||||||
|
| `map_highlight` | #FFFFFF | hover |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `map.coords` | Coordonnées | Coordinates |
|
||||||
|
| `map.loaded` | Carte chargée | Map loaded |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Tooltip | rectangle arrondi | lisible |
|
||||||
|
|||||||
@@ -184,3 +184,475 @@ function updateWorldMap(map, deltaTime):
|
|||||||
- **Couleurs** : Blanc/Gris.
|
- **Couleurs** : Blanc/Gris.
|
||||||
- **Textes** : "Zone Inexplorée".
|
- **Textes** : "Zone Inexplorée".
|
||||||
- **Formes** : Zone non cliquable.
|
- **Formes** : Zone non cliquable.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | “Carte du monde” : vue multijoueur/économie, affichant sites (zoos, villes, labos) et camions en transit. |
|
||||||
|
| Rôle | Permettre l’achat/vente via transport, visualiser la dynamique (flux, météo, jour/nuit) et l’exploration (brouillard). |
|
||||||
|
| Portée | Singleton logique (serveur), rendu client par zooms et marqueurs, sans pan manuel si règle active. |
|
||||||
|
| Contrainte | Pas de cache/mémorisation des flux : distances/choix calculés à la volée ; pas d’alternative HTTP/analytics ; interaction zone masquée => blocage explicite. |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Ouvrir carte monde | bouton UI | player | écran monde | charge sites visibles | Event `OPEN_WORLD_MAP` |
|
||||||
|
| Résoudre visibilité | upgrade zoom | rayon | sites visibles | dépend upgrade carte | Event `WORLD_VISIBILITY_UPDATED` |
|
||||||
|
| Afficher sites | rendu | sites | markers | z_index stable | Event `WORLD_SITES_RENDERED` |
|
||||||
|
| Suivre camions | tick lazy | dt | pos camions | interpolation | Event `WORLD_TRUCKS_UPDATED` |
|
||||||
|
| Bloquer zone inexplorée | clic | coord | tooltip | pas de reveal gratuit | Event `FOG_CLICK_BLOCKED` |
|
||||||
|
| Délivrer cargo | camion arrive | cargo | dépôt zoo | adultes→accueil, œufs/bébés→nurserie | Event `DELIVERY_COMPLETE` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Globe + pins |
|
||||||
|
| Couleur dominante | Désaturé (fond) + accents (pins) |
|
||||||
|
| Variantes | `icon_world_map.png`, `icon_pin_site.png` |
|
||||||
|
| États | normal, fogged, event_weather |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Clic site | Consultation | visible | clic marker | panneau site | `ZONE_NOT_EXPLORED` |
|
||||||
|
| Achat offre | Action | fonds + camion idle | drag offre→camion | mission | `TRUCK_BUSY`, `NOT_ENOUGH_COINS` |
|
||||||
|
| Zoom-out | Navigation | upgrade ok | bouton/gesture | rayon ↑ | `UPGRADE_REQUIRED` |
|
||||||
|
|
||||||
|
## Personnages contextuels (événements & interaction)
|
||||||
|
La carte du monde affiche des personnages contextuels selon le type de site sélectionné et les événements globaux.
|
||||||
|
|
||||||
|
### Sites et personnages
|
||||||
|
- **Ville** : maire (`maire.md`) — événements de ville, flux visiteurs, relation/jumelage.
|
||||||
|
- **Laboratoire** : laborantin (`laborantin.md`) — offres rares, services, alertes.
|
||||||
|
- **Zoo joueur** : joueur/portrait (`joueur.md`, `avatar_joueur.md`) — identité, indicateurs, interactions sociales.
|
||||||
|
- **Zoo bot** : bot (`bot.md`) — profil de stratégie et indicateurs.
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event / Action | Condition | Personnage | Effet UI |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `OPEN_WORLD_MAP` | ouverture écran | (contexte) | personnage de contexte selon dernier site sélectionné |
|
||||||
|
| clic site `city` | sélection ville | maire | panneau ville + événements |
|
||||||
|
| clic site `lab` | sélection labo | laborantin | panneau labo + offres/services |
|
||||||
|
| clic site `zoo` (autre joueur) | sélection zoo | joueur | panneau identité + actions permises |
|
||||||
|
| `ZONE_NOT_EXPLORED` | fog | (contexte) | message explicite (gating) |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Les portraits/mascottes suivent `theme.md`. Les mini-avatars des joueurs suivent leurs skins (si le profil est accessible) via les règles de `avatar_joueur.md` et `inventaire_skins.md`.
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `id` | string | `world_map` | DB | singleton |
|
||||||
|
| `width` | int | 200 | DB | très grand |
|
||||||
|
| `height` | int | 200 | DB | - |
|
||||||
|
| `sites[].id` | uuid_v4 | `uuid_v4` | DB | - |
|
||||||
|
| `sites[].type` | enum | `city` | DB | `zoo/city/lab` |
|
||||||
|
| `sites[].pos.x` | int | 40 | DB | grid |
|
||||||
|
| `sites[].pos.y` | int | 70 | DB | grid |
|
||||||
|
| `trucks[].id` | uuid_v4 | `uuid_v4` | DB | - |
|
||||||
|
| `trucks[].owner_id` | uuid_v4 | `uuid_v4` | DB | - |
|
||||||
|
| `trucks[].pos.x` | float | 40.2 | calcul | monde |
|
||||||
|
| `trucks[].pos.y` | float | 69.8 | calcul | monde |
|
||||||
|
| `trucks[].target` | uuid_v4 | `uuid_v4` | DB | site |
|
||||||
|
| `fog.revealed_radius` | float | 500 | config | km simulé |
|
||||||
|
| `weather.global` | enum | `rain` | calcul | rendu |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Rayon visible | 500 | km | simulé |
|
||||||
|
| Nb villes | 10 | count | départ |
|
||||||
|
| Nb labos | 2 | count | départ |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Exploration | 0 | 0..100 | fog |
|
||||||
|
| Trafic camions | 0 | 0..∞ | routes visibles |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Création | serveur | seed | sites init | singleton |
|
||||||
|
| Exploration | upgrade | zoom | reveal | blocage zones |
|
||||||
|
| Événements | météo | saison | overlays | observables |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Démarrage | true | est | carte disponible |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | - | - | jamais |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Cartographie | Oui | zones découvertes persistent |
|
||||||
|
| Routes “usuelles” | Oui | visibles si trafic haut |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Météo globale | visuel + mod vitesse | pluie/neige |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Montagne | coût traversée + | camions |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Hiver | teinte blanche | visuel |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Nuit | lumières villes/zoos | rendu |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Migration (décor) | 0 | purement visuel |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Easter egg | bonus | découverte |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Villes produisent | stock + | marchés |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Halo zoo attractif | visuel | monde | signal |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | - |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Marché global | prix ± | offre/demande |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Embouteillage | vitesse - | event |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Offres bébés | compteur + | listings |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Offres animaux | compteur + | listings |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Zoom upgrade | visibilité + | agrandissement carte |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Refresh offers | TTL 24h | remplacement |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Flux ville→zoo | distance | calcul |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Péages | 1% cargaison | coins | routes |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Section dupliquée | 1 | coins | conservée |
|
||||||
|
|
||||||
|
#### Dépenses (Nurseries) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Voyage rapide | 100 | coins | si héliport |
|
||||||
|
|
||||||
|
#### Trajet Visiteurs
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Ville | Zoo | attractivité | flux |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Zoo | Enclos | visite | path |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Zoo | Boutique | besoins | achats |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Billeterie | Sortie | fin | despawn |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `OPEN_WORLD_MAP` | UI | - | écran |
|
||||||
|
| `MAP_EVENT` | météo | region | overlay |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `FOG_HOVER` | hover | tooltip |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `WORLD_TRUCKS_UPDATED` | tick | positions |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CITY_FLOW_DISPATCHED` | calcul | flux |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `ZONE_NOT_EXPLORED` | clic | denied |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `WORLD_VISIBILITY_UPDATED` | upgrade | reveal |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| 1 | 1000 | zoom + | rayon |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `updateWorldMap` | map, dt | map | move trucks |
|
||||||
|
| `canReveal` | upgrade | bool | fog |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `ZONE_NOT_EXPLORED` | Warning | "Zone non explorée." | fog |
|
||||||
|
| `UPGRADE_REQUIRED` | Warning | "Amélioration requise." | zoom |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Lire le marché | choisir offres | densité | compteurs + filtres |
|
||||||
|
| Acheter | déclencher camion | drag | drag direct vers camion |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Pins sites | zoo/city/lab | hover/selected |
|
||||||
|
| Fog mask | nuages | revealed/hidden |
|
||||||
|
| Compteurs | offres | live |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Plein écran | centre | carte monde |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `camion.md` | transport | missions |
|
||||||
|
| `ville.md` | flux | visiteurs |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Ouvrir | bouton carte monde | écran |
|
||||||
|
| Retour | bouton zoo | ferme |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_WORLD_MAP` | clic | open |
|
||||||
|
| `FOG_CLICK_BLOCKED` | clic fog | tooltip |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `world_map_travel_loop.mp3` | carte monde | loop | aventure |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `fog_whoosh.mp3` | reveal | bas |
|
||||||
|
| `ui_denied.mp3` | blocked | moyen |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `world_pins_atlas.png` | pins | lisible |
|
||||||
|
| `fog_clouds.png` | fog | alpha |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `world_biomes_blur.png` | fond |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `clouds_shader.webm` | fond | loop |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| déplacement camions | tick | continu |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `world_desat` | #8A8A8A | fond |
|
||||||
|
| `world_pin_gold` | #D4AF37 | halo |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `world.fog` | Zone inexplorée | Unexplored zone |
|
||||||
|
| `world.back` | Retour zoo | Back to zoo |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Pin | goutte | site |
|
||||||
|
|||||||
@@ -203,3 +203,498 @@ function initZooMap():
|
|||||||
- **Couleurs** : Vert/Rouge (Alpha 0.5).
|
- **Couleurs** : Vert/Rouge (Alpha 0.5).
|
||||||
- **Textes** : "Placer ici".
|
- **Textes** : "Placer ici".
|
||||||
- **Formes** : Carrés.
|
- **Formes** : Carrés.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | “Carte du zoo” : grille isométrique principale de gestion (construction, placement animaux/bâtiments, chemins, déplacements visiteurs). |
|
||||||
|
| Rôle | Centraliser l’édition (build/paint), le rendu isométrique (tri z-index, occlusion), et la simulation locale (pathfinding, signaux terrain). |
|
||||||
|
| Portée | Une map par zoo (`owner_id`), composée de `cases[]` et d’entités rendues (bâtiments, animaux, visiteurs, décorations). |
|
||||||
|
| Contrainte | Pas de cache/mémorisation : états dérivés (z_index, variants auto-tiling, heatmap) calculés à la volée ; aucune interaction silencieuse (placement invalide => erreur + message). |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Rendre grille iso | frame render | cases visibles | draw list | tri par `z_index` + occlusion | Event `ZOO_MAP_RENDERED` |
|
||||||
|
| Sélectionner une case | clic/tap | coord | panneau contexte | contenu dépend occupancy | Event `CLICK_CASE` |
|
||||||
|
| Entrer mode build | bouton UI | type item | overlay | indique cases valides | Event `ENTER_BUILD_MODE` |
|
||||||
|
| Placer entité | drop/tap place | entity, coord | occupancy update | invariants case/biome/enclos | Event `PLACE_ENTITY` |
|
||||||
|
| Paint multi-case | drag | brush, path | batch placements | pas de “continue” silencieux : stop sur case invalide + message | Event `PAINT_APPLIED` |
|
||||||
|
| Auto-tiling terrain/chemins | placement | voisins | variant keys | recalcul local voisinage | Event `AUTOTILE_UPDATED` |
|
||||||
|
| Calculer pathfinding visiteurs | besoin/objectif | graph | route | A* à la volée, coûts par tuile | Event `VISITOR_ROUTE_COMPUTED` |
|
||||||
|
| Mettre à jour signaux terrain | tick lazy | env | flags | givre/jaunissement selon compatibilité | Event `TERRAIN_SIGNAL_UPDATED` |
|
||||||
|
| Gérer zoom | input | zoom level | camera scale | clamp + snap | Event `ZOO_MAP_ZOOM` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Icône carte pliée / grille losange |
|
||||||
|
| Couleur dominante | Vert (prairie), bleu (océan), gris (montagne) |
|
||||||
|
| Variantes | `icon_zoo_map.png`, `icon_grid_iso.png` |
|
||||||
|
| États | normal, build_mode, placement_invalid |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Clic case | Consultation | - | clic | panneau | - |
|
||||||
|
| Construire bâtiment | Action | item choisi | build → place | entité posée | `CELL_OCCUPIED`, `PLACEMENT_INVALID` |
|
||||||
|
| Placer animal | Action | animal prêt | drag → drop | animal enclos | `BIOME_INCOMPATIBLE` |
|
||||||
|
| Déplacer (réaménager) | Action | feature active | drag entité | relocalisation | `MOVE_BLOCKED` |
|
||||||
|
| Zoom | Navigation | - | pinch/wheel | vue ajustée | - |
|
||||||
|
|
||||||
|
## Personnages contextuels (événements & interaction)
|
||||||
|
La carte du zoo est un module transversal : plusieurs personnages peuvent servir de contexte selon l’événement.
|
||||||
|
|
||||||
|
### Personnage principal
|
||||||
|
- **Joueur actif (avatar)** : voir `avatar_joueur.md`. Visible en HUD et utilisé comme personnage contextuel des actions de construction/gestion.
|
||||||
|
|
||||||
|
### Personnages secondaires (selon événement)
|
||||||
|
- **Visiteurs homme/femme** : voir `visiteur.md` (flux, pathfinding, congestion).
|
||||||
|
- **Staff** : `nourisseur.md`, `soigneur.md`, `agent_securite.md`, `personnel_accueil.md`, `nurse.md` (déplacements et actions visibles sur la carte).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event / Action | Condition | Personnage | Effet UI |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `CLICK_CASE` | clic case | avatar | panneau contexte + action principale |
|
||||||
|
| `ENTER_BUILD_MODE` | build activé | avatar | rappel des invariants (cases valides) |
|
||||||
|
| `PLACEMENT_INVALID` / `CELL_OCCUPIED` | placement refusé | avatar | message explicite + surbrillance cause |
|
||||||
|
| `VISITOR_ROUTE_COMPUTED` | recalcul route | visiteur | bulle info si congestion/obstacle |
|
||||||
|
| `DELIVERY_COMPLETE` | arrivée camion | accueil/nurse | bulle livraison + deep-link module |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Rendu des personnages : `theme.md` + équipements `inventaire_skins.md` (avatar + uniformes + variantes visiteurs si activées).
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `id` | uuid_v4 | `uuid_v4` | DB | - |
|
||||||
|
| `owner_id` | uuid_v4 | `uuid_v4` | DB | - |
|
||||||
|
| `width` | int | 5 | DB | init |
|
||||||
|
| `height` | int | 6 | DB | init |
|
||||||
|
| `cases[].id` | uuid_v4 | `uuid_v4` | DB | unique |
|
||||||
|
| `cases[].grid.x` | int | 2 | DB | 0..width-1 |
|
||||||
|
| `cases[].grid.y` | int | 4 | DB | 0..height-1 |
|
||||||
|
| `cases[].iso.iso_x` | int | 120 | calcul | rendu |
|
||||||
|
| `cases[].iso.iso_y` | int | 88 | calcul | rendu |
|
||||||
|
| `cases[].z_index` | int | 12088 | calcul | tri |
|
||||||
|
| `cases[].biome` | enum | `prairie` | DB | tiers |
|
||||||
|
| `cases[].terrain.ground_type` | enum | `herbe` | DB | - |
|
||||||
|
| `cases[].terrain.path_type` | enum | `gravier` | DB | auto-tiling |
|
||||||
|
| `cases[].occupancy.type` | enum | `building` | DB | un principal |
|
||||||
|
| `cases[].occupancy.entity_id` | uuid_v4 \| null | `uuid_v4` | DB | null si vide |
|
||||||
|
| `cases[].render.tile_variant` | string | `path_gravel_T` | calcul | key |
|
||||||
|
| `cases[].render.occluder` | boolean | true | config | - |
|
||||||
|
| `cases[].render.click_hitbox` | enum | `base_sprite` | config | accessibilité clic |
|
||||||
|
| `timestamps.updated_at` | timestamp | - | DB | UTC |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Taille | 30 | cases | ~5x6 |
|
||||||
|
| Biomes | 3 | count | tiers |
|
||||||
|
| Zoom min/max | 0.7 / 1.6 | scale | clamp |
|
||||||
|
| Coût marche herbe | 1.2 | coef | pathfinding |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Score aménagement | 0 | 0..100 | utilisation espace |
|
||||||
|
| Propreté globale | 100 | 0..100 | satisfaction |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Création | compte | seed | cases init | contenu initial |
|
||||||
|
| Expansion | achat case | coord | width/height | adjacency |
|
||||||
|
| Réaménagement | action | entité | nouvelle position | pas de collision |
|
||||||
|
| Catastrophes | event | saison | flags case | observable |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Compte joueur | true | est | map créée |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Suppression compte | true | est | map supprimée |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Extensions achetées | Oui | conservées en prestige (soft reset) |
|
||||||
|
| Variants render | Non | recalcul à la volée |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Proche océan | -2°C | micro-climat |
|
||||||
|
| Montagne | -5°C | micro-climat |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Prairie | herbe repousse | nourriture passive |
|
||||||
|
| Océan | humidité + | froid adjacent |
|
||||||
|
| Montagne | givre + | froid |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Hiver | neige/givre | décor + path cost |
|
||||||
|
| Automne | teintes orange | visuel |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Nuit | lumières | lampadaires/bâtiments |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Buissons “intimité” | +5% | autour enclos |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Animal mort sur case | fertilité sol + | case verdit après TTL |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Herbe prairie vide | repousse | tick lent |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Décoration | +1 | 3 cases | beauté |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Foule proche | stress + | densité élevée |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Case achetée | + | foncier | valeur zoo |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Accès camion | chemin connecté | case camion |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Overlay placement | valid/invalid | mode sortie |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Mode placement | overlay | READY |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Chemins | +50% vitesse | path tiles |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Entretien espaces verts | 1 | coins/case/semaine | propreté |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Maintenance routes | 1 | coins/tuile/semaine | option |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Saleté | temps staff | min | déchets |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Soigneur déplacement | temps | min | chemins |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Section dupliquée | 1 | coins | conservée |
|
||||||
|
|
||||||
|
#### Dépenses (Nurseries) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | visuel couplé |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Stock global | variable | coins | achats |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Quarantaine | variable | coins | incidents |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Carburant | variable | coins | distance |
|
||||||
|
|
||||||
|
#### Trajet Visiteurs
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Billeterie | Ville | sortie | despawn |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Billeterie | Enclos | plan visite | route |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Enclos | Boutique | besoin | détour |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Enclos | Billeterie | fin visite | sortie |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `MAP_EXPAND` | achat | coord | size + |
|
||||||
|
| `AUTOTILE_UPDATED` | terrain | coord | variants |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `ZOO_MAP_ZOOM` | input | camera |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLACE_ENTITY` | placement | occupancy |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `VISITOR_ROUTE_COMPUTED` | besoin | route |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `VISITOR_REROUTE` | obstacle | route |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `ENTER_BUILD_MODE` | UI | overlay |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| 1 | 100 | +1 case | extension |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `getBiomeByColumn` | x, width | biome | tiers |
|
||||||
|
| `computeZIndex` | x,y | int | tri iso |
|
||||||
|
| `isPlacementValid` | entity, coord | bool | invariants |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `MAP_EXPAND` | Info | "Le zoo s'agrandit." | achat |
|
||||||
|
| `PLACEMENT_INVALID` | Warning | "Placement invalide." | validation |
|
||||||
|
| `CELL_OCCUPIED` | Warning | "Case occupée." | collision |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Construire | façonner zoo | erreurs placement | overlay OK/KO |
|
||||||
|
| Inspecter case | comprendre contenu | navigation | panneau contextuel |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Highlight case | outline | hover/selected |
|
||||||
|
| Bottom sheet | infos/actions | open/closed |
|
||||||
|
| Overlay build | vert/rouge | valid/invalid |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Canvas monde | plein écran | caméra |
|
||||||
|
| HUD build | barre | outils |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `case_zoo.md` | unité case | occupancy |
|
||||||
|
| `chemin.md` | auto-tiling | path |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Sélection | clic case | panneau |
|
||||||
|
| Build | bouton build | overlay |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CLICK_CASE` | clic | panneau |
|
||||||
|
| `ENTER_BUILD_MODE` | clic | overlay |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `zoo_map_ambience_loop.mp3` | carte zoo | loop | discret |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `click_tile.mp3` | sélection | bas |
|
||||||
|
| `grid_snap.mp3` | placement | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `tile_highlight.png` | hover | overlay |
|
||||||
|
| `build_overlay.png` | build | alpha |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `biome_prairie_tiles.png` | sol |
|
||||||
|
| `biome_mountain_tiles.png` | sol |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `grid_holo.webm` | build | 1.0s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| pulsation highlight | hover | 0.4s |
|
||||||
|
| snap | placement | 0.2s |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `build_ok_green` | #00FF00 | valid |
|
||||||
|
| `build_ko_red` | #FF0000 | invalid |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `zoo_map.place_here` | Placer ici | Place here |
|
||||||
|
| `zoo_map.invalid` | Placement invalide | Invalid placement |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Case | losange | iso |
|
||||||
|
| Panneau | rectangle arrondi | lisible |
|
||||||
|
|||||||
@@ -103,3 +103,445 @@ def fertilize_case(case, player):
|
|||||||
- **Couleurs** : Marron foncé.
|
- **Couleurs** : Marron foncé.
|
||||||
- **Textes** : `TOOL_FERTILIZE` = "Engrais", `CASE_FERTILIZED` = "Sol fertilisé"
|
- **Textes** : `TOOL_FERTILIZE` = "Engrais", `CASE_FERTILIZED` = "Sol fertilisé"
|
||||||
- **Formes** : Curseur rond (outil), surbrillance tuile.
|
- **Formes** : Curseur rond (outil), surbrillance tuile.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Case générique : unité élémentaire \((x,y)\) d’une carte, portant biome, température, contenu, états de sol et paramètres de rendu isométrique. |
|
||||||
|
| Rôle | Supporter toutes les interactions bas niveau (occupation, états terrain, outils) et fournir un contrat unique pour les spécialisations (zoo/monde). |
|
||||||
|
| Portée | Toute grille (zoo/world) ; les entités référencent des cases via coordonnées ou `grid_id`. |
|
||||||
|
| Contrainte | Invariants stricts (content_type vs ref) ; pas de fallback silencieux ; dérivés (z_index, tile_variant) calculés à la volée. |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Résoudre `grid_id` | création | x,y | string | format `${x}:${y}` | Event `GRID_ID_BUILT` |
|
||||||
|
| Mettre à jour contenu | placement | content_type/ref | case | cohérence obligatoire | Event `CASE_CONTENT_UPDATED` |
|
||||||
|
| Appliquer outil (fertilize) | action | player, cost | fertility=100 | fonds requis, sinon erreur | Event `FERTILIZE_SOIL` |
|
||||||
|
| Mettre à jour flags | tick | env + actions | state_flags | clamp + cohérence | Event `CASE_FLAGS_UPDATED` |
|
||||||
|
| Calculer température locale | tick | biome + offset + saison | float | additif | Event `CASE_TEMP_COMPUTED` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Tuile + symbole biome |
|
||||||
|
| Couleur dominante | selon biome |
|
||||||
|
| Variantes | `icon_tile_generic.png`, `icon_tile_fertilized.png` |
|
||||||
|
| États | `dirty`, `fertilized`, `snowy`, `muddy` |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Fertiliser | Action | fonds ≥ 50 | outil → clic case | fertilité 100 | `NO_MONEY` |
|
||||||
|
| Lire état case | Consultation | - | survol | tooltip flags | - |
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `x` | int | 10 | DB | coord |
|
||||||
|
| `y` | int | 12 | DB | coord |
|
||||||
|
| `grid_id` | string | `10:12` | calcul | stable |
|
||||||
|
| `owner_id` | uuid_v4 \| null | `uuid_v4` | DB | null pour monde |
|
||||||
|
| `biome_type` | enum | `prairie` | DB | - |
|
||||||
|
| `temperature_offset` | float | -2.0 | DB | additif |
|
||||||
|
| `content_type` | enum | `empty` | DB | voir enum |
|
||||||
|
| `content_ref` | uuid_v4 \| null | - | DB | null si empty |
|
||||||
|
| `fertility_level` | float | 100 | DB | 0..100 |
|
||||||
|
| `cleanliness_level` | float | 80 | DB | 0..100 |
|
||||||
|
| `state_flags[]` | enum[] | `dirty` | DB | sans doublons |
|
||||||
|
| `render.tile_variant` | string | `prairie_A` | calcul | auto-tiling |
|
||||||
|
| `render.hitbox` | enum | `tile` | config | access |
|
||||||
|
| `iso_x` | int | 120 | calcul | iso |
|
||||||
|
| `iso_y` | int | 88 | calcul | iso |
|
||||||
|
| `z_index` | int | 12088 | calcul | tri |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Fertilité | 0 | pts | init |
|
||||||
|
| Propreté | 100 | pts | init |
|
||||||
|
| Temp offset | 0.0 | °C | init |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Occupation | 0 | 0..100 | densité |
|
||||||
|
| Dégradation | 0 | 0..100 | sol |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Création | gen map | biome | case | unicité |
|
||||||
|
| Mutation | actions | outils | flags | cohérence |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Génération | true | est | case créée |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Suppression compte | true | est | supprimée |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Coordonnées | Oui | stables |
|
||||||
|
| Flags | Oui | persistants DB |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Saison | temp \(\pm\) | global |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| jungle | humidité | visuel |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| hiver | `snowy` | flag |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| nuit | luminosité - | rendu |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| fertilized | + | plantes |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| flooded | danger | event |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| herbe | nourriture | prairie |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| propre | + | local | ambiance |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| sale | stress + | proximité |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| tile premium | + | flag |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| movement_cost | vitesse - | >1 |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | base |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | base |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | base |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | base |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| walkable | route | bool |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| fertilize | 50 | coins | outil |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| nettoyage | 5 | coins | option |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| saleté | temps | min | déchets |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| intervention | temps | min | staff |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| section dupliquée | 1 | coins | conservée |
|
||||||
|
|
||||||
|
#### Dépenses (Nurseries) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Trajet Visiteurs
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| ville | zoo | attractivité | flux |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| entrée | enclos | visite | route |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| enclos | boutique | faim | achats |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| zoo | sortie | fin | despawn |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `CASE_FERTILIZED` | outil | grid_id | flag + |
|
||||||
|
| `CASE_CONTENT_UPDATED` | placement | content | cohérence |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CASE_TEMP_COMPUTED` | tick | temp |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CASE_FLAGS_UPDATED` | tick | flags |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `GRID_ID_BUILT` | init | id |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CASE_HOVERED` | UI | tooltip |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLAYER_FERTILIZES` | clic | sol |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Outil engrais | 50 | fertilité 100 | action |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `fertilize_case` | case, player | result | fonds |
|
||||||
|
| `getLocalTemp` | case, season | float | additif |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `CASE_FERTILIZED` | Info | "Sol fertilisé." | succès |
|
||||||
|
| `NO_MONEY` | Warn | "Fonds insuffisants." | coût |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Utiliser outil | améliorer case | menus | outil direct |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Curseur outil | sac engrais | actif |
|
||||||
|
| Feedback case | particules | succès |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Menu outils | HUD | accès |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `case_zoo.md` | spécialisation | zoo |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Fertiliser | outil → clic | succès |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `FERTILIZE_SOIL` | clic | action |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `ambience_garden_soft.mp3` | outil | loop | discret |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `scatter.mp3` | engrais | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `fertilize_particles.png` | FX | overlay |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `soil_rich.png` | tuile |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `fertilize_fx.webm` | feedback | 0.8s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| poussière | action | 0.6s |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `soil_brown` | #4E342E | sol |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `tool.fertilize` | Engrais | Fertilize |
|
||||||
|
| `case.fertilized` | Sol fertilisé | Soil fertilized |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Curseur | rond | outil |
|
||||||
|
|||||||
@@ -126,3 +126,428 @@ function getTravelCost(case):
|
|||||||
- **Couleurs** : Blanc (Alpha).
|
- **Couleurs** : Blanc (Alpha).
|
||||||
- **Textes** : Coordonnées X,Y.
|
- **Textes** : Coordonnées X,Y.
|
||||||
- **Formes** : Carré/Hexagone.
|
- **Formes** : Carré/Hexagone.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Case “monde” : tuile de la grille globale supportant sites fixes (zoo/ville/labo) et widgets fonctionnels (compteurs, upgrade carte). |
|
||||||
|
| Rôle | Assurer une base de navigation camion (node du graphe), afficher des informations au survol, et porter des modificateurs de traversée (biome). |
|
||||||
|
| Portée | Carte du monde, immuable structurellement (les cases persistent), contenu majoritairement fixe. |
|
||||||
|
| Contrainte | Routes et coûts de déplacement calculés à la volée (pas de cache/mémorisation) ; aucun péage/incidence silencieux (message + event). |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Survol case monde | hover | x,y | tooltip | affiche coord + type | Event `HOVER_WORLD_CASE` |
|
||||||
|
| Résoudre contenu | rendu | case | marker | type site/compteur | Event `WORLD_CASE_RENDERED` |
|
||||||
|
| Calculer coût traversée | path camion | biome | cost | multiplicateur biome | Event `WORLD_TRAVEL_COST_COMPUTED` |
|
||||||
|
| Marquer route visible | trafic | count | route flag | si trafic > seuil | Event `WORLD_ROUTE_MARKED` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Tuile + pin |
|
||||||
|
| Couleur dominante | selon biome |
|
||||||
|
| Variantes | `icon_world_tile.png`, `icon_world_pin.png` |
|
||||||
|
| États | normal, highlighted, route |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Hover | Consultation | - | survol | tooltip | - |
|
||||||
|
| Clic site | Navigation | case contient site | clic | ouvre panneau | `ZONE_NOT_EXPLORED` |
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `content.site_id` | uuid_v4 \| null | `uuid_v4` | DB | null si vide |
|
||||||
|
| `content.site_type` | enum \| null | `city` | DB | `zoo/city/lab` |
|
||||||
|
| `content.counter_type` | enum \| null | `animals_for_sale` | DB | compteur |
|
||||||
|
| `traffic.trucks_passed` | int | 0 | DB | cumul |
|
||||||
|
| `travel_cost_multiplier` | float | 1.0 | config | >=1.0 |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Trafic | 0 | count | init |
|
||||||
|
| Péage | 0 | % | par défaut |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Valeur de passage | 0 | 0..100 | influence routes |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Génération | monde | seed | cases | immuables |
|
||||||
|
| Marquage routes | trafic | count | flag | observable |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Génération monde | true | est | case existe |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | - | - | jamais |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Routes visibles | Oui | persist reset |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Orage | vitesse camion - | météo |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| montagne | cost + | traversée |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| hiver | neige | visuel |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| nuit | luminosité - | rendu |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| faune décor | 0 | visuel |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| cycle naturel | 0 | décor |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| baies | décor | région |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| proche ville | valeur passage + | monde | trafic |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | - |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| lore terrain | + | descriptif |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| frottement | vitesse - | sable |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | - |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | - |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| route pavée | +10% | upgrade |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | - |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| flux migratoire | visuel | overlay |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| péage | 1 | % | zones |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| section dupliquée | 1 | coins | conservée |
|
||||||
|
|
||||||
|
#### Dépenses (Nurseries) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| usure | 1 | coins | lore |
|
||||||
|
|
||||||
|
#### Trajet Visiteurs
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| ville | zoo | attractivité | flux |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| zoo | animaux | visite | - |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| zoo | boutiques | besoins | - |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| zoo | sortie | fin | - |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `ZONE_DISCOVERED` | reveal | coord | visible |
|
||||||
|
| `WORLD_ROUTE_MARKED` | trafic | count | route |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `HOVER_WORLD_CASE` | hover | tooltip |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `WORLD_CASE_RENDERED` | render | marker |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `WORLD_TRAVEL_COST_COMPUTED` | route | cost |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `ZONE_NOT_EXPLORED` | click | denied |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLAYER_CLICKS_SITE` | click | open |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| 1 | 1000 | route pavée +10% | speed |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `getTravelCost` | case | float | multiplicateur |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `ZONE_DISCOVERED` | Info | "Nouvelle zone découverte." | reveal |
|
||||||
|
| `ZONE_NOT_EXPLORED` | Warning | "Zone non explorée." | fog |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Explorer | trouver sites | info | tooltip sur hover |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Highlight | outline | hover |
|
||||||
|
| Tooltip | coord/type | visible |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Carte monde | cases | iso |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `carte_monde.md` | usage | world |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Hover | souris | tooltip |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `HOVER_WORLD_CASE` | hover | tooltip |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `world_exploration_loop.mp3` | monde | loop | discret |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `hover_soft.mp3` | hover | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `world_tile_highlight.png` | outline | alpha |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `biome_texture.png` | fond |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `shine_hover.webm` | hover | 0.6s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| glow | hover | léger |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `hover_white` | #FFFFFF | outline |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `world.coords` | Coordonnées X,Y | Coordinates X,Y |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Tuile | losange | iso |
|
||||||
|
|||||||
@@ -165,3 +165,454 @@ function checkAnimalDisappearance(case):
|
|||||||
- **Couleurs** : Blanc.
|
- **Couleurs** : Blanc.
|
||||||
- **Textes** : "Case [X,Y]".
|
- **Textes** : "Case [X,Y]".
|
||||||
- **Formes** : Carré.
|
- **Formes** : Carré.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Case “zoo” : spécialisation de `case_generique` avec contraintes d’occupation, métriques de visite, et signaux qualité/propreté. |
|
||||||
|
| Rôle | Supporter le gameplay de placement (animal/bâtiment), le pathfinding (walkable/cost), et la logique “animal observé” (last_visit_time). |
|
||||||
|
| Portée | Une tuile de la carte du zoo, identifiée par coordonnées, rendue en isométrie. |
|
||||||
|
| Contrainte | Mesures dérivées (heatmap, quality_score) calculées à la volée ; pas de fallback : si `content_type` incohérent => log + erreur. |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Sélectionner case | clic | x,y | menu contexte | actions selon contenu | Event `SELECT_ZOO_CASE` |
|
||||||
|
| Résoudre walkable | update terrain | content_type | `pathing.walkable` | bâtiment/animal => false (sauf exceptions) | Event `PATHING_UPDATED` |
|
||||||
|
| Mettre à jour last_visit_time | visiteur observe | visitor_id | timestamp | observe != traverse | Event `CASE_VISITED` |
|
||||||
|
| Accumuler heatmap | passage | dt | heatmap_score | 0..100 | Event `HEATMAP_UPDATED` |
|
||||||
|
| Dégrader propreté | déchets | visitor behavior | cleanliness ↓ | clamp 0..100 | Event `CASE_DIRTY` |
|
||||||
|
| Mettre à jour qualité | compat animal/terrain | biome/temp | quality_score | signaux visuels | Event `CASE_QUALITY_UPDATED` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Tuile losange + marqueur |
|
||||||
|
| Couleur dominante | dépend biome/terrain |
|
||||||
|
| Variantes | `icon_tile.png`, `icon_tile_dirty.png` |
|
||||||
|
| États | `dirty`, `fertilized`, `frozen`, `muddy` |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Construire ici | Action | case vide | menu → item → place | occupancy building | `CELL_OCCUPIED` |
|
||||||
|
| Placer animal | Action | enclos compatible | drag/drop | occupancy animal | `BIOME_INCOMPATIBLE` |
|
||||||
|
| Nettoyer | Action | sale | outil nettoyage | cleanliness ↑ | `NO_STAFF` |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
La case est actionnée via la sélection sur la carte du zoo. Le personnage contextuel attendu est le **joueur actif** (avatar) : voir `avatar_joueur.md`.
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event / Message | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `SELECT_ZOO_CASE` | clic case | avatar présent dans le panneau contexte |
|
||||||
|
| `CELL_OCCUPIED` / `BIOME_INCOMPATIBLE` | action refusée | avatar affiche la cause et l’action suivante possible |
|
||||||
|
| `CASE_DIRTY` | case sale | avatar propose CTA “Nettoyer” (si action permise) |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Le rendu du portrait/overlay suit `theme.md` et `inventaire_skins.md`.
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `last_visit_time` | timestamp \| null | - | DB | UTC |
|
||||||
|
| `visit_count_total` | int | 120 | DB | cumul |
|
||||||
|
| `visit_count_day` | int | 12 | DB | reset day |
|
||||||
|
| `heatmap_score` | float | 35.5 | calcul | 0..100 |
|
||||||
|
| `quality_score` | float | 92.0 | calcul | 0..100 |
|
||||||
|
| `pathing.walkable` | boolean | true | calcul | dépend contenu |
|
||||||
|
| `pathing.movement_cost` | float | 1.2 | config | >=1.0 |
|
||||||
|
| `zoo_specific_flags[]` | enum[] | `near_entry` | DB | - |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Propreté | 100 | pts | init |
|
||||||
|
| Fertilité | 0 | pts | init |
|
||||||
|
| Coût marche herbe | 1.2 | coef | default |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Passages | 0 | 0..∞ | heatmap |
|
||||||
|
| Qualité | 100 | 0..100 | rendu |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Création | génération map | biome | case | existe toujours |
|
||||||
|
| Occupation | placement | entity | occupancy | un principal |
|
||||||
|
| Nettoyage | action | outil | propreté ↑ | clamp |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Génération zoo | true | est | case créée |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | - | - | case persiste |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Sol fertilisé | Oui | garde bonus soft reset |
|
||||||
|
| Heatmap | Non | recalcul |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet case | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| < 0°C | flag `frozen` | givre |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| prairie | herbe repousse | nourriture |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| hiver | `snowy` | visuel |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| nuit | ombres tournent | rendu |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| buissons | +5% | proximité enclos |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| odeur | stress + | 24h in-game |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| pâturage | herbe→terre | animal broute |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| point de vue | + | 4 cases | hauteur |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| foule | stress + | densité |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| near_entry | + | premium spot |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| revêtement | vitesse ± | chemin/pavés |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| placement mode | overlay | sortie bébé |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| placement mode | overlay | sortie animal |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | - |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | neutre | - |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| cost | route | A* |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| nettoyage | 5 | coins | si sale |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| maintenance sol | 1 | coin/case | option |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| déchets | temps | min | propreté |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| passage staff | temps | min | path |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| section dupliquée | 1 | coin | conservée |
|
||||||
|
|
||||||
|
#### Dépenses (Nurseries) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| hygiène | 1 | coin | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| pâturage | 0 | - | herbe |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| quarantaine | 1 | coin | lore |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| usure | 1 | coin | lore |
|
||||||
|
|
||||||
|
#### Trajet Visiteurs
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| entrée | allées | ticket | spawn |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| allée | enclos | curiosité | observe |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| enclos | boutique | faim | achat |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| allées | sortie | budget 0 | despawn |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `CASE_DIRTY` | déchet | coord | flag |
|
||||||
|
| `PATH_BLOCKED` | obstacle | coord | reroute |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PATHING_UPDATED` | terrain | coûts |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CASE_QUALITY_UPDATED` | compat | rendu |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CASE_VISITED` | observe | last_visit_time |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `VISITOR_REROUTE` | blocage | route |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLAYER_CLEANS_TILE` | outil | propreté + |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Pavés | 250 | cost marche 1.0 | route |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `checkAnimalDisappearance` | case, now | bool | visite |
|
||||||
|
| `computeMovementCost` | terrain | float | >=1.0 |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `CASE_DIRTY` | Info | "Une case est sale." | déchet |
|
||||||
|
| `PATH_BLOCKED` | Warning | "Chemin bloqué." | reroute |
|
||||||
|
| `ANIMAL_NOT_VISITED` | Warning | "Animal non observé." | timeout |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Ouvrir menu case | agir vite | contexte | menu auto-adapté |
|
||||||
|
| Nettoyer | propreté | outil | raccourci dans menu |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Menu contextuel | actions | selon contenu |
|
||||||
|
| Highlight | outline | hover/selected |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Tuile | monde | iso |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `carte_zoo.md` | sélection | panneau |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Sélection | clic | menu |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `SELECT_ZOO_CASE` | clic | open |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `select_tile_click.mp3` | sélection | 0.2s | discret |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `select_soft.mp3` | clic | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `tile_outline.png` | highlight | overlay |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `context_menu_icon.png` | menu |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `tile_select.webm` | feedback | 0.5s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| bounce contenu | sélection | léger |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `tile_white` | #FFFFFF | outline |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `tile.coords` | Case {x},{y} | Tile {x},{y} |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Tuile | losange | iso |
|
||||||
|
|||||||
@@ -233,6 +233,25 @@ function updateResearch(center):
|
|||||||
| Consommer RP | Action | RP ≥ coût | Arbre/Carte monde → déverrouiller | unlock | `INSUFFICIENT_RESEARCH_POINTS` |
|
| Consommer RP | Action | RP ≥ coût | Arbre/Carte monde → déverrouiller | unlock | `INSUFFICIENT_RESEARCH_POINTS` |
|
||||||
| Affecter chercheurs | Action | slots < 3 | Panel centre → slots | production + | `RESEARCH_CENTER_FULL` |
|
| Affecter chercheurs | Action | slots < 3 | Panel centre → slots | production + | `RESEARCH_CENTER_FULL` |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Voir `chercheur.md`.
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
Le chercheur s’affiche lorsque :
|
||||||
|
- le module est **actionné** (ouverture du centre, affectation, collecte, upgrade) ;
|
||||||
|
- un **événement** de recherche survient (gain RP, percée, déverrouillage).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_RESEARCH` | ouverture panel | portrait + production/h + slots |
|
||||||
|
| `RESEARCH_TICK` / `RESEARCH_UNIT_GAINED` | tick | bulles science + feedback UI |
|
||||||
|
| `RESEARCH_BOOST` | percée | bulle “Percée” + détails |
|
||||||
|
| `INSUFFICIENT_RESEARCH_POINTS` | dépense refusée | bulle cause + CTA “Collecter / Attendre” |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Uniforme et accessoires suivent `theme.md` ; variantes via `inventaire_skins.md` si skins de staff.
|
||||||
|
|
||||||
## Annexes Techniques
|
## Annexes Techniques
|
||||||
|
|
||||||
### 1. Données et États (tableau détaillé)
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|||||||
@@ -53,3 +53,475 @@ Les chemins sont des cases aménagées permettant aux visiteurs et au staff de s
|
|||||||
## 1. Détails Spécifiques
|
## 1. Détails Spécifiques
|
||||||
* **Textures Connectées :** Les chemins utilisent des textures connectées (Terre, Gravier, Pavés) pour éviter les coupures nettes entre les cases.
|
* **Textures Connectées :** Les chemins utilisent des textures connectées (Terre, Gravier, Pavés) pour éviter les coupures nettes entre les cases.
|
||||||
* **Variété :** Différents types de sols disponibles (Terre, Gravier, Pavés).
|
* **Variété :** Différents types de sols disponibles (Terre, Gravier, Pavés).
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Case “chemin” : tuile de circulation sur grille isométrique, auto-connectée (auto-tiling) pour former un réseau. |
|
||||||
|
| Rôle | Supporter le pathfinding visiteurs/staff, améliorer la vitesse, et garantir la connectivité entre points d’intérêt. |
|
||||||
|
| Portée | Tuile placée sur `case_zoo`, utilisée par `visiteur` et employés. |
|
||||||
|
| Contrainte | Pas de cache/mémorisation des routes : chemins calculés à la volée (A*/Dijkstra) ; pas de fallback silencieux si réseau cassé (message + log). |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Placer chemin | action build | coord, material | tuile chemin | interdit sur case occupée | Event `PATH_PLACED` |
|
||||||
|
| Supprimer chemin | action delete | coord | tuile vide | interdit si bloque sortie (option) | Event `PATH_REMOVED` |
|
||||||
|
| Auto-tiling | placement/suppression | voisins N/E/S/W | sprite variant | recalcul local (voisinage) | Event `PATH_AUTOTILE_UPDATED` |
|
||||||
|
| Bonus vitesse | déplacement entité | type entité | speed multiplier | appliqué uniquement sur chemin | Event `PATH_SPEED_APPLIED` |
|
||||||
|
| Connectivité | navigation | graph chemins | route | route recalculée à la volée | Event `PATH_ROUTE_COMPUTED` |
|
||||||
|
| Esthétique | rendu | material + neighbors | sprite | variations (terre/gravier/pavés) | - |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Icône pavés / empreintes |
|
||||||
|
| Couleur dominante | Beige/gris selon matériau |
|
||||||
|
| Variantes | `icon_path_pavers.png`, `icon_path_footprints.png` |
|
||||||
|
| États | normal, hover, invalid (rouge) |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Construire chemin | Action | mode build | sélectionner chemin → cliquer cases | chemins posés | `CELL_OCCUPIED` |
|
||||||
|
| Choisir matériau | Action | build | dropdown | material appliqué | - |
|
||||||
|
| Supprimer | Action | mode delete | clic chemin | supprimé | `CANNOT_REMOVE_BLOCKING` |
|
||||||
|
| Prévisualiser auto-tiling | Consultation | build | survol | ghost variant | - |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Le module “Chemin” affiche prioritairement un **visiteur** (homme/femme) comme personnage contextuel (voir `visiteur.md`) afin de rendre visibles les conséquences de connectivité, de blocage et de flux.
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
Le visiteur s’affiche lorsque :
|
||||||
|
- le module est **actionné** (entrée en mode build chemins, pose/suppression, sélection matériau) ;
|
||||||
|
- un **événement** lié à la connectivité survient (route recalculée, blocage d’accès, saturation locale).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event / Message | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `ENTER_PATH_BUILD_MODE` | activation build | portrait visiteur + rappel “connectivité” |
|
||||||
|
| `CELL_OCCUPIED` | pose invalide | bulle : cause (case occupée) |
|
||||||
|
| `CANNOT_REMOVE_BLOCKING` | suppression bloquante | bulle : cause (accès bloqué) + CTA annuler |
|
||||||
|
| `PATH_ROUTE_COMPUTED` | route recalculée | bulle : “Itinéraire mis à jour” (info) |
|
||||||
|
|
||||||
|
### Interactions utilisateur
|
||||||
|
- Clic sur le personnage : ouvre le panneau “connectivité”/aide du mode chemin (si présent) ou met en surbrillance les zones impactées (entrée, POI).
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Le visiteur suit `theme.md`. Les variantes homme/femme sont des skins/variantes de visiteurs (voir `visiteur.md` + `inventaire_skins.md` si les visiteurs sont skinnables).
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `type` | string | `path` | DB | constant |
|
||||||
|
| `material` | string | `gravel` | DB/config | enum |
|
||||||
|
| `grid.x` | int | 10 | DB | coord |
|
||||||
|
| `grid.y` | int | 12 | DB | coord |
|
||||||
|
| `connected_neighbors` | string[] | `["N","S","E"]` | calcul | à la volée |
|
||||||
|
| `iso_x` | int | 120 | calcul/DB | rendu |
|
||||||
|
| `iso_y` | int | 88 | calcul/DB | rendu |
|
||||||
|
| `z_index` | int | 12088 | calcul | profondeur |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Bonus vitesse visiteurs | 1.15 | coef | sur chemin |
|
||||||
|
| Bonus vitesse staff | 1.25 | coef | sur chemin |
|
||||||
|
| Coût pose | 1 | coins | par tuile (exemple) |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Connectivité | 0 | 0..100 | accessibilité |
|
||||||
|
| Chemins posés | 0 | 0..∞ | progression build |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Apparition | build | coord | path | autotile local |
|
||||||
|
| Mise à jour | voisin change | voisins | sprite | cohérence |
|
||||||
|
| Disparition | delete | coord | vide | graph maj |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Achat/placement | true | est | chemin créé |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Suppression | true | est | chemin retiré |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Matériau | Oui | persiste sur tuile |
|
||||||
|
| Connectivité | Non | recalcul à la volée |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet chemin | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Neige | visuel + glissant léger | option saisonnière |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet chemin | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Boue | vitesse - si pas pavés | material “terre” |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet chemin | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Hiver | variante sprite | neige |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet chemin | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Nuit | éclairage lampadaires | via objets |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | - |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Embouteillage | risque incidents | trop dense |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Accès boutiques | consommation ↑ | chemin connecte |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Chemins propres | + | zoo | esthétique |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Passage trop proche | stress + | enclos sans barrière |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Pavés premium | + | cosmétique |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Itinéraire camion | préfère chemins | si autorisé |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Accès nurserie | temps staff - | chemin connecté |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| File visiteurs | plus fluide | chemin large |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Staff | déplacement + | chemin |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Visiteurs | vitesse + | chemin |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Maintenance | 1 | coins / tuile / jour | option |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Temps déplacement | - | min | chemins |
|
||||||
|
|
||||||
|
#### 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 |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### 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 | ouverture | route |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Allée | Enclos | curiosité | route |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Enclos | Boutique | besoin | route |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Billetterie | Allées | entrée | flux |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `PATH_PLACED` | build | coord, material | tuile |
|
||||||
|
| `PATH_REMOVED` | delete | coord | tuile |
|
||||||
|
| `PATH_AUTOTILE_UPDATED` | voisin | coord | sprite |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PATH_ROUTE_COMPUTED` | visite | route | navigation |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `VISITOR_MOVES` | tick | speed bonus |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLAYER_BUILDS_PATH` | build | réseau |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Terre | 0 | base | - |
|
||||||
|
| Gravier | 100 | vitesse + | matériau |
|
||||||
|
| Pavés | 250 | vitesse ++ | matériau |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `computeNeighborsMask` | grid, coord | mask | N/E/S/W |
|
||||||
|
| `selectAutotileVariant` | material, mask | sprite_id | atlas |
|
||||||
|
| `computeSpeedMultiplier` | entity, tile | float | sur chemin |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `CELL_OCCUPIED` | Warning | "Case occupée." | placement |
|
||||||
|
| `CANNOT_REMOVE_BLOCKING` | Warning | "Suppression impossible : bloque un accès." | option |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Tracer une allée | connecter zones | répétition | drag paint “pinceau” |
|
||||||
|
| Changer matériau | esthétique | navigation | quick switch |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Palette matériaux | terre/gravier/pavés | actif |
|
||||||
|
| Curseur pinceau | taille 1..3 | preview |
|
||||||
|
| Ghost tile | variant | valid/invalid |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Mode build | barre | accès direct |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `visiteur.md` | pathfinding | routes |
|
||||||
|
| `zoo.md` | grille | coords |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Construire | build → chemin | pinceau |
|
||||||
|
| Supprimer | build → delete | gomme |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `ENTER_PATH_BUILD_MODE` | clic | palette |
|
||||||
|
| `PAINT_PATH` | drag | pose |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `build_mode_loop.mp3` | build | loop | discret |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `path_place.mp3` | pose | bas |
|
||||||
|
| `path_remove.mp3` | retrait | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `path_autotile_atlas.png` | sprites | atlas |
|
||||||
|
| `path_preview_overlay.png` | ghost | alpha |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `path_material_icon_set.png` | palette |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `path_paint.webm` | tuto | 2.0s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| sparkle pavés | hover | subtil |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `path_beige` | #D7C7A4 | terre |
|
||||||
|
| `path_gray` | #9E9E9E | pavés |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `path.title` | Chemin | Path |
|
||||||
|
| `path.material` | Matériau | Material |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Palette | rectangles | clairs |
|
||||||
|
|||||||
57
docs/specs/guichetiere.md
Normal file
57
docs/specs/guichetiere.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Guichetière (Billetterie)
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Personnage de service associé à la billetterie. Il matérialise la vente de tickets (file, contrôle capacité) et sert de personnage contextuel lors des événements d’entrée/saturation/VIP.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Traitement file** : Représente le débit du guichet (entrées par tick).
|
||||||
|
* **Gestion saturation** : Signale `ZOO_FULL`, `QUEUE_LONG`.
|
||||||
|
* **Accueil visiteurs** : Déclenche des feedbacks visuels cohérents avec le thème.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Ticket + tampon.
|
||||||
|
* **Couleur dominante :** Rouge (ticket) + or (pièces).
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Clic billetterie** : ouvre le panneau stats (prix, capacité, file).
|
||||||
|
* **Clic sur alerte** : deep-link vers la billetterie et met en avant la cause (capacité, file).
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"employee_id": "ticket_clerk_01",
|
||||||
|
"type": "guichetiere",
|
||||||
|
"name": "Nina",
|
||||||
|
"salary": 0,
|
||||||
|
"hire_cost": 0,
|
||||||
|
"assigned_building": "ticket_booth_uuid",
|
||||||
|
"state": "enum (IDLE, SELLING, VIP_PROCESS, OVERLOADED)",
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Le personnage est lié à la `billeterie.md` (bâtiment fixe).
|
||||||
|
* Les événements `ZOO_FULL` et `QUEUE_LONG` déclenchent une UI explicite (pas de fallback).
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
- **Billetterie** (`billeterie.md`) : clic panneau, saturation, file longue, arrivée bus VIP.
|
||||||
|
- **Chemins** (`chemin.md`) : si la suppression de chemins casse l’accès entrée (erreur `CANNOT_REMOVE_BLOCKING`), la guichetière peut être le personnage contextuel du problème “entrée inaccessible”.
|
||||||
|
|
||||||
|
## Skins & thèmes
|
||||||
|
* Uniforme/guichet dépend du thème (`theme.md`).
|
||||||
|
* Accessoires (casquette, badge, ticket) via `skin.md` / `inventaire_skins.md` si activé.
|
||||||
@@ -120,3 +120,483 @@ function getBabyBonus(baby):
|
|||||||
- **Couleurs** : Identiques Adulte.
|
- **Couleurs** : Identiques Adulte.
|
||||||
- **Textes** : "Bébé".
|
- **Textes** : "Bébé".
|
||||||
- **Formes** : Rond.
|
- **Formes** : Rond.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Inventaire/registre des variantes “bébé” par espèce (mapping adulte → bébé), et vue de gestion des bébés possédés (nurserie + zoo). |
|
||||||
|
| Rôle | Permettre l’identification visuelle, l’accès rapide aux fiches bébés, et l’affichage des signaux de risque (froid, faim, biome) sans masquer l’état. |
|
||||||
|
| Portée | Catalogue (par type d’animal) + instances (bébés présents) dans un zoo. |
|
||||||
|
| Contrainte | Aucun compteur de vues/revenus par bébé (pas d’analytics) ; calculs et filtres à la volée, sans cache/mémorisation. |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Résoudre variante bébé | rendu / fiche | `species_id` | `baby_sprite_set_id` | 1 adulte → 1 bébé, stable | Log si sprite manquant |
|
||||||
|
| Lister bébés possédés | ouverture inventaire | `zoo_id` | liste | tri stable (danger > croissance > rareté) | Event `OPEN_BABY_INVENTORY` |
|
||||||
|
| Filtrer “en danger” | toggle UI | états (temp, faim, santé) | sous-liste | critères explicites (seuils) | Event `FILTER_BABY_DANGER` |
|
||||||
|
| Afficher potentiel génétique | fiche bébé | genetics | étoiles grises | informatif, non “best-effort” | Event `BABY_GENETIC_VIEWED` |
|
||||||
|
| Deep-link vers bébé | notif/slot | `animal_id` | navigation | ouvre nurserie/zoom case | Event `NAVIGATE_TO_BABY` |
|
||||||
|
| Calculer bonus mignonnerie | tick logique | nb bébés distincts | mod boutique | bonus borné, condition “simultané” | Event `CUTE_BONUS_APPLIED` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Icône tétine/biberon + badge “B” |
|
||||||
|
| Couleur dominante | Pastel (selon thème) |
|
||||||
|
| Variantes | `icon_baby.png`, `icon_bottle.png`, `icon_pacifier.png` |
|
||||||
|
| États | `danger_cold` (flocon), `danger_hunger` (biberon), `sleeping` (zzz) |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Ouvrir inventaire bébés | Consultation | - | menu inventaire → bébés | liste affichée | - |
|
||||||
|
| Ouvrir fiche bébé | Consultation | bébé listé | clic ligne | panneau détail | `BABY_NOT_FOUND` |
|
||||||
|
| Filtrer “en danger” | Consultation | - | toggle | liste filtrée | - |
|
||||||
|
| Aller au bébé | Navigation | position/slot connu | bouton “Voir” | zoom + focus | `LOCATION_UNAVAILABLE` |
|
||||||
|
| Comparer adulte/bébé | Consultation | espèce connue | onglet | mapping visible | - |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Voir `nurse.md`.
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
La nurse s’affiche lorsque :
|
||||||
|
- le module est **actionné** (ouverture inventaire, filtre danger, navigation “Voir bébé”) ;
|
||||||
|
- un **événement** de bébé survient (naissance, danger, passage adulte).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_BABY_INVENTORY` | ouverture | portrait nurse + rappel des priorités “danger” |
|
||||||
|
| `FILTER_BABY_DANGER` | toggle | bulle “Liste filtrée” + critères |
|
||||||
|
| `BABY_BORN` | naissance | bulle “Nouveau bébé” + CTA “Voir” |
|
||||||
|
| `BABY_DANGER` / `BABY_CRITICAL` | danger | bulle “Urgence” + CTA deep-link |
|
||||||
|
| `BABY_BECAME_ADULT` | transition | bulle “Devenu adulte” + CTA “Voir adulte” |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Palette et accessoires suivent `theme.md` ; la nurse peut être skinnable via `inventaire_skins.md` (si des skins de staff existent).
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `catalog.species_id` | string | `PANDA` | DB | enum |
|
||||||
|
| `catalog.baby_sprite_set_id` | string | `PANDA_BABY_SET` | assets | requis |
|
||||||
|
| `catalog.scale_factor` | float | 0.5 | config | 0.3..0.7 |
|
||||||
|
| `catalog.name_key` | string | `baby.PANDA` | i18n | FR/EN |
|
||||||
|
| `catalog.badges` | string[] | `["B"]` | config | - |
|
||||||
|
| `instance.animal_id` | uuid_v4 | `uuid_v4` | DB | - |
|
||||||
|
| `instance.nurserie_id` | uuid_v4 \| null | `uuid_v4` | DB | - |
|
||||||
|
| `instance.iso_x` | int \| null | 120 | DB | null si nurserie |
|
||||||
|
| `instance.iso_y` | int \| null | 88 | DB | null si nurserie |
|
||||||
|
| `instance.growth_progress` | float | 42.0 | DB | 0..100 |
|
||||||
|
| `instance.danger_flags` | string[] | `["COLD","HUNGER"]` | calcul | à la volée |
|
||||||
|
| `timestamps.updated_at` | timestamp | - | DB | UTC |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Compteur bébés | 0 | count | par zoo |
|
||||||
|
| Score maternité | 0 | points | indicateur interne |
|
||||||
|
| Bonus mignonnerie | 0 | % | dépend diversité |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Diversité bébés | 0 | 0..∞ | bonus boutique “peluches” |
|
||||||
|
| Taux bébés en danger | 0% | 0..100% | gestion, pas d’analytics |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Apparition | naissance/achat œuf | espèce | bébé | mapping stable |
|
||||||
|
| Suivi | ouverture inventaire | zoo_id | liste | tri stable |
|
||||||
|
| Disparition | croissance/mort | animal | retiré de la vue bébés | historique conservé |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Naissance | true | est | bébé apparaît |
|
||||||
|
| Achat œuf | true | est | futur bébé (à éclosion) |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Croissance | 100 | >= | bascule “adulte” |
|
||||||
|
| Mort | 0 santé | <= | retiré |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Lien parents | Oui | fiche bébé → parents |
|
||||||
|
| Potentiel | Oui | affichage étoiles grises |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet inventaire | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Froid/chaud | flag + icône flocon/soleil | clignote si critique |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet inventaire | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Incompatible | filtre “en danger” | signal fort |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet inventaire | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Printemps | mise en avant naissances | tri optionnel |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet inventaire | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Nuit | état “Dort” | zzz |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Bébé | 0 | non reproductible |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Historique | tag “mort en bas âge” | informatif |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Faim | icône biberon | seuil faim |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Diversité bébés ≥ 10 | + | - | bonus boutique peluches |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Potentiel | affichage estimé | basé génétique |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Croissance | barre temps réel | refresh à la volée |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Vedette | indicateur | bébé le plus consulté en jeu, sans analytics |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Peluches | +5% ventes | % | diversité bébés ≥ 10 |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Soins | estimation | coins | selon bébés malades |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Interventions | + | min | bébés en danger |
|
||||||
|
|
||||||
|
#### 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 |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Slots | variable | coins | niveau |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Rations bébé | + | coins | métabolisme |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### 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 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Entrée | Bébé vedette | signal “mignonnerie” | route |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Bébé vedette | Boutique peluches | bonus actif | achat |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `OPEN_BABY_INVENTORY` | menu | - | UI |
|
||||||
|
| `FILTER_BABY_DANGER` | toggle | flags | UI |
|
||||||
|
| `NAVIGATE_TO_BABY` | clic | `animal_id` | zoom |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `BABY_MARKER_SHOW` | map open | marker |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `CLICK_BABY` | clic | panneau |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLAYER_OPENS_BABY_INVENTORY` | menu | UI |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Nurserie 1 | 0 | slots base | gestion |
|
||||||
|
| Nurserie 3 | 400 | vitrine | nouveaux signaux |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `getBabyBonus` | baby | float | attractivité |
|
||||||
|
| `computeDangerFlags` | baby, env | string[] | à la volée |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `BABY_BORN` | Info | "Un nouveau bébé est né." | naissance |
|
||||||
|
| `BABY_DANGER` | Warning | "Un bébé est en danger." | flags |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Trouver bébés | suivi | dispersion | filtre danger + tri |
|
||||||
|
| Ouvrir fiche | actions | navigation | clic ligne + bouton voir |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Liste bébés | lignes + icônes | normal/danger |
|
||||||
|
| Badges danger | flocon/biberon/zzz | clignotant critique |
|
||||||
|
| Panneau détail | génétique + croissance | actions |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Inventaire | menu | registre |
|
||||||
|
| Nurserie | slots | deep-link |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `bebe_animal.md` | états bébé | flags |
|
||||||
|
| `nurserie.md` | slots | navigation |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Ouvrir | menu → bébés | liste |
|
||||||
|
| Filtrer danger | toggle | tri |
|
||||||
|
| Voir bébé | bouton | zoom |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_BABY_INVENTORY` | menu | UI |
|
||||||
|
| `CLICK_BABY_ROW` | clic | panneau |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `baby_inventory_loop.mp3` | inventaire | loop | doux |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `ui_toggle.mp3` | filtre | bas |
|
||||||
|
| `baby_chirp_01.mp3` | survol | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `baby_badge_b.png` | badge | lisible |
|
||||||
|
| `baby_flag_cold.png` | flocon | contraste |
|
||||||
|
| `baby_flag_hunger.png` | biberon | contraste |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `baby_list_bg.png` | fond liste |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `baby_steps.webm` | décoratif | 1.5s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| clignotement danger | critique | 0.6s |
|
||||||
|
| bounce badge | apparition | 0.4s |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `baby_pastel` | #A7D8FF | UI |
|
||||||
|
| `baby_danger` | #D32F2F | alerte |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `baby.inventory.title` | Bébés | Babies |
|
||||||
|
| `baby.inventory.danger` | En danger | In danger |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Ligne | rectangle arrondi | lisible |
|
||||||
|
| Badge | rond | constant |
|
||||||
|
|||||||
@@ -59,3 +59,473 @@ Interface de gestion permettant au joueur de visualiser, trier et équiper les
|
|||||||
* **Interactions** :
|
* **Interactions** :
|
||||||
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner.
|
* **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.
|
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Inventaire “Skins” : vue de possession + équipement de cosmétiques (avatar et zoo). |
|
||||||
|
| Rôle | Donner un accès rapide à l’équipement, au filtrage, et à la prévisualisation sans étapes inutiles. |
|
||||||
|
| Portée | UI profil/boutique ; impact avatar, bâtiments, décorations. |
|
||||||
|
| Contrainte | Pas de cache/mémorisation : état “équipé” lu comme source de vérité ; pas d’analytics ; aucune suppression/vente implicite. |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Ouvrir inventaire | menu | `player_id` | page/grille | affiche items possédés + grisés | Event `OPEN_SKIN_INVENTORY` |
|
||||||
|
| Filtrer | UI | catégorie/thème/rareté | liste filtrée | filtres combinables | Event `FILTER_SKINS` |
|
||||||
|
| Trier | UI | critère | liste triée | stable | Event `SORT_SKINS` |
|
||||||
|
| Prévisualiser | clic item | `item_id` | preview | paper doll / rendu zoo | Event `PREVIEW_SKIN` |
|
||||||
|
| Équiper | clic “Équiper” | `item_id`, slot | `is_equipped=true` | un item équipé par slot | Event `EQUIP_SKIN` |
|
||||||
|
| Déséquiper | clic “Retirer” | slot | `is_equipped=false` | revient au skin de base explicite | Event `UNEQUIP_SKIN` |
|
||||||
|
| Synchroniser après achat | achat | receipt | inventaire maj | immédiat, sans cache | Event `SKIN_ACQUIRED` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Cintre / coffre |
|
||||||
|
| Couleur dominante | Marron + or |
|
||||||
|
| Variantes | `icon_skin_hanger.png`, `icon_skin_chest.png` |
|
||||||
|
| États | normal, selected, disabled (non possédé) |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Ouvrir | Navigation | - | profil → skins | grille | - |
|
||||||
|
| Équiper item | Action | possédé | clic item → équiper | appliqué | `SKIN_NOT_OWNED` |
|
||||||
|
| Prévisualiser | Consultation | - | clic item | preview | - |
|
||||||
|
| Filtrer | Consultation | - | toggles | liste | - |
|
||||||
|
| Drag & drop | Action | option active | drag → drop | équipe | `DROP_INVALID` |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Le module “Inventaire Skins” affiche le **joueur actif** via son avatar (voir `avatar_joueur.md`) comme personnage contextuel.
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
L’avatar s’affiche lorsque :
|
||||||
|
- le module est **actionné** (ouverture inventaire, sélection d’un item, équipement/déséquipement) ;
|
||||||
|
- un **événement** lié aux skins survient (acquisition, équipement réussi/échoué).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_SKIN_INVENTORY` | ouverture | avatar/paper doll visible, cohérent avec l’équipement courant |
|
||||||
|
| `PREVIEW_SKIN` | clic item | l’avatar adopte la prévisualisation (paper doll) |
|
||||||
|
| `EQUIP_SKIN` / `UNEQUIP_SKIN` | action | feedback visuel sur l’avatar + message |
|
||||||
|
| `SKIN_ACQUIRED` | achat/gain | bulle “Nouveau skin” + CTA “Équiper” |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Le module applique `theme.md` et l’équipement de `inventaire_skins.md` sur l’avatar, sans inférer silencieusement un skin “par défaut”.
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `inventory_id` | string | `inv_skins_<player_id>` | DB | stable |
|
||||||
|
| `items[].item_id` | string | `skin_hat_01` | DB | id unique |
|
||||||
|
| `items[].acquired_at` | timestamp | - | DB | UTC |
|
||||||
|
| `items[].is_equipped` | boolean | true | DB | par slot |
|
||||||
|
| `items[].slot` | string | `HAT` | DB | enum |
|
||||||
|
| `items[].theme` | string | `JUNGLE` | config | enum |
|
||||||
|
| `items[].rarity` | string | `RARE` | config | enum |
|
||||||
|
| `capacity` | string \| int | `unlimited` | config | pas de limite par défaut |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Capacité | illimitée | - | règle existante |
|
||||||
|
| Slots avatar | 6 | count | ex: hat, top, bottom, shoes, accessory, back |
|
||||||
|
| Slots zoo | 8 | count | ex: sol, clôture, portes, UI, etc. |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Skins possédés | 0 | 0..∞ | collection |
|
||||||
|
| Skins équipés | 0 | 0..slots | rendu |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Acquisition | achat/gain | item_id | inventaire +1 | pas de doublon |
|
||||||
|
| Équipement | action | slot | is_equipped | exclusivité slot |
|
||||||
|
| Déséquipement | action | slot | base | base explicite |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Achat skin | true | est | item ajouté |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | - | - | pas de suppression |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Inventaire | Oui | persiste compte |
|
||||||
|
| Équipement | Oui | persiste par profil |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | cosmétique |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | - |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Saison active | skins saisonniers visibles | gating |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | - |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | - |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | - |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | - |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Skins zoo | + | zoo | esthétique |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Collection | + | complétude |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### 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 |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### 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 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `OPEN_SKIN_INVENTORY` | menu | - | UI |
|
||||||
|
| `EQUIP_SKIN` | clic | item_id, slot | équipé |
|
||||||
|
| `UNEQUIP_SKIN` | clic | slot | base |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `FILTER_SKINS` | toggle | UI |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| 1 | 0 | inventaire dispo | - |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `equipSkin` | item, slot | state | exclusif slot |
|
||||||
|
| `filterSkins` | list, filters | list | combinable |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `SKIN_NOT_OWNED` | Warning | "Skin non possédé." | équiper |
|
||||||
|
| `SKIN_EQUIPPED` | Info | "Skin équipé." | succès |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Équiper avatar | personnaliser | navigation | paper doll + bouton direct |
|
||||||
|
| Équiper zoo | thème | sélection | filtres |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Grille | items | owned/missing |
|
||||||
|
| Paper doll | preview | slot highlight |
|
||||||
|
| Bouton équiper | CTA | enabled/disabled |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Profil | onglet skins | - |
|
||||||
|
| Boutique | lien | - |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `skin.md` | definition item | ids cohérents |
|
||||||
|
| `avatar_joueur.md` | rendu avatar | slots |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Ouvrir | profil → skins | grille |
|
||||||
|
| Équiper | item → CTA | appliqué |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_SKIN_INVENTORY` | menu | UI |
|
||||||
|
| `CLICK_EQUIP` | CTA | équipe |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `skins_inventory_loop.mp3` | inventaire | loop | neutre |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `ui_equip.mp3` | équiper | bas |
|
||||||
|
| `ui_unequip.mp3` | retirer | bas |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `paper_doll_frame.png` | preview | scalable |
|
||||||
|
| `skin_item_tile.png` | tuile | grille |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `skin_missing_overlay.png` | grisé |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `equip_fx.webm` | feedback | 0.6s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| glow item | hover | 0.2s |
|
||||||
|
| bounce CTA | success | 0.3s |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `skins_gold` | #D4AF37 | rareté |
|
||||||
|
| `skins_brown` | #6D4C41 | fond |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `skins.title` | Skins | Skins |
|
||||||
|
| `skins.equip` | Équiper | Equip |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Tuiles | rectangles arrondis | lisibles |
|
||||||
|
|||||||
@@ -3,6 +3,17 @@
|
|||||||
## Définition
|
## Définition
|
||||||
L'utilisateur humain.
|
L'utilisateur humain.
|
||||||
|
|
||||||
|
## Variantes de représentation
|
||||||
|
### Joueur actif
|
||||||
|
Le joueur actif est représenté par :
|
||||||
|
- **un profil** (pseudo, progression, paramètres) ;
|
||||||
|
- **un avatar personnalisable** (genre, skins, titres) : voir `avatar_joueur.md` et `inventaire_skins.md`.
|
||||||
|
|
||||||
|
### Autres joueurs
|
||||||
|
Les autres joueurs (humains) peuvent être représentés dans des modules sociaux (carte monde, visite, classements) par :
|
||||||
|
- un **portrait/mini-avatar** cohérent avec leurs skins (si le profil requis n’est pas accessible, afficher un état verrouillé explicite, pas de dégradation silencieuse) ;
|
||||||
|
- un **pseudo** et des indicateurs de progression (niveau, réputation) selon les règles du module.
|
||||||
|
|
||||||
## Propriétés
|
## Propriétés
|
||||||
- **Compte** : Authentifié par clé privée (pas de mot de passe).
|
- **Compte** : Authentifié par clé privée (pas de mot de passe).
|
||||||
- **Ressources** : Pièces, Unités de recherche.
|
- **Ressources** : Pièces, Unités de recherche.
|
||||||
|
|||||||
51
docs/specs/laborantin.md
Normal file
51
docs/specs/laborantin.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Laborantin (Laboratoire — carte monde)
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Personnage de service associé au site “Laboratoire” sur la carte du monde. Il présente les offres rares, les services d’analyse/synthèse et sert de personnage contextuel lors des événements du laboratoire.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Accueil labo** : Introduit les onglets “Offres” et “Services” et le gating (niveau/réputation).
|
||||||
|
* **Analyse** : Affiche l’état d’une analyse génétique (en cours/terminée/échec) avec cause explicite.
|
||||||
|
* **Synthèse** : Affiche l’état d’une synthèse (succès/échec) et la traçabilité (seed, fiabilité, rareté).
|
||||||
|
* **Alerte sécurité** : Personnage contextuel d’un `LAB_SECURITY_ALERT`.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Éprouvette + brin ADN.
|
||||||
|
* **Couleur dominante :** Cyan néon / indigo (hérite du site labo).
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Ouverture labo** : clic sur POI laboratoire.
|
||||||
|
* **Achat offre** : drag offre → camion (le laborantin valide l’achat et affiche le reçu).
|
||||||
|
* **Consultation rapport** : clic “Voir rapport”.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"npc_id": "lab_tech_01",
|
||||||
|
"type": "laborantin",
|
||||||
|
"name": "Iris",
|
||||||
|
"assigned_site": "lab_site_uuid",
|
||||||
|
"state": "enum (IDLE, PRESENTING, ANALYZING, SYNTHESIZING, ALERT)",
|
||||||
|
"theme_variant": "string"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Le laborantin est **lié** au `laboratoire.md` (site carte monde).
|
||||||
|
* Les erreurs doivent être explicitement remontées : `LAB_LOCKED_REPUTATION`, `ANALYSIS_FAILED`, `LAB_SECURITY_ALERT`, etc.
|
||||||
|
|
||||||
|
# Annexes UX/UI
|
||||||
|
|
||||||
|
## 0. Direction Artistique & Vue
|
||||||
|
* **Style** : Néon / techno, cohérent avec `laboratoire.md`.
|
||||||
|
* **Rendu** : Portrait + bulles d’état dans la modal labo ; pas nécessairement un sprite sur la carte monde.
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
- **Laboratoire** (`laboratoire.md`) : nouvelles offres, analyse terminée, synthèse terminée, alerte sécurité, fermeture temporaire.
|
||||||
|
- **Camion** (`camion.md`) : au moment de l’achat (drag) si le labo refuse (gating/stock/fonds).
|
||||||
|
|
||||||
|
## Skins & thèmes
|
||||||
|
* Palette et décor dérivent du thème (`theme.md`), avec variante “tech” du site.
|
||||||
|
* Accessoires (lunettes, badge, gants) via skins (`inventaire_skins.md`) si activé.
|
||||||
@@ -20,6 +20,27 @@ Microscope stylisé bleu néon sur fond sombre, évoquant la haute technologie.
|
|||||||
| Joueur | Glisser-Déposer | Offre (Animal) vers Camion | Achète l'animal et lance le transport vers le zoo. |
|
| Joueur | Glisser-Déposer | Offre (Animal) vers Camion | Achète l'animal et lance le transport vers le zoo. |
|
||||||
| Joueur | Sélectionner | Animal du Zoo | Lance une analyse génétique (si le labo est débloqué). |
|
| Joueur | Sélectionner | Animal du Zoo | Lance une analyse génétique (si le labo est débloqué). |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Voir `laborantin.md`.
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
Le laborantin s’affiche lorsque :
|
||||||
|
- le module est **actionné** (ouverture du labo, survol/prévisualisation d’une offre, achat, lancement d’analyse/synthèse) ;
|
||||||
|
- un **événement** du laboratoire survient (nouvelles offres, analyse/synthèse terminée, alerte sécurité, fermeture temporaire).
|
||||||
|
|
||||||
|
### Déclencheurs (événements)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_LAB_SITE` | clic POI | portrait + état (ouvert/fermé) + onglets |
|
||||||
|
| `LAB_OFFERS_GENERATED` | refresh TTL | bulle “Nouvelles offres” + CTA “Voir offres” |
|
||||||
|
| `LAB_OFFER_PURCHASED` | achat validé | reçu + rappel livraison camion |
|
||||||
|
| `LAB_ANALYSIS_COMPLETED` | analyse terminée | CTA “Voir rapport” |
|
||||||
|
| `LAB_SYNTHESIS_DONE` | synthèse terminée | résultat + CTA “Voir spécimen” |
|
||||||
|
| `LAB_SECURITY_ALERT` | incident | bulle alerte + CTA “Voir état” |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Palette et accessoires suivent `theme.md` (variante “tech”) et `inventaire_skins.md` si activé.
|
||||||
|
|
||||||
## Annexes Techniques
|
## Annexes Techniques
|
||||||
|
|
||||||
### 1. Données et États
|
### 1. Données et États
|
||||||
@@ -383,3 +404,481 @@ Microscope stylisé bleu néon sur fond sombre, évoquant la haute technologie.
|
|||||||
| Forme | Usage | Style Bordure |
|
| Forme | Usage | Style Bordure |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Hexagone | Icônes, Boutons | Solid 2px |
|
| Hexagone | Icônes, Boutons | Solid 2px |
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Site “Laboratoire” (carte monde) : POI de recherche, offres rares, analyses génétiques et synthèse/clonage (fonctionnalité avancée). |
|
||||||
|
| Rôle | Fournir un point d’accès à des animaux/offres exclusives et à des services de science (analyse traits cachés, création), avec gating réputation/niveau. |
|
||||||
|
| Portée | Site externe (world map) + interface de services ; interactions avec `camion` (transport) et `centre_recherche` (recherche). |
|
||||||
|
| Contrainte | Pas de cache/mémorisation : offres et résultats calculés à la volée (seed explicitée) ; pas de fallback silencieux sur échec (erreur + log + message). |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Ouvrir labo | clic POI | `site_id` | modal | liste offres + services | Event `OPEN_LAB_SITE` |
|
||||||
|
| Générer offres | refresh/expiration | `lab_level`, seed | offres | TTL 24h, remplacement complet | Event `LAB_OFFERS_GENERATED` |
|
||||||
|
| Acheter une offre | drag vers camion | `offer_id`, funds | cargo camion | transaction atomique | Event `LAB_OFFER_PURCHASED` |
|
||||||
|
| Analyse génétique | sélectionner animal | `animal_id`, fee | rapport | révèle traits selon fiabilité | Event `LAB_ANALYSIS_COMPLETED` |
|
||||||
|
| Synthèse/clonage | action | fragments, fee, time | nouvel animal | fiabilité vs rareté => succès/échec | Event `LAB_SYNTHESIS_DONE` |
|
||||||
|
| Fermer temporairement | incident | sécurité < seuil | site fermé | cooldown 24h/48h | Event `LAB_CLOSED_TEMP` |
|
||||||
|
| Visite publique | jour | module visite | attractivité + | visiteurs/flux | Event `LAB_PUBLIC_VISIT` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Microscope néon + brin ADN |
|
||||||
|
| Couleur dominante | Cyan néon (#00FFFF) + indigo (#202040) |
|
||||||
|
| Variantes | `icon_lab.png`, `icon_lab_microscope.png` |
|
||||||
|
| États | `open`, `closed`, `new_offers`, `security_alert` |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Consulter offres | Consultation | réputation ok | clic labo | modal offres | `LAB_LOCKED_REPUTATION` |
|
||||||
|
| Acheter | Action | fonds ok + camion idle | drag offre → camion | mission camion | `NOT_ENOUGH_COINS`, `TRUCK_BUSY` |
|
||||||
|
| Lancer analyse | Action | animal sélectionné | choisir animal → payer | rapport | `ANALYSIS_FAILED` |
|
||||||
|
| Lancer synthèse | Action | fragments | synthétiser → confirmer | file synthèse | `NOT_ENOUGH_FRAGMENTS` |
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `site_id` | uuid_v4 | `uuid_v4` | DB | - |
|
||||||
|
| `site_type` | string | `lab_site` | DB | constant |
|
||||||
|
| `lab_level` | int | 1 | DB | 1..3 (ex) |
|
||||||
|
| `requires.reputation_min` | int | 500 | config | gating |
|
||||||
|
| `offers[].offer_id` | uuid_v4 | `uuid_v4` | DB | unique |
|
||||||
|
| `offers[].expires_at` | timestamp | - | DB | UTC |
|
||||||
|
| `offers[].item_type` | string | `egg` | DB | `egg/baby/animal` |
|
||||||
|
| `offers[].species_id` | string | `MAMMOTH` | DB | enum |
|
||||||
|
| `offers[].price.coins` | int | 20000 | DB | >=0 |
|
||||||
|
| `scores.reliability` | float | 0.9 | config | 0..1 |
|
||||||
|
| `scores.prestige` | int | 10 | config | 0..100 |
|
||||||
|
| `state.is_open` | boolean | true | DB | fermeture temp |
|
||||||
|
| `state.closed_until` | timestamp \| null | - | DB | UTC |
|
||||||
|
| `rng.seed` | string | `lab_offer_seed` | DB | auditable |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Niveau tech | 1 | int | offres |
|
||||||
|
| Slots offres | 3 | count | simultané |
|
||||||
|
| Réputation requise | 500 | pts | gating |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Fiabilité | 90% | 0..100% | succès |
|
||||||
|
| Prestige | 10 | 0..100 | rareté |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Découverte | exploration | zone | POI visible | persiste |
|
||||||
|
| Interactif | niveau joueur | >=5 | UI active | gating réputation |
|
||||||
|
| Refresh offres | 24h | seed | nouveaux items | TTL |
|
||||||
|
| Fermeture | incident | sécurité | closed_until | observable |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Exploration carte | zone “Ville/Industrie” | est | POI découvert |
|
||||||
|
| Niveau joueur | 5 | >= | interactif |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Faillite labo | événement | est | fermeture 24h |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Traits clonés | Oui | 99% + instabilité 1% |
|
||||||
|
| Analyses | Oui | rapports conservés |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet labo | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| < 0°C | durée synthèse +20% | machines |
|
||||||
|
| > 35°C | coût énergie +15% | surchauffe |
|
||||||
|
| 20°C | vitesse +5% | optimal |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Urbain | aucun | nominal |
|
||||||
|
| Toundra | maintenance +10% | chauffage |
|
||||||
|
| Désert | maintenance +20% | clim |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Hiver | rareté froid +10% | offers |
|
||||||
|
| Été | rareté chaud +10% | offers |
|
||||||
|
| Printemps | offres +1 | bébés |
|
||||||
|
| Automne | coût analyse -10% | maladies |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Jour | ouvert au public | enseignes |
|
||||||
|
| Nuit | recherche intensive | offres “sombres” |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Fertilité assistée | +20% | recherche débloquée |
|
||||||
|
| Clonage | reproduction naturelle 0 | espèce éteinte |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Échec synthèse | perte fragments | instant |
|
||||||
|
| Accident | fermeture 48h | décontamination |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Nutriments synthétiques | santé +50 (clone) | indispensable clones |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| Découverte espèce éteinte | +500 (global) | monde | buzz in-game |
|
||||||
|
| Visite labo | +20 | 10m | module |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Prélèvement ADN | stress +10 | toutes espèces |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Traits légendaires | +200% | rareté génétique |
|
||||||
|
| Instable | -50% | défaut clonage |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Autoroute | 110 km/h | vers labo |
|
||||||
|
| Piste | 30 km/h | accès difficile |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Incubation œuf rare | 72h base | -10%/lvl incubateur |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Flux visite | 5/min | capacité 50 |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Séquençage | 2 jours | accélération payante |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Tests | 1h..4h | fiabilité |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Guide | +10 min | module |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Guichet spécial | 500 | $/semaine | visite |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Kit chimiste | 20 | $ | marge 40% |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Don recherche | 10 | $ | 1/20 |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Généticien | 3000 | $/mois | prime |
|
||||||
|
|
||||||
|
#### 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 |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Suivi clonage | 500 | $/jour | matériel |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Gel nutritif | 100 | $/kg | fournisseur |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Enclos stérile | 10000 | $ | entretien |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Trajet 50km | 50 | $ | usure 2% |
|
||||||
|
|
||||||
|
#### Trajet Visiteurs
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Ville | Labo | navette | afflux |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Hall | Tunnel vitré | curiosité | passage |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Sortie labo | Boutique | passage obligé | conversion |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Entrée VIP | Labo | ticket | attente 0 |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `LAB_OFFERS_GENERATED` | refresh | seed | nouvelles offres |
|
||||||
|
| `LAB_ANALYSIS_COMPLETED` | fin | report_id | rapport |
|
||||||
|
| `LAB_SYNTHESIS_DONE` | fin | success | nouvel animal/échec |
|
||||||
|
| `LAB_SECURITY_ALERT` | sécurité | - | fermeture |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `LAB_POI_DISCOVERED` | exploration | marker |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `TRUCK_DELIVERS_LAB_CARGO` | retour | dépôt accueil/nurserie |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `ANTI_CLONE_PROTEST` | aléatoire | affluence - |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `VISITOR_SEES_CLONE` | visite | satisfaction + |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `PLAYER_FUNDS_RESEARCH` | action | xp science + |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| 1 | 50000 | analyses simples | offres standard |
|
||||||
|
| 2 | 150000 | séquençage | offres rares |
|
||||||
|
| 3 | 500000 | clonage | légendaire |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `computeCloningSuccess` | reliability, rarity | bool | formule |
|
||||||
|
| `generateLabOffer` | level, seed | offer | auditable |
|
||||||
|
| `canAccessLab` | reputation, level | bool | gating |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `LAB_TITLE` | Info | "Laboratoire de Génétique." | ouverture |
|
||||||
|
| `LAB_LOCKED_REPUTATION` | Warning | "Réputation insuffisante." | gating |
|
||||||
|
| `LAB_SECURITY_ALERT` | Error | "Alerte de sécurité au laboratoire." | fuite/intrusion |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Voir nouvelle offre | découvrir | notif | clic notif → focus POI |
|
||||||
|
| Acheter | obtenir rare | transport | drag → camion |
|
||||||
|
| Analyser | révéler traits | coût | CTA direct dans fiche |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Modal labo | onglets offres/services | open/closed |
|
||||||
|
| Cartes offre | prix + rareté | locked/available |
|
||||||
|
| Bouton synthèse | fragments requis | enabled/disabled |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Carte monde | POI | halo |
|
||||||
|
| Modal | centre | 80% largeur |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `camion.md` | transport | drag offre |
|
||||||
|
| `accueil_animaux.md` | dépôt | adultes |
|
||||||
|
| `nurserie.md` | dépôt | œufs/bébés |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Ouvrir | clic POI | modal |
|
||||||
|
| Acheter | drag offre → camion | mission |
|
||||||
|
| Fermer | bouton X | retour carte |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_LAB_SITE` | clic | modal |
|
||||||
|
| `CLICK_BUY_OFFER` | drag | achat |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `lab_ambient.mp3` | modal | loop | néon |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `dna_scan.mp3` | analyse ok | moyen |
|
||||||
|
| `buy_success.mp3` | achat | moyen |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `dna_strand.png` | UI | décor |
|
||||||
|
| `icon_lab.png` | POI | lisible |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `bg_lab_interior.jpg` | fond |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `cloning_process.mp4` | succès | 5.0s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `pulse_neon` | bordures | 2000ms |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `lab_cyan` | #00FFFF | accents |
|
||||||
|
| `lab_indigo` | #202040 | fond |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `LAB_TITLE` | Laboratoire de Génétique | Genetics Lab |
|
||||||
|
| `BTN_SYNTHESIZE` | Synthétiser | Synthesize |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Boutons | hexagone | bordure 2px |
|
||||||
|
|||||||
49
docs/specs/maire.md
Normal file
49
docs/specs/maire.md
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# Maire (Ville)
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Personnage représentant la ville sur la carte du monde. Il sert d’interface narrative-fonctionnelle pour les événements de ville (festival, grève, bonus économique) qui impactent le flux de visiteurs et le budget moyen.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Annonce événements** : Présente les événements de ville et leurs impacts chiffrés.
|
||||||
|
* **Relation ville-zoo** : Expose l’état de relation/jumelage (si présent dans `ville.md`).
|
||||||
|
* **Point d’entrée UI** : Personnage contextuel quand le joueur sélectionne une ville ou quand un événement `CITY_EVENT` survient.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Écharpe tricolore / blason.
|
||||||
|
* **Couleur dominante :** Bleu (institution) + accents thème.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Clic ville** : ouvre le panneau ville (population, richesse, événements).
|
||||||
|
* **Clic alerte** : deep-link vers la ville concernée depuis une notification.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"npc_id": "mayor_01",
|
||||||
|
"type": "maire",
|
||||||
|
"city_id": "uuid",
|
||||||
|
"name": "M. Dubois",
|
||||||
|
"state": "enum (IDLE, ANNOUNCING, NEGOTIATING)",
|
||||||
|
"current_event": "string | null"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Les impacts annoncés par le maire doivent être **indexés** par la ville (population, richesse, distance, événement actif) conformément aux formules de `ville.md`.
|
||||||
|
* Pas de promesse “best effort” : si un événement est actif, il est listé, daté et son effet est explicite.
|
||||||
|
|
||||||
|
# Annexes UX/UI
|
||||||
|
|
||||||
|
## 0. Direction Artistique & Vue
|
||||||
|
* **Vue** : Carte monde (UI panneau + portrait).
|
||||||
|
* **Style** : Cohérent avec le thème (costume, écharpe, badge).
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
- **Ville** (`ville.md`) : sélection de ville, événements, variations de flux visiteurs.
|
||||||
|
- **Attractivité sur ville** (`attractivite_zoo_sur_ville.md`) : explication des variations de flux (si le module expose une UI).
|
||||||
|
|
||||||
|
## Skins & thèmes
|
||||||
|
* Variantes par thème (costume, palette) via `theme.md`.
|
||||||
|
* Accessoires via `inventaire_skins.md` si des skins “carte monde / ville” existent.
|
||||||
@@ -63,3 +63,472 @@ Interface centralisée dédiée aux transactions utilisant la monnaie premium (p
|
|||||||
* **Interactions** :
|
* **Interactions** :
|
||||||
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner.
|
* **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.
|
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
|
||||||
|
|
||||||
|
## Définition
|
||||||
|
|
||||||
|
| Champ | Valeur |
|
||||||
|
|---|---|
|
||||||
|
| Concept | Menu “Achats” : hub UI des transactions (employés, consommables, cosmétiques, upgrades). |
|
||||||
|
| Rôle | Réduire les clics d’achat via catégories/onglets, et garantir des transactions atomiques (débit + attribution). |
|
||||||
|
| Portée | UI globale (HUD) ; impacte inventaires, bâtiments, personnel, monnaies. |
|
||||||
|
| Contrainte | Aucun tracking/analytics ; pas de cache/mémorisation côté app : catalogue et soldes sont lus comme état courant à l’ouverture. |
|
||||||
|
|
||||||
|
## Fonctions (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Ouvrir menu achats | clic HUD | `player_id` | modal hub | focus dernière catégorie (état UI local) | Event `OPEN_SHOP_HUB` |
|
||||||
|
| Charger catalogue | ouverture | `shop_version` | catégories + items | filtrer par niveau, conditions | Event `SHOP_CATALOG_LOADED` |
|
||||||
|
| Filtrer catégorie | clic onglet | `category_id` | liste items | tri stable, recherche | Event `SHOP_CATEGORY_SELECTED` |
|
||||||
|
| Prévisualiser item | clic item | `item_id` | panneau détail | affiche prix, effets, prérequis | Event `SHOP_ITEM_PREVIEWED` |
|
||||||
|
| Acheter item | clic “Acheter” | `item_id`, quantité | débit + attribution | transaction atomique ; pas d’achat si fonds insuffisants | Event `SHOP_PURCHASED` |
|
||||||
|
| Confirmer achat coûteux | seuil | `price` | modal confirm | requis si > 1000 coins | Event `SHOP_CONFIRM_SHOWN` |
|
||||||
|
| Achat en quantité | clic x1/x10 | quantité | panier/achat | clamp par stock/solde | Event `SHOP_QUANTITY_CHANGED` |
|
||||||
|
|
||||||
|
## Icone de base
|
||||||
|
|
||||||
|
| Élément | Spécification |
|
||||||
|
|---|---|
|
||||||
|
| Représentation | Caisse / panier |
|
||||||
|
| Couleur dominante | Vert + or |
|
||||||
|
| Variantes | `icon_shop_cash.png`, `icon_shop_cart.png` |
|
||||||
|
| États | normal, hover, disabled (fonds) |
|
||||||
|
|
||||||
|
## Interactions (tableau détaillé)
|
||||||
|
|
||||||
|
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| Accès hub | Navigation | - | clic HUD | ouvre hub | - |
|
||||||
|
| Changer onglet | Navigation | - | clic onglet | liste update | - |
|
||||||
|
| Achat simple | Action | fonds ok | clic acheter | item attribué | `NOT_ENOUGH_COINS` |
|
||||||
|
| Achat coûteux | Action | fonds ok | acheter → confirm | item attribué | `CANCELLED` |
|
||||||
|
| Achat x10 | Action | fonds/stock ok | select x10 → acheter | 10 items | `LIMIT_REACHED` |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Deux personnages contextuels peuvent être affichés selon la section :
|
||||||
|
- **Vendeur “achat en pièces”** : voir `vendeur_pieces.md` (section “Pièces”, conversion/pack).
|
||||||
|
- **Vendeur (boutique)** : voir `vendeur.md` (prévisualisation/achat d’items boutique/cosmétiques si le hub les expose).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Section | Event / Action | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| Hub | `OPEN_SHOP_HUB` | personnage visible dans l’en-tête du hub (thématisé) |
|
||||||
|
| Hub | `SHOP_ITEM_PREVIEWED` | bulle “Détails item” + CTA “Acheter” |
|
||||||
|
| Hub | `SHOP_CONFIRM_SHOWN` | confirmation contextualisée (prix, quantité) |
|
||||||
|
| Pièces | ouverture section | vendeur pièces présente les packs + limites |
|
||||||
|
| Pièces | achat pack | reçu + solde mis à jour ; erreur explicite si paiement impossible |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Le rendu suit `theme.md` et les skins de la UI/boutique si disponibles via `inventaire_skins.md`.
|
||||||
|
|
||||||
|
## Annexes Techniques
|
||||||
|
|
||||||
|
### 1. Données et États (tableau détaillé)
|
||||||
|
|
||||||
|
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| `shop_categories[].id` | string | `employees` | config/DB | stable |
|
||||||
|
| `shop_categories[].label_key` | string | `shop.cat.employees` | i18n | FR/EN |
|
||||||
|
| `shop_categories[].items[]` | string[] | `["healer_01"]` | config/DB | ids |
|
||||||
|
| `items[item_id].price.coins` | int | 250 | config | >=0 |
|
||||||
|
| `items[item_id].price.gems` | int | 0 | config | >=0 |
|
||||||
|
| `items[item_id].requires.zoo_level` | int | 3 | config | gating |
|
||||||
|
| `items[item_id].stock_daily` | int \| null | 10 | config | null = illimité |
|
||||||
|
| `currency_balance.coins` | int | 1500 | DB | source de vérité |
|
||||||
|
| `currency_balance.gems` | int | 50 | DB | source de vérité |
|
||||||
|
| `ui.last_category_id` | string | `employees` | client | état UI |
|
||||||
|
|
||||||
|
#### Caractéristiques Initiales (tableau détaillé)
|
||||||
|
|
||||||
|
| Caractéristique | Valeur initiale | Unité | Notes |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Seuil confirmation | 1000 | coins | règle existante |
|
||||||
|
| Quantités rapides | 1,10 | unités | boutons |
|
||||||
|
| Catégorie par défaut | `employees` | id | configurable |
|
||||||
|
|
||||||
|
#### Scores Initiaux (tableau détaillé)
|
||||||
|
|
||||||
|
| Score | Valeur initiale | Plage | Impact |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Achats du jour | 0 | 0..∞ | historique local, pas d’analytics |
|
||||||
|
| Dépenses du jour | 0 | 0..∞ | transparence UI |
|
||||||
|
|
||||||
|
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| Apparition | jeu lancé | config | hub dispo | bouton HUD |
|
||||||
|
| Navigation | clic onglets | category_id | liste | tri stable |
|
||||||
|
| Transaction | achat | item+prix | débit+attribution | atomicité |
|
||||||
|
|
||||||
|
#### Conditions d'Apparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Compte créé | true | est | hub visible |
|
||||||
|
|
||||||
|
#### Conditions de Disparition (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Seuil | Opérateur | Résultat |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Mode tutorial verrou | true | est | hub masqué temporairement |
|
||||||
|
|
||||||
|
#### Hérédité (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Hérité | Règle |
|
||||||
|
|---|---|---|
|
||||||
|
| Soldes | Oui | persistants DB |
|
||||||
|
| Achats | Oui | items attribués |
|
||||||
|
|
||||||
|
### 3. Impacts Environnementaux
|
||||||
|
|
||||||
|
#### Impact Température (tableau détaillé)
|
||||||
|
|
||||||
|
| Condition | Effet shop | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | UI |
|
||||||
|
|
||||||
|
#### Impact Milieu (Biome) (tableau détaillé)
|
||||||
|
|
||||||
|
| Biome | Effet shop | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | UI |
|
||||||
|
|
||||||
|
#### Impact Saisons (tableau détaillé)
|
||||||
|
|
||||||
|
| Saison | Effet shop | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Saison active | items saisonniers visibles | gating explicite |
|
||||||
|
|
||||||
|
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||||
|
|
||||||
|
| Période | Effet shop | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | - |
|
||||||
|
|
||||||
|
### 4. Impacts Biologiques et Sociaux
|
||||||
|
|
||||||
|
#### Impact Reproduction (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Effet sur taux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | shop n’impacte pas directement |
|
||||||
|
|
||||||
|
#### Impact Mort (tableau détaillé)
|
||||||
|
|
||||||
|
| Cas | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | aucun | - |
|
||||||
|
|
||||||
|
#### Impact Nourriture (tableau détaillé)
|
||||||
|
|
||||||
|
| Ressource | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Achat nourriture spéciale | stock + | transaction ok |
|
||||||
|
|
||||||
|
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Gain | Rayon | Notes |
|
||||||
|
|---|---:|---:|---|
|
||||||
|
| - | 0 | 0 | UI |
|
||||||
|
|
||||||
|
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Action/État | Effet animaux | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Impact Valeur (tableau détaillé)
|
||||||
|
|
||||||
|
| Facteur | Variation | Condition |
|
||||||
|
|---|---:|---|
|
||||||
|
| Skins/thèmes achetés | + | valeur perçue | cosmétique |
|
||||||
|
|
||||||
|
### 5. Impacts Logistiques et Économiques
|
||||||
|
|
||||||
|
#### Vitesse (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Vitesse (Nurserie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Achat upgrade nurserie | level ↑ | transaction ok |
|
||||||
|
|
||||||
|
#### Vitesse (Accueil) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Achat accueil | capacité ↑ | transaction ok |
|
||||||
|
|
||||||
|
#### Vitesse (Recherche) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Achat recherche | vitesse ↑ | transaction ok |
|
||||||
|
|
||||||
|
#### Vitesse (Labo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Achat labo | capacité ↑ | transaction ok |
|
||||||
|
|
||||||
|
#### Vitesse (Visite) (tableau détaillé)
|
||||||
|
|
||||||
|
| Paramètre | Effet | Condition |
|
||||||
|
|---|---|---|
|
||||||
|
| Achat décor | attractivité ↑ | transaction ok |
|
||||||
|
|
||||||
|
#### Dépenses (Billeterie) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Boutiques) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| - | 0 | - | - |
|
||||||
|
|
||||||
|
#### Dépenses (Employés) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Recrutement | variable | coins | item employé |
|
||||||
|
|
||||||
|
#### 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 | achat |
|
||||||
|
|
||||||
|
#### Dépenses (Nourriture) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Consommables | variable | coins | achat |
|
||||||
|
|
||||||
|
#### Dépenses (Acceuil des animaux) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Achat capacité | variable | coins | achat |
|
||||||
|
|
||||||
|
#### Dépenses (Camion) (tableau détaillé)
|
||||||
|
|
||||||
|
| Poste | Coût | Unité | Condition |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Achat upgrade | variable | coins | achat |
|
||||||
|
|
||||||
|
#### 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 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||||
|
|
||||||
|
| Source | Destination | Déclencheur | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| - | - | - | - |
|
||||||
|
|
||||||
|
### 6. Événements
|
||||||
|
|
||||||
|
#### Événements du Jeu (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Payload | Effet |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `OPEN_SHOP_HUB` | clic | - | ouvre |
|
||||||
|
| `SHOP_CATALOG_LOADED` | open | version | liste |
|
||||||
|
| `SHOP_PURCHASED` | achat | item_id, qty | attribue |
|
||||||
|
|
||||||
|
#### Événements du Carte (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Zoo (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Visiteur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| - | - | - |
|
||||||
|
|
||||||
|
#### Événements du Joueur (tableau détaillé)
|
||||||
|
|
||||||
|
| Event | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `SHOP_CATEGORY_SELECTED` | onglet | UI |
|
||||||
|
|
||||||
|
### 7. Progression
|
||||||
|
|
||||||
|
#### Tableau des Upgrades (tableau détaillé)
|
||||||
|
|
||||||
|
| Niveau | Coût | Effet | Débloque |
|
||||||
|
|---|---:|---|---|
|
||||||
|
| Hub 1 | 0 | catégories base | - |
|
||||||
|
|
||||||
|
### 8. Logique et Interfaces
|
||||||
|
|
||||||
|
#### Pseudo-code Impacts (tableau détaillé)
|
||||||
|
|
||||||
|
| Fonction | Entrées | Sorties | Notes |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `canPurchase` | balance, price | bool | fonds + gating |
|
||||||
|
| `purchaseItem` | item_id, qty | receipt | atomique |
|
||||||
|
|
||||||
|
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||||
|
|
||||||
|
| ID | Niveau | Message | Condition |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `NOT_ENOUGH_COINS` | Warning | "Fonds insuffisants." | achat |
|
||||||
|
| `SHOP_PURCHASED` | Info | "Achat effectué." | succès |
|
||||||
|
|
||||||
|
## Annexes UX/UI
|
||||||
|
|
||||||
|
### 1. Expérience Utilisateur (UX)
|
||||||
|
|
||||||
|
#### Description UX (tableau détaillé)
|
||||||
|
|
||||||
|
| Parcours | But | Friction | Réduction clics |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Acheter employé | renforcer zoo | navigation | hub + onglet + CTA |
|
||||||
|
| Acheter consommable | soigner/booster | quantité | x1/x10 direct |
|
||||||
|
|
||||||
|
#### Description UI (tableau détaillé)
|
||||||
|
|
||||||
|
| Composant | Contenu | États |
|
||||||
|
|---|---|---|
|
||||||
|
| Onglets | catégories | actif/inactif |
|
||||||
|
| Carte item | icône, prix, CTA | disabled si fonds |
|
||||||
|
| Modal confirm | item + prix | ok/cancel |
|
||||||
|
|
||||||
|
#### Emplacement (tableau détaillé)
|
||||||
|
|
||||||
|
| Zone UI | Position | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| HUD | bouton | accès direct |
|
||||||
|
| Modal | centre | hub |
|
||||||
|
|
||||||
|
#### Intégration (tableau détaillé)
|
||||||
|
|
||||||
|
| Intégration | Contrat | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| `boutique.md` | boutique interne | cohérence |
|
||||||
|
| `inventaire_skins.md` | cosmétiques | attribution |
|
||||||
|
|
||||||
|
#### Navigation (tableau détaillé)
|
||||||
|
|
||||||
|
| Action | Chemin | Résultat |
|
||||||
|
|---|---|---|
|
||||||
|
| Ouvrir | HUD → menu | hub |
|
||||||
|
| Acheter | item → CTA | attribution |
|
||||||
|
|
||||||
|
#### Événements (tableau détaillé)
|
||||||
|
|
||||||
|
| Event UI | Déclencheur | Effet |
|
||||||
|
|---|---|---|
|
||||||
|
| `OPEN_SHOP_HUB` | clic | modal |
|
||||||
|
| `CLICK_BUY_ITEM` | CTA | achat |
|
||||||
|
|
||||||
|
#### Assets Skinables
|
||||||
|
|
||||||
|
##### Musiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée | Notes |
|
||||||
|
|---|---|---:|---|
|
||||||
|
| `shop_hub_loop.mp3` | menu achats | loop | neutre |
|
||||||
|
|
||||||
|
##### Sons (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Volume |
|
||||||
|
|---|---|---|
|
||||||
|
| `ui_purchase_success.mp3` | succès | moyen |
|
||||||
|
| `ui_purchase_fail.mp3` | échec | moyen |
|
||||||
|
|
||||||
|
##### Graphiques (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Contraintes |
|
||||||
|
|---|---|---|
|
||||||
|
| `shop_item_card.png` | carte item | scalable |
|
||||||
|
| `shop_coin_fly_fx.png` | feedback achat | overlay |
|
||||||
|
|
||||||
|
##### Images (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage |
|
||||||
|
|---|---|
|
||||||
|
| `shop_banner.png` | header |
|
||||||
|
|
||||||
|
##### Vidéos (tableau détaillé)
|
||||||
|
|
||||||
|
| Asset | Usage | Durée |
|
||||||
|
|---|---|---:|
|
||||||
|
| `coin_fly.webm` | feedback | 0.8s |
|
||||||
|
|
||||||
|
##### Animations (tableau détaillé)
|
||||||
|
|
||||||
|
| Animation | Déclencheur | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| pièces qui volent | achat | 0.8s |
|
||||||
|
|
||||||
|
##### Couleurs (tableau détaillé)
|
||||||
|
|
||||||
|
| Token | Valeur | Usage |
|
||||||
|
|---|---|---|
|
||||||
|
| `shop_green` | #2E7D32 | CTA |
|
||||||
|
| `shop_gold` | #D4AF37 | prix |
|
||||||
|
|
||||||
|
##### Textes (tableau détaillé)
|
||||||
|
|
||||||
|
| Clé | FR | EN |
|
||||||
|
|---|---|---|
|
||||||
|
| `shop.title` | Achats | Shop |
|
||||||
|
| `shop.buy` | Acheter | Buy |
|
||||||
|
|
||||||
|
##### Formes (tableau détaillé)
|
||||||
|
|
||||||
|
| Élément | Forme | Notes |
|
||||||
|
|---|---|---|
|
||||||
|
| Cartes | rectangles arrondis | lisible |
|
||||||
|
|||||||
@@ -46,6 +46,16 @@ Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les
|
|||||||
* **Animation :** Verse de la nourriture dans l'auge.
|
* **Animation :** Verse de la nourriture dans l'auge.
|
||||||
* **Alerte :** Icône "Faim" rouge clignotante si le nourisseur est débordé.
|
* **Alerte :** Icône "Faim" rouge clignotante si le nourisseur est débordé.
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
Le nourisseur sert de personnage contextuel lorsque des événements de nourriture surviennent sur la carte du zoo.
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `FEED_LOW` | auge < seuil | bulle “Mangeoire vide” + CTA “Voir enclos” |
|
||||||
|
| `FOOD_STOCK_EMPTY` | stock global = 0 | bulle “Stock vide” + deep-link `menu_achats.md` |
|
||||||
|
| `FEEDER_OVERLOADED` | trop de tâches | bulle “Débordé” + CTA recruter/ajuster priorités |
|
||||||
|
|
||||||
|
|
||||||
# Annexes UX/UI
|
# Annexes UX/UI
|
||||||
|
|
||||||
|
|||||||
75
docs/specs/nurse.md
Normal file
75
docs/specs/nurse.md
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# Nurse (Nurserie)
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Employée spécialisée dans la gestion de la nurserie : incubation, soins de base aux bébés, assistance au joueur lors des événements d’éclosion et d’urgence. Achetable avec des pièces (même logique que les autres employés).
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Triage nurserie :** Priorise les slots (œuf prêt, bébé critique, croissance).
|
||||||
|
* **Soins pédiatriques :** Applique des soins de stabilisation (réduit la vitesse de dégradation quand un bébé est en danger), en complément du `soigneur` (qui gère la santé globale).
|
||||||
|
* **Régulation :** Contribue à la régulation de température de la nurserie (effet borné, dépend du niveau de nurserie).
|
||||||
|
* **Assistance UI :** Sert de personnage contextuel quand la nurserie est actionnée ou qu’un événement nurserie survient.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Biberon + petit badge croix (pédiatrie).
|
||||||
|
* **Couleur dominante :** Pastel + blanc.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Recrutement :** Menu “Employés” (ou Menu Achats → Personnel).
|
||||||
|
* **Assignation :** Assignable à une `nurserie` spécifique ou à une zone (si plusieurs nurseries existent).
|
||||||
|
* **Priorités :** “Œufs prêts” > “Bébés critiques” > “Croissance” > “Maintenance”.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"employee_id": "nurse_01",
|
||||||
|
"type": "nurse",
|
||||||
|
"name": "Aline",
|
||||||
|
"created_at": "timestamp",
|
||||||
|
"salary": 45,
|
||||||
|
"hire_cost": 450,
|
||||||
|
"assigned_building": "nurserie_uuid | null",
|
||||||
|
"stats": {
|
||||||
|
"speed": 1.0,
|
||||||
|
"stabilization": 0.7,
|
||||||
|
"temp_help": 1
|
||||||
|
},
|
||||||
|
"state": "enum (IDLE, MOVING, STABILIZING, CHECKING_SLOTS, BREAK)",
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* La nurse ne remplace pas le `soigneur` : elle **n’agit** que sur les bébés et la nurserie (périmètre borné).
|
||||||
|
* Si aucun chemin n’existe vers la nurserie, l’action est refusée avec message explicite (pas de fallback silencieux).
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
Le personnage “Nurse” s’affiche dans les modules suivants :
|
||||||
|
- **Nurserie** (`nurserie.md`) : ouverture, éclosion prête, nurserie pleine, urgence bébé.
|
||||||
|
- **Inventaire bébés** (`inventaire_bebe_animaux.md`) : filtre “en danger”, deep-link, actions “voir”.
|
||||||
|
- **Fiche bébé** (`bebe_animal.md`) : état critique, sortie prématurée (confirmation), soins.
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Module | Event / Action | Effet UI |
|
||||||
|
|---|---|---|
|
||||||
|
| Nurserie | `OPEN_NURSERIE` | La nurse apparaît en vignette/portrait dans le panneau. |
|
||||||
|
| Nurserie | `EGG_HATCHED` / slot prêt | Bulle : “Éclosion prête” + CTA deep-link slot. |
|
||||||
|
| Nurserie | `NURSERIE_FULL` | Bulle : cause (slots pleins) + CTA “Voir slots”. |
|
||||||
|
| Bébé | `BABY_CRITICAL` | Bulle : raison (froid/faim/santé) + CTA “Voir bébé”. |
|
||||||
|
|
||||||
|
## Skins & thèmes
|
||||||
|
* Uniforme et palette dérivent du thème (`theme.md`).
|
||||||
|
* Accessoires (stéthoscope, badge, serre-tête) via skins (`skin.md`, `inventaire_skins.md`).
|
||||||
@@ -229,3 +229,514 @@ function updateNurserie(nurserie):
|
|||||||
- **Couleurs** : Vert #00FF00 (OK), Rouge #FF0000 (KO).
|
- **Couleurs** : Vert #00FF00 (OK), Rouge #FF0000 (KO).
|
||||||
- **Textes** : Tooltip "Placer ici".
|
- **Textes** : Tooltip "Placer ici".
|
||||||
- **Formes** : Carré de sélection.
|
- **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 d’urgence | Action | level ≥ 4 | bouton “Urgence” | santé ↑ | `LEVEL_TOO_LOW` |
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Voir `nurse.md`.
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
La nurse s’affiche 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 |
|
||||||
|
|||||||
@@ -8,6 +8,52 @@ Entité active dans le jeu, qu'elle soit contrôlée par un humain, une IA ou un
|
|||||||
- **Bot** : IA gérant un zoo concurrent.
|
- **Bot** : IA gérant un zoo concurrent.
|
||||||
- **Visiteur** : PNJ se promenant dans le zoo.
|
- **Visiteur** : PNJ se promenant dans le zoo.
|
||||||
- **Animal** : Entité biologique gérée par le joueur.
|
- **Animal** : Entité biologique gérée par le joueur.
|
||||||
|
- **Staff (Employé / PNJ de service)** : Personnage de service (accueil, guichet, boutique, recherche, soin, sécurité, nurserie, laboratoire).
|
||||||
|
|
||||||
|
## Skins, thèmes et personnalisation
|
||||||
|
Les personnages (joueur, visiteurs, bots, staff) sont rendus avec une combinaison :
|
||||||
|
- **Thème global** : voir `theme.md` (palette, ambiance UI, décor, uniformes).
|
||||||
|
- **Skins** : voir `skin.md` et l’équipement/possession via `inventaire_skins.md`.
|
||||||
|
|
||||||
|
### Règles de rendu (contrat)
|
||||||
|
- Un personnage peut avoir des **variantes visuelles** (uniforme, accessoires, palette) déterminées par le thème et les skins équipés.
|
||||||
|
- Les personnages affichés dans une UI (portrait, badge, “paper doll”, bulle) doivent rester **cohérents** avec l’avatar/skin courant.
|
||||||
|
- Un même rôle (ex. “vendeur”) peut avoir plusieurs skins, mais **un skin actif** doit être explicite (pas d’auto-déduction silencieuse).
|
||||||
|
|
||||||
|
## Personnage contextuel de module (UI)
|
||||||
|
Certains modules affichent un **personnage contextuel** quand le module est actionné ou lorsqu’un événement lié au module survient.
|
||||||
|
|
||||||
|
### Objectifs
|
||||||
|
- **Ancrage** : associer un module à un rôle (ex. Nurserie → Nurse).
|
||||||
|
- **Interaction** : proposer des actions directes (1 clic) et des explications factuelles (état, cause, prochaine action).
|
||||||
|
- **Cohérence cosmétique** : appliquer thème + skins sur le personnage.
|
||||||
|
|
||||||
|
### Déclencheurs (génériques)
|
||||||
|
- **Ouverture / activation** : ouverture d’un panneau, sélection d’un bâtiment, entrée dans un mode (build, gestion).
|
||||||
|
- **Événement module** : arrivée, incident, succès d’une action, blocage explicite (fonds insuffisants, capacité pleine, gating réputation).
|
||||||
|
- **État critique** : un statut “critique” du module est actif (ex. nurserie pleine, alerte quarantaine, alerte sécurité).
|
||||||
|
|
||||||
|
### Interactions (génériques)
|
||||||
|
- **Clic** : ouvre l’écran/action la plus pertinente du module (deep-link).
|
||||||
|
- **Survol / tap** : affiche une fiche courte (rôle + état + action possible).
|
||||||
|
- **Dialogue/bulle** : messages informatifs liés à un événement (sans “best effort”, sans masquage d’erreur).
|
||||||
|
|
||||||
|
### Index des rôles (spécifications associées)
|
||||||
|
- **Visiteurs homme/femme** : `visiteur.md`
|
||||||
|
- **Joueur actif (avatar + pseudo + skins + profil)** : `joueur.md`, `avatar_joueur.md`, `inventaire_skins.md`
|
||||||
|
- **Autres joueurs** : `joueur.md` (représentation externe) + `avatar_joueur.md` (portrait partagé)
|
||||||
|
- **Bots** : `bot.md`
|
||||||
|
- **Chercheur** : `chercheur.md`
|
||||||
|
- **Nourisseur** : `nourisseur.md`
|
||||||
|
- **Soigneur** : `soigneur.md`
|
||||||
|
- **Agent de sécurité** : `agent_securite.md`
|
||||||
|
- **Nurse (nurserie)** : `nurse.md`
|
||||||
|
- **Personnel d’accueil (nouveaux animaux)** : `personnel_accueil.md`
|
||||||
|
- **Guichetière (billetterie)** : `guichetiere.md`
|
||||||
|
- **Vendeur (boutique)** : `vendeur.md`
|
||||||
|
- **Vendeur “achat en pièces” (menu achats / conversion monnaies)** : `vendeur_pieces.md`
|
||||||
|
- **Laborantin (site laboratoire carte monde)** : `laborantin.md`
|
||||||
|
- **Maire (ville / carte monde)** : `maire.md`
|
||||||
|
|
||||||
# Annexes Techniques
|
# Annexes Techniques
|
||||||
|
|
||||||
|
|||||||
68
docs/specs/personnel_accueil.md
Normal file
68
docs/specs/personnel_accueil.md
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
# Personnel d’accueil (nouveaux animaux)
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Personnel de service associé à l’Accueil des animaux. Il gère le check-in (quarantaine/acclimatation), la traçabilité (documents, historique) et sert de personnage contextuel lors des arrivées et incidents d’accueil.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Check-in** : Associe l’animal livré/acheté à un slot d’accueil (contrôle capacité, timers).
|
||||||
|
* **Traçabilité** : Rend visibles des informations (traits révélés, historique) selon le score “Traçabilité” de l’accueil.
|
||||||
|
* **Quarantaine** : Surveille et signale les incidents `QUARANTINE_ALERT` avec action de consultation.
|
||||||
|
* **Assistance UI** : Personnage contextuel de l’Accueil et des livraisons camion.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Tampon “OK” + caisse (logistique).
|
||||||
|
* **Couleur dominante :** Ambre + bleu (service).
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Consultation :** Clic sur l’Accueil → bottom sheet slots (personnel visible dans le panneau).
|
||||||
|
* **Incident :** Clic sur badge quarantaine → panneau cause/coût/durée.
|
||||||
|
* **Placement :** CTA “Placer” (deep-link) vers le mode placement.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"employee_id": "reception_staff_01",
|
||||||
|
"type": "personnel_accueil_animaux",
|
||||||
|
"name": "Sam",
|
||||||
|
"salary": 35,
|
||||||
|
"hire_cost": 0,
|
||||||
|
"assigned_building": "reception_uuid",
|
||||||
|
"state": "enum (IDLE, CHECKIN, PAPERWORK, QUARANTINE, BREAK)",
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Par défaut, le personnel d’accueil est **lié** au bâtiment `accueil_animaux.md` (pas un employé libre).
|
||||||
|
* En cas d’accueil saturé, l’erreur est explicite (`RECEPTION_FULL`) et le personnage affiche l’état (pas de dégradation silencieuse).
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
- **Accueil des animaux** (`accueil_animaux.md`) : arrivée, prêt, saturation, incident quarantaine.
|
||||||
|
- **Camion** (`camion.md`) : arrivée au zoo, déchargement vers accueil (adulte).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Module | Event / Action | Effet UI |
|
||||||
|
|---|---|---|
|
||||||
|
| Accueil | `OPEN_RECEPTION` | Portrait + état “slots” (libres/occupés/prêts). |
|
||||||
|
| Accueil | `ANIMAL_ARRIVAL` | Bulle “Arrivée enregistrée” + CTA inspecter. |
|
||||||
|
| Accueil | `ANIMAL_READY` | Bulle “Prêt à placer” + CTA “Placer”. |
|
||||||
|
| Accueil | `RECEPTION_FULL` | Bulle “Accueil saturé” + CTA “Voir slots”. |
|
||||||
|
| Accueil | `QUARANTINE_ALERT` | Bulle “Alerte quarantaine” + CTA “Voir détails”. |
|
||||||
|
|
||||||
|
## Skins & thèmes
|
||||||
|
* Uniforme dépend du thème (`theme.md`) : veste, badge, clipboard.
|
||||||
|
* Variantes cosmétiques via `inventaire_skins.md` si le thème autorise des uniformes alternatifs.
|
||||||
@@ -49,6 +49,16 @@ Employé spécialisé dans la santé des animaux. Il intervient pour prévenir l
|
|||||||
* **Feedback :** Icône de croix verte au-dessus de l'animal soigné.
|
* **Feedback :** Icône de croix verte au-dessus de l'animal soigné.
|
||||||
* **Notification :** "Un animal est malade !" (si pas de soigneur dispo) ou "Animal soigné par [Nom]".
|
* **Notification :** "Un animal est malade !" (si pas de soigneur dispo) ou "Animal soigné par [Nom]".
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
Le soigneur sert de personnage contextuel lors des événements de santé animale.
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| `ANIMAL_SICK` | animal passe `SICK` | bulle “Maladie détectée” + CTA “Voir animal” |
|
||||||
|
| `NO_HEALER_AVAILABLE` | file saturée / absent | bulle “Aucun soigneur dispo” + CTA recruter |
|
||||||
|
| `HEALTH_SYSTEM_OVERLOADED` | trop malades | bulle “Système santé saturé” + CTA prioriser zones |
|
||||||
|
|
||||||
|
|
||||||
# Annexes UX/UI
|
# Annexes UX/UI
|
||||||
|
|
||||||
|
|||||||
57
docs/specs/vendeur.md
Normal file
57
docs/specs/vendeur.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Vendeur (Boutique)
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Personnage de service associé aux boutiques du zoo. Il matérialise la vente (service, file), les promotions et sert de personnage contextuel lors des événements de boutique.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Service clients** : Représente la cadence de service de la boutique (entrée/sortie visiteurs).
|
||||||
|
* **Animation vente** : Déclenche les FX de caisse (“pièces qui volent”) et les popups.
|
||||||
|
* **Gestion file/plein** : Signale `SHOP_FULL` avec cause (capacité) et action (upgrade / poser une autre boutique).
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Sac cadeau / caisse.
|
||||||
|
* **Couleur dominante :** Vert (vente) + or (pièces).
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Clic boutique** : ouvre stats et options (upgrade, skin boutique).
|
||||||
|
* **Clic sur promo** : ouvre un panneau de détails (durée, effet) si la mécanique existe.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"employee_id": "vendor_01",
|
||||||
|
"type": "vendeur",
|
||||||
|
"name": "Léo",
|
||||||
|
"salary": 0,
|
||||||
|
"hire_cost": 0,
|
||||||
|
"assigned_building": "shop_uuid",
|
||||||
|
"state": "enum (IDLE, SERVING, RESTOCKING, OVERLOADED)",
|
||||||
|
"iso_x": "integer",
|
||||||
|
"iso_y": "integer",
|
||||||
|
"z_index": "integer"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Le vendeur est lié à une `boutique.md` (pas un employé libre).
|
||||||
|
* En surcharge (file), l’état est visible (badge / bulle) et déclenche un message explicite.
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
- **Boutique** (`boutique.md`) : vente, surcharge, rupture de stock (si activée), consultation stats.
|
||||||
|
- **Menu Achats** (`menu_achats.md`) : pour les items “boutique”/cosmétiques, le vendeur peut être le personnage contextuel lors de la prévisualisation et de la confirmation d’achat (UI).
|
||||||
|
|
||||||
|
## Skins & thèmes
|
||||||
|
* Uniforme et comptoir dépendent du thème (`theme.md`).
|
||||||
|
* Variantes (type de boutique : food/souvenir/boisson) via skins (`inventaire_skins.md`) côté bâtiment + accessoires du vendeur.
|
||||||
55
docs/specs/vendeur_pieces.md
Normal file
55
docs/specs/vendeur_pieces.md
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# Vendeur (achat en pièces pour le zoo)
|
||||||
|
|
||||||
|
## 1. Définition
|
||||||
|
Personnage contextuel du module de conversion/achat de monnaie “pièces” pour le zoo. Il intervient dans le `menu_achats.md` pour présenter les packs, confirmer les transactions et afficher les erreurs de paiement/fonds.
|
||||||
|
|
||||||
|
## 2. Fonctions
|
||||||
|
* **Présentation packs** : Affiche les packs de pièces (et, si présent, la monnaie source : gems, coupons).
|
||||||
|
* **Transaction** : Déclenche une transaction atomique (débit monnaie source + crédit pièces).
|
||||||
|
* **Transparence** : Affiche le détail (taux, bonus éventuel, limites) sans masquage.
|
||||||
|
|
||||||
|
## 3. Icone
|
||||||
|
* **Représentation :** Pile de pièces + symbole échange.
|
||||||
|
* **Couleur dominante :** Or.
|
||||||
|
|
||||||
|
## 4. Interactions
|
||||||
|
* **Ouverture** : Menu Achats → section “Pièces”.
|
||||||
|
* **Achat** : Sélection pack → confirmer (si requis) → crédit.
|
||||||
|
|
||||||
|
## 5. Annexes Techniques
|
||||||
|
|
||||||
|
### Données (JSON)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"npc_id": "coin_merchant_01",
|
||||||
|
"type": "vendeur_pieces",
|
||||||
|
"name": "Maya",
|
||||||
|
"offers": [
|
||||||
|
{
|
||||||
|
"offer_id": "coins_pack_s",
|
||||||
|
"coins_amount": 1000,
|
||||||
|
"price": { "gems": 10 }
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"limits": {
|
||||||
|
"daily_purchases_max": 10
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Règles Métier
|
||||||
|
* Aucune alternative silencieuse : si paiement impossible, afficher la cause (`NOT_ENOUGH_GEMS`, `LIMIT_REACHED`, `PAYMENT_FAILED`).
|
||||||
|
* Les offres doivent rester cohérentes avec le thème (bannière, palette) et les règles “pas d’analytics”.
|
||||||
|
|
||||||
|
# Annexes UX/UI
|
||||||
|
|
||||||
|
## 0. Direction Artistique & Vue
|
||||||
|
* **Style** : Cohérent UI shop (réutilise `menu_achats.md`).
|
||||||
|
* **Personnage** : Portrait/mascotte dans le panneau “Pièces”.
|
||||||
|
|
||||||
|
## Affichage contextuel (modules)
|
||||||
|
- **Menu Achats** (`menu_achats.md`) : ouverture section pièces, confirmation, achat réussi/échoué.
|
||||||
|
|
||||||
|
## Skins & thèmes
|
||||||
|
* Tenue et décor dérivent du thème (`theme.md`).
|
||||||
|
* Accessoires (bourse, caisse, badge) via `inventaire_skins.md` si des skins “UI shop staff” existent.
|
||||||
@@ -13,6 +13,23 @@ Une ville est une entité sur la Carte du Monde qui génère le flux de visiteur
|
|||||||
- **Facteur de Distance** : Plus un zoo est proche d'une ville, plus il attire de visiteurs.
|
- **Facteur de Distance** : Plus un zoo est proche d'une ville, plus il attire de visiteurs.
|
||||||
- **Facteur d'Attractivité** : La valeur et la diversité du zoo influencent le choix des visiteurs.
|
- **Facteur d'Attractivité** : La valeur et la diversité du zoo influencent le choix des visiteurs.
|
||||||
|
|
||||||
|
## Personnage contextuel (événements & interaction)
|
||||||
|
Voir `maire.md`.
|
||||||
|
|
||||||
|
### Affichage
|
||||||
|
Le maire s’affiche lorsque :
|
||||||
|
- la ville est **actionnée** (sélection/clic ville, ouverture panneau ville) ;
|
||||||
|
- un **événement** de ville survient (festival, grève, bonus économique, `CITY_EVENT`).
|
||||||
|
|
||||||
|
### Déclencheurs (exemples)
|
||||||
|
| Event | Condition | Effet UI personnage |
|
||||||
|
|---|---|---|
|
||||||
|
| sélection ville | clic icône ville | portrait + synthèse (population, richesse, flux) |
|
||||||
|
| `CITY_EVENT` | événement actif | bulle “Événement en cours” + impacts chiffrés |
|
||||||
|
|
||||||
|
### Skins & thèmes
|
||||||
|
Portrait et accessoires suivent `theme.md` ; variantes “ville” possibles via `inventaire_skins.md`.
|
||||||
|
|
||||||
# Annexes Techniques
|
# Annexes Techniques
|
||||||
|
|
||||||
## 1. Données et États
|
## 1. Données et États
|
||||||
|
|||||||
@@ -11,7 +11,12 @@ Personnage non-joueur (PNJ) qui visite le zoo. Il est la source principale de re
|
|||||||
| Jugement | Évalue la qualité du zoo et influence la réputation. | État Zoo, Prix | Score Réputation |
|
| Jugement | Évalue la qualité du zoo et influence la réputation. | État Zoo, Prix | Score Réputation |
|
||||||
|
|
||||||
## Icone de base
|
## Icone de base
|
||||||
Silhouette humaine simplifiée, couleur variable selon le type (Standard, VIP, Enfant).
|
Silhouette humaine simplifiée, couleur variable selon le type (Standard, VIP, Enfant) et la variante (Homme/Femme).
|
||||||
|
|
||||||
|
## Variantes (homme/femme) et skins
|
||||||
|
- **Variantes** : homme/femme (et autres variantes si le catalogue le prévoit), sélectionnées par le générateur de visiteurs.
|
||||||
|
- **Thèmes** : la tenue/couleurs suivent `theme.md` (saisons, météo, ambiance).
|
||||||
|
- **Skins** : si activé, certaines variantes de visiteurs sont des skins (voir `inventaire_skins.md`) appliqués au rendu (sans impact gameplay).
|
||||||
|
|
||||||
## Interactions
|
## Interactions
|
||||||
| Acteur A | Action | Acteur B | Résultat |
|
| Acteur A | Action | Acteur B | Résultat |
|
||||||
|
|||||||
Reference in New Issue
Block a user