Files
builazoo/docs/specs/affiche_enclos.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

4.0 KiB
Raw Blame History

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)

{
  "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)",
  "status_since": "timestamp",
  "repair_cost": "integer",
  "clean_cost": "integer",
  "cooldowns": {
    "next_interaction_at": "timestamp"
  },
  "animal_info": {
    "name": "Lion d'Afrique",
    "scientific_name": "Panthera leo",
    "conservation_status": "VU"
  },
  "i18n": {
    "title_key": "string",
    "subtitle_key": "string"
  },
  "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.
  • Dégradation :
    • TAGGED : naffecte pas la lisibilité mais réduit lattractivité (ex. -5 rayon 6 cases) jusquau nettoyage.
    • BROKEN : la Zoopédia est inaccessible au clic, et malus attractivité plus fort (ex. -15 rayon 8 cases).
  • Cooldown clic : éviter les spams ; appliquer next_interaction_at (ex. 1s) sur ouverture Zoopédia.

Algorithme de Placement

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.

Messages i18n (exemples)

  • ENCLOSURE_SIGN_OPEN : FR "Ouvrir la Zoopédia" / EN "Open Zoopedia"
  • ENCLOSURE_SIGN_TAGGED : FR "Affiche taguée" / EN "Sign tagged"
  • ENCLOSURE_SIGN_BROKEN : FR "Affiche cassée" / EN "Sign broken"

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.