# Spécifications : Agrandissement de la Carte du Monde

## Concept
La carte du monde est vaste, mais le joueur ne voit initialement qu'une petite zone autour de son zoo.

## Mécanique
- **Coût** : Ne se paie pas en pièces, mais en **Unités de Recherche** produites par les Centres de Recherche.
- **Palier** : Chaque niveau d'agrandissement coûte plus cher.
- **Effet** : Dézoome la carte / Débloque le brouillard de guerre, révélant de nouveaux zoos, villes et laboratoires plus lointains.
- **Intérêt** : Accès à plus de marchés (achat/vente), plus de villes (visiteurs potentiels).

# Annexes Techniques

## 1. Données et États
### Modèle de Données (JSON)
Propriété `view_radius` sur `Zoo` ou `Player`.
```json
{
  "player_id": "uuid",
  "world_map_state": {
    "view_radius_km": 100,
    "unlocked_zones": ["zone_0_0", "zone_0_1"],
    "fog_of_war_mask": "bitmask_string"
  }
}
```

### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Rayon Vue | 100 km |

## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Points Recherche) | Rayon Vue |
| :--- | :--- | :--- |
| 1 | 0 | 100 km |
| 2 | 100 | 200 km |
| 3 | 250 | 350 km |
| 4 | 500 | 550 km |
| 5 | 1000 | 800 km |
| 6 | 2500 | 1200 km |
| 7 | 5000 | 2000 km |

## 8. Logique et Interfaces
### Algorithme d'Exploration
```python
def explore_world(player):
    next_level = get_next_exploration_level(player.exploration_level)
    cost = next_level.cost
    
    if player.research_points < cost:
        return error("NOT_ENOUGH_RP", "Points de recherche insuffisants.")
        
    player.research_points -= cost
    player.exploration_level += 1
    player.view_radius = next_level.radius
    
    # Révéler les POI dans le nouveau rayon
    new_pois = find_pois_in_radius(player.zoo_location, player.view_radius)
    notify_discovery(new_pois)
    
    return success("EXPLORATION_SUCCESS")
```

# 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)
### Découverte (Passif/Action)
**Description UX** : En payant des points de recherche, le brouillard de guerre recule sur la carte du monde.
**Description UI** : Animation de nuages qui s'écartent. De nouvelles icônes (Villes, Zoos) apparaissent.
**Emplacement** : Carte Monde.
**Intégration** : Vue globale.
**Navigation** : Bouton "Explorer" (HUD) -> Animation.
**Événements** : `EXPLORE_WORLD`.

#### Assets
- **Musiques** : Jingle découverte (style Zelda/Civ).
- **Sons** : `wind_whoosh.mp3`.
- **Graphiques** : Nuages (Brouillard de guerre).
- **Images** : Carte au trésor (Icône).
- **Vidéos** : Effet de dissipation de brume.
- **Animations** : Fade out des nuages. Scale up de la vue (Dezoom).
- **Couleurs** : Blanc/Gris (Nuages).
- **Textes** : "Nouvelle zone découverte !".
- **Formes** : Cercle (Rayon de vue).

### Vue Isométrique
- **Carte** : La carte du monde peut être stylisée comme une carte papier posée sur une table, ou un globe holographique.
- **Bords** : Les bords de la zone connue sont flous ou déchirés.
