# Spécifications : Case de Zoo (Générique) ## Définition Case spécifique à la grille du zoo, pouvant accueillir les éléments de gestion. ## Types de Contenu Possibles - **Bâtiments** : Billeterie, Nurserie, Boutique, Centre de Recherche, École, Accueil Animaux. - **Animaux** : Bébés matures, Animaux adultes. - **Éléments Mobiles** : Visiteurs, Camion (sur sa zone dédiée). - **Vide** : Terrain libre pour construction ou placement. ## Propriétés Spécifiques - **Occupation** : Une case ne peut contenir qu'un seul élément principal (bâtiment/animal) à la fois. - **Visite** : Enregistre la date de dernier passage d'un visiteur (pour la règle de disparition). - **Qualité** : Indicateur visuel d'adéquation avec l'animal posé dessus (Jaunissement, Givre). ## Liste des Cases Spéciales (cf. Carte Zoo) - Agrandissement - Recherche - Billeterie - Nurserie - Accueil - Nourriture - Camion # Annexes Techniques ## 1. Données et États ### Modèle de Données (JSON) Hérite de `Case (Générique)`. ```json { "last_visit_time": "timestamp | null", "visit_count_total": "integer", "visit_count_day": "integer", "heatmap_score": "float (0-100)", "quality_score": "float (0-100)", "pathing": { "walkable": "boolean", "movement_cost": "float (>= 1.0)", "preferred": "boolean (true for path tiles)" }, "zoo_specific_flags": [ "enum('premium_spot','near_entry','near_shop','near_enclosure','staff_only')" ] } ``` ### Contraintes (Invariants) * **Walkable** : une case avec `content_type` bâtiment/animal est généralement `walkable=false` pour les visiteurs (sauf exceptions design). * **last_visit_time** : mis à jour uniquement quand un visiteur “observe” réellement (pas juste traverse) si la mécanique de “visite” est distincte. * **movement_cost** : > 1.0 sur herbe/boue, = 1.0 sur chemins, < 1.0 interdit (évite vitesse infinie). ### Caractéristiques Initiales | Caractéristique | Valeur Initiale | | :--- | :--- | | Dernière Visite | Création du zoo | | Qualité | 100 | ### Scores Initiaux **Passages** : 0 (Heatmap de fréquentation). **Propreté** : 100 (aucun déchet). **Coût de marche** : 1.2 (herbe) par défaut, 1.0 (chemin) si la case est convertie. ## 2. Cycles de Vie et Apparition ### Conditions d'Apparition Génération zoo. ### Conditions de Disparition **Jamais** : Une case ne disparaît pas, elle change juste de contenu. ### Hérédité **Qualité du Sol** : Un sol bien entretenu (fertilisé) garde ses bonus après un reset partiel. ## 3. Impacts Environnementaux ### Impact Température Voir `case_generique.md`. ### Impact Milieu (Biome) Voir `case_generique.md`. ### Impact Saisons **Neige** : La case devient blanche en hiver (si T° < 0). ### Impact Heure / Jour-Nuit **Ombres** : Les ombres des objets sur la case tournent avec le soleil. ## 4. Impacts Biologiques et Sociaux ### Impact Reproduction **Lieu de rencontre** : Les cases "Buissons" favorisent les rencontres. ### Impact Mort **Lieu de décès** : Une case où un animal est mort garde une "odeur" (malus stress) pendant 24h. ### Impact Nourriture **Pâturage** : Une case herbeuse peut être broutée (devient terreuse). ### Impact Attractivité (Visiteurs/Animaux) **Vue** : Une case "Point de Vue" (hauteur) augmente l'attractivité des animaux alentour. ### Impact Valeur **Emplacement** : Une case proche de l'entrée vaut plus cher (emplacement premium pour boutiques). ## 5. Impacts Logistiques et Économiques ### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite) **Revêtement** : Herbe (Lent), Terre (Moyen), Pavés (Rapide). ### Dépenses (Boutiques/Visiteurs) **Nettoyage** : Coût si la case est sale (déchets visiteurs). ### Trajet Visiteurs **Obstacle** : Une case occupée par un bâtiment ou de l'eau est infranchissable (sauf pont). ## 6. Événements ### Événements du Jeu / Carte / Zoo / Ville / Visiteur * **Passage Visiteur** : Met à jour `last_visit_time`. * **Salissure** : Apparition d'un déchet. ## 7. Progression ### Tableau des Upgrades Voir `achat_upgrade_case.md`. ## 8. Logique et Interfaces ### Pseudo-code Impacts ``` function checkAnimalDisappearance(case): if currentTime - case.last_visit_time > MAX_TIME_WITHOUT_VISIT: removeAnimal(case.content) ``` ### Messages d'Infos / Alerte | ID | Niveau | Message | | :--- | :--- | :--- | | `CASE_DIRTY` | Info | "Une case est sale." | | `PATH_BLOCKED` | Warning | "Chemin bloqué : les visiteurs recalculent leur trajet." | | `ANIMAL_NOT_VISITED` | Warning | "Un animal n'a pas été observé depuis longtemps." | # 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. ## 1. Expérience Utilisateur (UX) ### Sélection (Action) **Description UX** : Clic sur une case zoo. **Description UI** : Highlight + Menu contextuel adapté au contenu (Animal -> Stats, Bâtiment -> Upgrade, Vide -> Construire). **Emplacement** : Grille. **Intégration** : Standard. **Navigation** : Clic. **Événements** : `SELECT_ZOO_CASE`. #### Assets - **Musiques** : Son "Click". - **Sons** : `select_soft.mp3`. - **Graphiques** : Cadre sélection. - **Images** : Icône Menu Contextuel. - **Vidéos** : Effet de sélection (contour brillant). - **Animations** : Rebondissement léger du contenu. - **Couleurs** : Blanc. - **Textes** : "Case [X,Y]". - **Formes** : Carré.