**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
81 lines
3.3 KiB
Markdown
81 lines
3.3 KiB
Markdown
# Objet Enclos
|
||
|
||
## 1. Définition
|
||
Élément d'enrichissement spécifique à chaque espèce animale, placé à l'intérieur de l'enclos pour améliorer le bien-être et stimuler les comportements naturels. Chaque animal possède son objet unique (ex: Arbre à singe, Grattoir à ours, Rocher chauffant pour lézards).
|
||
|
||
## 2. Fonctions
|
||
* **Bien-être :** Augmente significativement le bonheur des animaux.
|
||
* **Animation :** Déclenche des animations uniques (le singe grimpe, l'ours se frotte, etc.).
|
||
* **Attractivité :** Les visiteurs adorent voir les animaux interagir avec ces objets.
|
||
|
||
## 3. Icone
|
||
* **Représentation :** Ballon de jeu ou Tronc d'arbre.
|
||
* **Couleur dominante :** Variable selon l'objet.
|
||
|
||
## 4. Interactions
|
||
* **Achat/Placement :** Via le menu de l'enclos ou la boutique (onglet "Enrichissement").
|
||
* **Interaction Animal :** L'animal s'y rend périodiquement pour jouer ou se reposer.
|
||
|
||
## 5. Annexes Techniques
|
||
|
||
### Données (JSON)
|
||
```json
|
||
{
|
||
"object_id": "enrichment_monkey_tree",
|
||
"name": "Arbre à Singe",
|
||
"compatible_animals": ["chimpanzee", "lemur"],
|
||
"cost": 150,
|
||
"created_at": "timestamp",
|
||
"updated_at": "timestamp",
|
||
"durability": 100,
|
||
"repair_cost": 30,
|
||
"bonus_happiness": 20,
|
||
"bonus_attractiveness": 10,
|
||
"cooldowns": {
|
||
"use_interval_seconds": 120,
|
||
"next_usable_at": "timestamp"
|
||
},
|
||
"placement": {
|
||
"enclosure_id": "uuid",
|
||
"grid": { "x": "integer", "y": "integer" },
|
||
"iso_x": "integer",
|
||
"iso_y": "integer",
|
||
"z_index": "integer",
|
||
"hitbox": "enum('tile','base_sprite','custom_polygon')"
|
||
},
|
||
"render": {
|
||
"sprite_id": "string",
|
||
"variant_seed": "integer"
|
||
}
|
||
}
|
||
```
|
||
|
||
### Règles Métier
|
||
* **Exclusivité :** Un objet conçu pour les lions ne fonctionnera pas (ou mal) pour les pingouins.
|
||
* **Espace :** Occupe de la place dans l'enclos (réduit la surface "libre" mais augmente la qualité).
|
||
* **Limite :** 1 objet spécial par X cases d'enclos pour éviter la surcharge.
|
||
* **Effet “mauvaise compatibilité”** : si un animal non compatible interagit, bonus réduit à 10% et risque de casse +5%.
|
||
* **Usure** : `durability` baisse à chaque utilisation (ex. -1) et par jour (ex. -2/jour). En dessous de 20 : animation “abîmé” + malus (bonus_happiness / 2).
|
||
* **Réparation** : action joueur ou employé (soigneur/agent selon design) ramène `durability` à 100 contre `repair_cost`.
|
||
* **Pathfinding** : l’objet est un obstacle interne à l’enclos (visiteurs ne le traversent pas si l’enclos est visitable ; animaux l’utilisent comme target).
|
||
|
||
## 6. Annexes UX/UI
|
||
* **Visuel 3D/Iso :** Modèle détaillé correspondant au thème de l'animal.
|
||
* **Feedback :** Cœurs ou étoiles émanant de l'animal lorsqu'il utilise l'objet.
|
||
|
||
### États visuels
|
||
* **Neuf** : couleurs vives + petite animation idle.
|
||
* **Usé** (`durability < 50`) : texture éraflée, bruit plus sec.
|
||
* **Cassé** (`durability <= 0`) : sprite “cassé”, interaction désactivée jusqu’à réparation.
|
||
|
||
|
||
# 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.
|