# Spécifications : Carte (Générique)

## Définition
Une carte est une grille de cases représentant un espace de jeu ou de navigation.

## Propriétés
- **Dimensions** : Largeur et hauteur définies en nombre de cases.
- **Biomes** : Les cases ont une couleur de fond représentant leur biome (milieu).
- **Quadrillage** : Les cases sont disposées en grille orthogonale.
- **Cohérence** : Les transitions de couleurs (milieux) et de températures doivent être douces entre les cases adjacentes.

## Types de cartes
- Carte du Zoo (Espace de gestion du joueur)
- Carte du Monde (Espace de navigation multijoueur)

# Annexes Techniques

## 1. Données et États
### Modèle de Données (JSON)
```json
{
  "id": "uuid",
  "type": "enum ('zoo', 'world')",
  "width": "integer",
  "height": "integer",
  "grid": [
    [ { "case_ref": "case_id" } ]
  ],
  "iso_x": "integer",
  "iso_y": "integer",
  "z_index": "integer"
}
```

### Caractéristiques Initiales
**Taille** : Définie à la création.

### Scores Initiaux
**Densité** : 0% occupée.

## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Création à l'initialisation du jeu/compte.

### Conditions de Disparition
Suppression du compte.

### Hérédité
**Configuration** : La disposition des biomes peut être conservée ou régénérée.

## 3. Impacts Environnementaux
### Impact Température
**Globale** : La carte porte la météo globale qui affecte toutes les cases.

### Impact Milieu (Biome)
**Distribution** : La carte gère la répartition des biomes (Génération procédurale ou fixe).

### Impact Saisons
**Cycle** : La carte orchestre le changement de saison pour toutes les entités.

### Impact Heure / Jour-Nuit
**Cycle** : La carte gère l'horloge mondiale.

## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Population** : La carte suit le nombre total d'animaux pour les limites globales.

### Impact Mort
**Cimetière** : La carte peut garder une trace des morts (statistiques).

### Impact Nourriture
**Ressources** : La carte gère les stocks globaux si centralisés.

### Impact Attractivité (Visiteurs/Animaux)
**Score Global** : Somme des attractivités locales.

### Impact Valeur
**Valorisation** : Valeur totale du terrain.

## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Temps** : La carte gère le `deltaTime` global.

### Dépenses (Boutiques/Visiteurs)
**Économie** : La carte centralise les flux financiers (optionnel).

### Trajet Visiteurs
**Réseau** : La carte définit le graphe de navigation global.

## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
*   **Tick** : Mise à jour périodique de toutes les entités.

## 7. Progression
### Tableau des Upgrades
Voir `agrandissement_carte.md`.

## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function updateMap(map):
  foreach entity in map.entities:
    entity.update()
