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