# Spécifications : Chemin ## Définition Les chemins sont des cases aménagées permettant aux visiteurs et au staff de se déplacer efficacement à travers le zoo. Ils connectent les différentes infrastructures (Enclos, Boutiques, Services). ## Fonctions * **Circulation :** Permet le déplacement des entités (Visiteurs, Staff). * **Connexion :** Relie les bâtiments entre eux pour former un réseau accessible. * **Esthétique :** Améliore l'aspect visuel du zoo. # Annexes Techniques ## 1. Données et États ### Modèle de Données (JSON) ```json { "type": "path", "material": "enum('terre','gravier','paves','bois','tapis_rouge')", "level": "integer (1-7)", "x": 10, "y": 12, "connected_neighbors": ["enum('N','S','E','W')"], "movement": { "visitor_speed_multiplier": "float (>= 1.0)", "staff_speed_multiplier": "float (>= 1.0)", "visitor_preference_weight": "integer (0-100)" }, "economy": { "build_cost": "integer (coins)", "upkeep_cost_per_day": "integer (coins)", "attractiveness_bonus": "integer" }, "render": { "auto_tile_key": "string", "variant_seed": "integer (for random subtle variation)" }, "iso_x": "integer", "iso_y": "integer", "z_index": "integer" } ``` ## 2. Règles Métier * **Connexion Automatique :** Les textures des chemins se connectent automatiquement aux chemins adjacents (Auto-tiling). * **Vitesse :** Bonus de vitesse de déplacement pour les entités sur les chemins. * Terre : visiteurs x1.15, staff x1.25 * Gravier : visiteurs x1.25, staff x1.35 * Pavés : visiteurs x1.35, staff x1.45 * Bois (pont / passerelle) : visiteurs x1.20, staff x1.30 * Tapis rouge (VIP) : visiteurs VIP x1.50 (sinon x1.10), bonus satisfaction +2/min sur la tuile * **Attraction** : les visiteurs préfèrent rester sur les chemins quand ils se déplacent (`visitor_preference_weight`). * **Construction** : une tuile chemin ne peut pas être posée si la case est occupée par un bâtiment/animal/enclos (sauf règle “chemin sous enclos” explicitement définie ailleurs). * **Auto-tiling** : le `auto_tile_key` dépend de `connected_neighbors` et de `material` (ex. `paves_NSE`). * **Cas limites** : conversion d’un chemin sous un visiteur → appliquer au tick suivant, pas instantanément (évite téléportations). # 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 * **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. ## 1. Détails Spécifiques * **Textures Connectées :** Les chemins utilisent des textures connectées (Terre, Gravier, Pavés) pour éviter les coupures nettes entre les cases. * **Variété :** Différents types de sols disponibles (Terre, Gravier, Pavés). * **Lisibilité iso** : les bordures de chemin doivent rester visibles même sous l’occlusion partielle (contraste + outline discret). * **Hitbox** : clic sur le losange (tuile) sélectionne la tuile chemin ; un clic sur une entité au-dessus a priorité (z-order + hit testing).