Files
builazoo/docs/specs/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.8 KiB
Raw Blame History

Enclos

1. Définition

Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'enclos est constitué de cases de terrain modifiées pour répondre aux besoins des animaux (biome, végétation, eau). Une caractéristique clé est la fusion automatique des cases adjacentes contenant le même animal pour former un grand enclos unique.

2. Fonctions

  • Hébergement : Lieu de vie des animaux.
  • Fusion (Merge) : Si deux cases "Enclos [Animal X]" sont posées côte à côte, les barrières internes disparaissent pour créer un espace commun (Auto-tiling).
  • Visibilité : Permet aux visiteurs d'observer les animaux (augmente l'attractivité).
  • Sécurité : Empêche les animaux de s'enfuir (si entretenu).

5. Annexes Techniques

Données (JSON)

{
  "enclosure_id": "uuid",
  "owner_zoo_id": "uuid",
  "created_at": "timestamp",
  "updated_at": "timestamp",
  "animal_type": "string (ref inventaire_animaux)",
  "biome_type": "enum('prairie','ocean','montagne','savane','toundra','desert','jungle','marais')",
  "cells": [
    {"x": 10, "y": 10},
    {"x": 10, "y": 11},
    {"x": 11, "y": 10},
    {"x": 11, "y": 11}
  ],
  "area": 4,
  "capacity": 6,
  "current_population": 3,
  "cleanliness": 85,
  "fence_health": 100,
  "decoration_score": 15,
  "perimeter_edges": "integer",
  "fence_style_id": "string (skin/theme)",
  "sign": {
    "enabled": "boolean",
    "sign_id": "uuid | null"
  },
  "render": {
    "auto_tile_key": "string",
    "fence_segments": [
      {
        "edge": "enum('N','S','E','W')",
        "x": "integer",
        "y": "integer",
        "variant": "string",
        "occluder": "boolean"
      }
    ]
  },
  "iso_x": "integer",
  "iso_y": "integer",
  "z_index": "integer"
}

Règles Métier

  • Algorithme de Fusion : À chaque placement/suppression de case enclos, recalculer les composants connectés (Connected Components) pour mettre à jour les murs.
  • Murs : Les murs ne sont générés que sur les bords de la zone connectée qui ne touchent pas une autre case du même enclos.
  • Cohérence espèce : un composant connecté ne peut contenir quun animal_type nominal. Si une case est convertie, elle déclenche un split/merge.
  • Capacité : capacity = floor(area * capacity_per_tile)capacity_per_tile dépend de lespèce (valeur par défaut 1.5).
  • Propreté : décroît par présence animale et par visiteurs proches ; remonte via employé (soigneur/nourisseur selon design) et/ou nettoyage.

Cas limites (Edge cases)

  • Split : retirer une case centrale peut séparer lenclos en 2 composants → créer 2 enclos (nouveaux enclosure_id) et recalculer clôtures/affiches.
  • Pont/chemin : une case chemin/pont adjacente ne fait pas partie de lenclos mais influence la pose de laffiche (priorité visibilité).
  • Occlusion : si un segment de clôture masque lanimal (S/E), utiliser variante basse ou alpha réduit.

6. 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.

0. Direction Artistique & Vue

  • Note : ce bloc double un autre bloc similaire ; les deux sont conservés. Celui-ci précise les règles de grille/profondeur.
  • Vue : Isométrique (2.5D).
  • Grille : Les déplacements se font sur une grille losange.
  • Sprites : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest).
  • Profondeur : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut").
  • Style Visuel : Inspiré de IMG_20260303_170253.jpg.
    • Coloré, vivant, détails foisonnants.
    • Aspect "dessiné à la main" ou "cartoon soigné".
    • Couleurs vives et contours nets.

Détails Spécifiques

  • Visuel Barrières : Génération procédurale des barrières uniquement sur le pourtour (Auto-tiling). Fusion visuelle des barrières si adjacents.
  • Isométrique : Les barrières au Sud et à l'Est doivent être semi-transparentes ou plus basses pour ne pas cacher les animaux.
  • Signalétique : Affiche de l'animal visible sur la clôture.

Interactions (sélection / inspection)

  • Sélection enclos : clic sur une clôture ou sur une case enclos ouvre un panneau “Enclos”.
  • Panneau : espèce, population/capacité, propreté, santé clôture, bonus déco, bouton “Améliorer clôture”, bouton “Déplacer affiche” (si optionnel).
  • Erreurs : tentative dajouter un animal dune autre espèce dans un enclos fusionné → refus + message.