**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/*
85 lines
3.2 KiB
Markdown
85 lines
3.2 KiB
Markdown
# Affiche Enclos
|
|
|
|
## 1. Définition
|
|
Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce animale qui y réside. Il apparaît automatiquement lorsqu'un enclos est créé et se positionne sur une section horizontale visible de la barrière.
|
|
|
|
## 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 (les visiteurs s'arrêtent pour lire).
|
|
* **Esthétique :** Habille les clôtures et rend le zoo plus réaliste.
|
|
|
|
## 3. Icone
|
|
* **Représentation :** Panneau rectangulaire avec une photo d'animal.
|
|
* **Couleur dominante :** Bois et Blanc.
|
|
|
|
## 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
|
|
|
|
### Données (JSON)
|
|
```json
|
|
{
|
|
"sign_id": "sign_lion_01",
|
|
"parent_enclosure_id": "enclosure_lions_01",
|
|
"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"
|
|
},
|
|
"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.
|