# 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)",
  "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` : n’affecte pas la lisibilité mais réduit l’attractivité (ex. -5 rayon 6 cases) jusqu’au 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
```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.

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