```

### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `MAP_LOADED` | Info | "Carte chargée avec succès." |

# 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)
### Navigation (Action)
**Description UX** : Le joueur explore la carte.
**Description UI** : Drag & Drop (Pan) pour se déplacer. Zoom In/Out (Molette/Pinch).
**Emplacement** : Vue Principale.
**Intégration** : Plein écran.
**Navigation** : Pan/Zoom.
**Événements** : `MAP_MOVE`, `MAP_ZOOM`.

#### Assets
- **Musiques** : Ambiance calme (Zoo) / Aventure (Monde).
- **Sons** : Vent léger.
- **Graphiques** : Grille (Grid lines) subtile.
- **Images** : Fond d'écran (Skybox).
- **Vidéos** : Nuages qui passent (Overlay).
- **Animations** : Inertie du mouvement.
- **Couleurs** : Fond neutre hors carte.
- **Textes** : Coordonnées (Debug).
- **Formes** : Rectangulaire.

## Définition

| Champ | Valeur |
|---|---|
| Concept | Abstraction “carte” : structure de grille + règles de navigation + horloge, déclinée en carte zoo et carte monde. |
| Rôle | Offrir un contrat commun de coordonnées, rendu isométrique, événements de déplacement/zoom, et cycle temps (jour/nuit, saisons). |
| Portée | Base pour `carte_zoo.md` et `carte_monde.md`, et pour les types `case_*`. |
| Contrainte | Aucun cache/mémorisation obligatoire : la carte fournit des fonctions de calcul à la volée (variants, z_index, routes). |

## Fonctions (tableau détaillé)

| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Initialiser carte | création | type, seed | grid | dimensions fixées | Event `MAP_INIT` |
| Résoudre case | lookup | x,y | case | unicité coord | Event `MAP_CASE_RESOLVED` |
| Convertir coord → iso | rendu | x,y | iso_x/iso_y | formule iso stable | Event `MAP_COORD_CONVERTED` |
| Calculer z_index | rendu | x,y | int | priorité y puis x | Event `MAP_ZINDEX_COMPUTED` |
| Déclencher tick | loop | deltaTime | events | mise à jour entités | Event `MAP_TICK` |
| Déplacement caméra | input | pan/zoom | camera state | clamp | Event `MAP_MOVE` / `MAP_ZOOM` |

## Icone de base

| Élément | Spécification |
|---|---|
| Représentation | Grille + boussole |
| Couleur dominante | Neutre |
| Variantes | `icon_map_generic.png`, `icon_compass.png` |
| États | normal, loading, locked |

## Interactions (tableau détaillé)

| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Pan | Navigation | carte autorise pan | drag | caméra bouge | - |
| Zoom | Navigation | - | pinch/wheel | caméra zoom | - |
| Sélection case | Consultation | case interactive | clic | panneau | `CASE_LOCKED` |

## Personnage contextuel (événements & interaction)
Les cartes peuvent afficher un personnage contextuel quand un module de carte est actionné ou lorsqu’un événement impacte la navigation.

### Références
- **Carte du zoo** : avatar du joueur actif comme contexte principal (`avatar_joueur.md`), plus visiteurs/staff selon événements (`carte_zoo.md`).
- **Carte du monde** : maire pour les événements de ville (`maire.md`, `ville.md`), joueurs/bots pour les interactions sociales (`joueur.md`, `bot.md`), visiteurs comme flux (`visiteur.md`).

### Déclencheurs (génériques)
| Event / Action | Condition | Effet UI personnage |
|---|---|---|
| `MAP_LOADED` | carte prête | portrait/mascotte de contexte (selon type) |
| `MAP_MOVE` / `MAP_ZOOM` | navigation | feedback passif (pas de spam) |
| `CASE_LOCKED` | gating | message explicite (raison + action) |

### Skins & thèmes
Le personnage contextuel suit `theme.md`. Les portraits/mini-avatars peuvent utiliser les skins via `inventaire_skins.md` si la mécanique est activée.

## Annexes Techniques

### 1. Données et États (tableau détaillé)

| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `id` | uuid_v4 | `uuid_v4` | DB | unique |
| `type` | enum | `zoo` | DB | `zoo/world` |
| `width` | int | 6 | DB | >0 |
| `height` | int | 5 | DB | >0 |
| `grid[x][y].case_ref` | uuid_v4 | `uuid_v4` | DB | référence |
| `time.day_phase` | enum | `day` | calcul | jour/nuit |
| `time.season` | enum | `spring` | calcul | saisons |
| `iso_x` | int | 0 | calcul | origine |
| `iso_y` | int | 0 | calcul | origine |

#### Caractéristiques Initiales (tableau détaillé)

| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Densité occupée | 0 | % | init |
| DeltaTime | 1 | tick | logique |

#### Scores Initiaux (tableau détaillé)

| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Exploration | 0 | 0..100 | carte monde |
| Aménagement | 0 | 0..100 | carte zoo |

### 2. Cycles de Vie et Apparition (tableau détaillé)

| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Création | init jeu | seed | carte | stable |
| Utilisation | session | input | camera | clamp |
| Destruction | suppression compte | - | supprimée | - |

#### Conditions d'Apparition (tableau détaillé)

| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Initialisation | true | est | carte créée |

#### Conditions de Disparition (tableau détaillé)

| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Compte supprimé | true | est | carte supprimée |

#### Hérédité (tableau détaillé)

| Élément | Hérité | Règle |
|---|---|---|
| Configuration seed | Oui | rejouable |
| Variants render | Non | recalcul |

### 3. Impacts Environnementaux

#### Impact Température (tableau détaillé)

| Condition | Effet carte | Notes |
|---|---|---|
| Météo globale | mod cases | propagée |

#### Impact Milieu (Biome) (tableau détaillé)

| Biome | Effet carte | Notes |
|---|---|---|
| Répartition | gen/procédural | cohérence |

#### Impact Saisons (tableau détaillé)

| Saison | Effet carte | Notes |
|---|---|---|
| Cycle | mod visuel | global |

#### Impact Heure / Jour-Nuit (tableau détaillé)

| Période | Effet carte | Notes |
|---|---|---|
| Nuit | assombrissement | global |

### 4. Impacts Biologiques et Sociaux

#### Impact Reproduction (tableau détaillé)

| Facteur | Effet sur taux | Condition |
|---|---|---|
| Population globale | caps | simulation |

#### Impact Mort (tableau détaillé)

| Cas | Effet | Condition |
|---|---|---|
| Traces | journal | option |

#### Impact Nourriture (tableau détaillé)

| Ressource | Effet | Condition |
|---|---|---|
| Stocks | centralisation | option |

#### Impact Attractivité(Visiteurs (tableau détaillé)

| Action/État | Gain | Rayon | Notes |
|---|---:|---:|---|
| Score global | agrégation | monde | carte monde |

#### Impact Attractivité Animaux) (tableau détaillé)

| Action/État | Effet animaux | Condition |
|---|---|---|
| - | neutre | base |

#### Impact Valeur (tableau détaillé)

| Facteur | Variation | Condition |
|---|---:|---|
| Terrain | + | cases |

### 5. Impacts Logistiques et Économiques

#### Vitesse (Camion) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| deltaTime | avance mission | tick |

#### Vitesse (Nurserie) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| timers | progress | tick |

#### Vitesse (Accueil) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| timers | progress | tick |

#### Vitesse (Recherche) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| projets | durations | tick |

#### Vitesse (Labo) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| refresh offres | 24h | tick |

#### Vitesse (Visite) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| pathfinding | recalcul | obstacles |

#### Dépenses (Billeterie) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Affichage UI | 1 | coins | lore |

#### Dépenses (Boutiques) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |

#### Dépenses (Visiteurs) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |

#### Dépenses (Employés) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |

#### Dépenses (Boutiques) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Section dupliquée | 1 | coins | conservée |

#### Dépenses (Nurseries) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |

#### Dépenses (Nourriture) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |

#### Dépenses (Acceuil des animaux) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |

#### Dépenses (Camion) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | lore |

#### Trajet Visiteurs

##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)

| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Ville | Zoo | attractivité | flux |

##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)

| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Entrée | Enclos | curiosité | route |

##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)

| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Enclos | Boutique | besoin | route |

##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)

| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Zoo | Sortie | fermeture | despawn |

### 6. Événements

#### Événements du Jeu  (tableau détaillé)

| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `MAP_TICK` | loop | dt | update |
| `MAP_LOADED` | init | type | ready |

#### Événements du Carte (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_MOVE` | input | camera |

