Enrichissement exhaustif des specs : Vue Isométrique et Design

**Motivations:**
- Aligner toute la documentation technique avec la nouvelle direction artistique isométrique (Réf IMG_20260303_170253).
- Faciliter l'implémentation en ajoutant les contraintes techniques liées à la 2.5D (Z-index, Sprites 4 directions).

**Root causes:**
- Besoin de cohérence visuelle et technique sur l'ensemble du projet.

**Correctifs:**
- N/A

**Evolutions:**
- Ajout systématique de la section "Direction Artistique & Vue" dans `Annexes UX/UI` de tous les fichiers.
- Enrichissement des modèles JSON avec coordonnées isométriques (`iso_x`, `iso_y`, `z_index`).
- Précision des interactions (clic, survol) adaptées à la grille losange.
- Conservation stricte de la structure existante (aucun titre supprimé).

**Pages affectées:**
- docs/specs/*
This commit is contained in:
2026-03-05 02:10:32 +01:00
parent 1d3352455e
commit e92c1355d0
74 changed files with 1519 additions and 550 deletions

View File

@@ -5,7 +5,7 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
## 2. Fonctions
* **Information :** Indique aux visiteurs (et au joueur) quel animal se trouve ici.
* **Éducation :** Augmente légèrement le score d'éducation du zoo.
* **Éducation :** Augmente légèrement le score d'éducation du zoo (les visiteurs s'arrêtent pour lire).
* **Esthétique :** Habille les clôtures et rend le zoo plus réaliste.
## 3. Icone
@@ -15,6 +15,7 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
## 4. Interactions
* **Clic :** Ouvre la fiche encyclopédique de l'animal ("Zoopédia").
* **Personnalisation :** (Optionnel) Changer le style du cadre ou l'image.
* **Maintenance :** Peut être vandalisé (tagué) ou cassé, nécessitant une réparation par un agent d'entretien.
## 5. Annexes Techniques
@@ -23,20 +24,61 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim
{
"sign_id": "sign_lion_01",
"parent_enclosure_id": "enclosure_lions_01",
"position": {"x": 10, "y": 11, "face": "south"}, // Position sur la grille et orientation
"created_at": "timestamp",
"updated_at": "timestamp",
"position": {
"x": 10,
"y": 11,
"face": "enum (NORTH, SOUTH, EAST, WEST)"
},
"style_id": "wood_basic",
"status": "enum (OK, BROKEN, TAGGED)",
"animal_info": {
"name": "Lion d'Afrique",
"scientific_name": "Panthera leo",
"conservation_status": "VU" // Vulnerable
}
"conservation_status": "VU"
},
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Règles Métier
* **Placement Auto :** Le jeu détermine la meilleure position (côté sud ou est généralement, face au chemin le plus proche).
* **Unicité :** Une seule affiche par enclos fusionné (ou une tous les X cases de périmètre).
* **Mise à jour :** Si l'animal change (enclos vidé puis rempli avec autre chose), l'affiche se met à jour automatiquement.
### Algorithme de Placement
```python
def place_sign(enclosure):
# Trouver les murs adjacents à un chemin
valid_walls = []
for wall in enclosure.walls:
if is_path(wall.neighbor):
valid_walls.append(wall)
# Priorité : Sud > Est > Ouest > Nord (pour visibilité isométrique)
best_wall = select_best_wall(valid_walls)
create_sign(best_wall.position, best_wall.orientation)
```
## 6. Annexes UX/UI
* **Visuel :** Petit panneau en bois avec une image miniature de l'animal.
* **Lisibilité :** Doit être visible sans cacher les animaux derrière.
* **Zoom :** Devient plus détaillé ou affiche une bulle d'info au survol de la souris.
* **Vue Isométrique :**
* **Orientation :** Le sprite doit correspondre à l'orientation du mur (4 sprites différents).
* **Z-Index :** Doit être dessiné *après* la clôture mais *avant* les visiteurs passant devant.
# 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.