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

View File

@@ -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
* **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).
## 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 dinté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 saffiche 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 daccè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 |