#### Événements du Zoo (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_INIT` | create | grid |

#### Événements du Ville / Visiteur (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_ZOOM` | input | camera |

#### Événements du Visiteur (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_CASE_RESOLVED` | lookup | case |

#### Événements du Joueur (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `MAP_COORD_CONVERTED` | render | iso |

### 7. Progression

#### Tableau des Upgrades (tableau détaillé)

| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 100 | zoom + | map |

### 8. Logique et Interfaces 

#### Pseudo-code Impacts (tableau détaillé)

| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `updateMap` | map, dt | map | tick |
| `toIso` | x,y | iso | projection |

#### Messages d'Infos / Alerte (tableau détaillé)

| ID | Niveau | Message | Condition |
|---|---|---|---|
| `MAP_LOADED` | Info | "Carte chargée." | init |
| `CASE_LOCKED` | Warning | "Zone verrouillée." | gating |

## Annexes UX/UI 

### 1. Expérience Utilisateur (UX)

#### Description UX (tableau détaillé)

| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Explorer | comprendre espace | navigation | pan/zoom |
| Centrer | retrouver point | perte | bouton recentrer |

#### Description UI (tableau détaillé)

| Composant | Contenu | États |
|---|---|---|
| HUD carte | boutons | visible |
| Tooltip | coord/site | hover |

#### Emplacement (tableau détaillé)

| Zone UI | Position | Notes |
|---|---|---|
| Plein écran | centre | carte |

#### Intégration (tableau détaillé)

| Intégration | Contrat | Notes |
|---|---|---|
| `carte_zoo.md` | usage | build |
| `carte_monde.md` | usage | navigation |

#### Navigation (tableau détaillé)

| Action | Chemin | Résultat |
|---|---|---|
| Pan | drag | move |
| Zoom | pinch | scale |

#### Événements (tableau détaillé)

| Event UI | Déclencheur | Effet |
|---|---|---|
| `MAP_MOVE` | drag | camera |
| `MAP_ZOOM` | pinch | camera |

#### Assets Skinables

##### Musiques (tableau détaillé)

| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `map_generic_loop.mp3` | carte | loop | neutre |

##### Sons (tableau détaillé)

| Asset | Usage | Volume |
|---|---|---|
| `hover_soft.mp3` | hover | bas |
| `ui_zoom.mp3` | zoom | bas |

##### Graphiques (tableau détaillé)

| Asset | Usage | Contraintes |
|---|---|---|
| `grid_lines.png` | overlay | subtil |
| `tooltip_bg.png` | tooltip | lisible |

##### Images (tableau détaillé)

| Asset | Usage |
|---|---|
| `skybox.png` | fond |

##### Vidéos (tableau détaillé)

| Asset | Usage | Durée |
|---|---|---:|
| `clouds_overlay.webm` | fond | loop |

##### Animations (tableau détaillé)

| Animation | Déclencheur | Notes |
|---|---|---|
| inertie pan | move | 0.2s |

##### Couleurs (tableau détaillé)

| Token | Valeur | Usage |
|---|---|---|
| `map_bg` | #202020 | hors carte |
| `map_highlight` | #FFFFFF | hover |

##### Textes (tableau détaillé)

| Clé | FR | EN |
|---|---|---|
| `map.coords` | Coordonnées | Coordinates |
| `map.loaded` | Carte chargée | Map loaded |

##### Formes (tableau détaillé)

| Élément | Forme | Notes |
|---|---|---|
| Tooltip | rectangle arrondi | lisible |
