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