Files
builazoo/docs/specs/case_zoo.md
Nicolas Cantu 5143a79890 docs: enrich docs/specs and remove placeholders
**Motivations:**
- Make docs/specs implementation-ready without empty sections or placeholders.

**Root causes:**
- Multiple specs still contained non-actionable placeholders (N/A, “see above”, "..."), and inconsistent “no cache” wording.

**Correctifs:**
- Replace placeholders with explicit tables, structures, and typed examples.
- Align “no cache / no memorization” statements where relevant.

**Evolutions:**
- Add a features doc entry to track the documentation enrichment effort.

**Pages affectées:**
- docs/specs/*
- docs/features/docs-specs-enrichment.md
- docs/leo.md
- docs/plan-enrich-docs-specs.md
2026-03-05 03:08:15 +01:00

168 lines
5.6 KiB
Markdown

# Spécifications : Case de Zoo (Générique)
## Définition
Case spécifique à la grille du zoo, pouvant accueillir les éléments de gestion.
## Types de Contenu Possibles
- **Bâtiments** : Billeterie, Nurserie, Boutique, Centre de Recherche, École, Accueil Animaux.
- **Animaux** : Bébés matures, Animaux adultes.
- **Éléments Mobiles** : Visiteurs, Camion (sur sa zone dédiée).
- **Vide** : Terrain libre pour construction ou placement.
## Propriétés Spécifiques
- **Occupation** : Une case ne peut contenir qu'un seul élément principal (bâtiment/animal) à la fois.
- **Visite** : Enregistre la date de dernier passage d'un visiteur (pour la règle de disparition).
- **Qualité** : Indicateur visuel d'adéquation avec l'animal posé dessus (Jaunissement, Givre).
## Liste des Cases Spéciales (cf. Carte Zoo)
- Agrandissement
- Recherche
- Billeterie
- Nurserie
- Accueil
- Nourriture
- Camion
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
Hérite de `Case (Générique)`.
```json
{
"last_visit_time": "timestamp | null",
"visit_count_total": "integer",
"visit_count_day": "integer",
"heatmap_score": "float (0-100)",
"quality_score": "float (0-100)",
"pathing": {
"walkable": "boolean",
"movement_cost": "float (>= 1.0)",
"preferred": "boolean (true for path tiles)"
},
"zoo_specific_flags": [
"enum('premium_spot','near_entry','near_shop','near_enclosure','staff_only')"
]
}
```
### Contraintes (Invariants)
* **Walkable** : une case avec `content_type` bâtiment/animal est généralement `walkable=false` pour les visiteurs (sauf exceptions design).
* **last_visit_time** : mis à jour uniquement quand un visiteur “observe” réellement (pas juste traverse) si la mécanique de “visite” est distincte.
* **movement_cost** : > 1.0 sur herbe/boue, = 1.0 sur chemins, < 1.0 interdit (évite vitesse infinie).
### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Dernière Visite | Création du zoo |
| Qualité | 100 |
### Scores Initiaux
**Passages** : 0 (Heatmap de fréquentation).
**Propreté** : 100 (aucun déchet).
**Coût de marche** : 1.2 (herbe) par défaut, 1.0 (chemin) si la case est convertie.
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Génération zoo.
### Conditions de Disparition
**Jamais** : Une case ne disparaît pas, elle change juste de contenu.
### Hérédité
**Qualité du Sol** : Un sol bien entretenu (fertilisé) garde ses bonus après un reset partiel.
## 3. Impacts Environnementaux
### Impact Température
Voir `case_generique.md`.
### Impact Milieu (Biome)
Voir `case_generique.md`.
### Impact Saisons
**Neige** : La case devient blanche en hiver (si T° < 0).
### Impact Heure / Jour-Nuit
**Ombres** : Les ombres des objets sur la case tournent avec le soleil.
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Lieu de rencontre** : Les cases "Buissons" favorisent les rencontres.
### Impact Mort
**Lieu de décès** : Une case où un animal est mort garde une "odeur" (malus stress) pendant 24h.
### Impact Nourriture
**Pâturage** : Une case herbeuse peut être broutée (devient terreuse).
### Impact Attractivité (Visiteurs/Animaux)
**Vue** : Une case "Point de Vue" (hauteur) augmente l'attractivité des animaux alentour.
### Impact Valeur
**Emplacement** : Une case proche de l'entrée vaut plus cher (emplacement premium pour boutiques).
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Revêtement** : Herbe (Lent), Terre (Moyen), Pavés (Rapide).
### Dépenses (Boutiques/Visiteurs)
**Nettoyage** : Coût si la case est sale (déchets visiteurs).
### Trajet Visiteurs
**Obstacle** : Une case occupée par un bâtiment ou de l'eau est infranchissable (sauf pont).
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Passage Visiteur** : Met à jour `last_visit_time`.
* **Salissure** : Apparition d'un déchet.
## 7. Progression
### Tableau des Upgrades
Voir `achat_upgrade_case.md`.
## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function checkAnimalDisappearance(case):
if currentTime - case.last_visit_time > MAX_TIME_WITHOUT_VISIT:
removeAnimal(case.content)
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `CASE_DIRTY` | Info | "Une case est sale." |
| `PATH_BLOCKED` | Warning | "Chemin bloqué : les visiteurs recalculent leur trajet." |
| `ANIMAL_NOT_VISITED` | Warning | "Un animal n'a pas été observé depuis longtemps." |
# Annexes UX/UI
## 0. Direction Artistique & Vue
* **Vue** : Isométrique (2.5D).
* **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg).
* **Sprites** : 4 directions.
* **Interactions** :
* **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner.
* **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris.
## 1. Expérience Utilisateur (UX)
### Sélection (Action)
**Description UX** : Clic sur une case zoo.
**Description UI** : Highlight + Menu contextuel adapté au contenu (Animal -> Stats, Bâtiment -> Upgrade, Vide -> Construire).
**Emplacement** : Grille.
**Intégration** : Standard.
**Navigation** : Clic.
**Événements** : `SELECT_ZOO_CASE`.
#### Assets
- **Musiques** : Son "Click".
- **Sons** : `select_soft.mp3`.
- **Graphiques** : Cadre sélection.
- **Images** : Icône Menu Contextuel.
- **Vidéos** : Effet de sélection (contour brillant).
- **Animations** : Rebondissement léger du contenu.
- **Couleurs** : Blanc.
- **Textes** : "Case [X,Y]".
- **Formes** : Carré.