# Spécifications : Achat et Upgrade des Cases

## Construction
- Sur une case vide de type "Terrain", le joueur peut acheter un bâtiment.
- Le coût dépend du type de bâtiment.
- **Pré-requis** : Certaines cases peuvent nécessiter un déblayage (rochers, arbres) avant construction.

## Types Constructibles
- Nurserie
- Boutique
- (Les autres bâtiments comme Billeterie/Recherche sont souvent uniques et upgradables, mais on peut imaginer en construire d'autres si le design le permet).

## Upgrade de Case (Terrain)
- **Changement de Milieu (Terraforming)** : Payer pour changer la couleur (Biome) d'une case.
- **Changement de Température** : Payer pour installer un régulateur thermique sur une case (invisible ou petit objet technique).

# Annexes Techniques

## 1. Données et États
### Modèle de Données (Modification Case)
```json
{
  "tile_id": "x_y_coords",
  "action": "terraform",
  "target_biome": "savanna",
  "cost": 500,
  "duration_ms": 2000
}
```
Voir `case_zoo.md` et `achat_upgrade_generique.md`.

## 7. Progression
### Tableau des Upgrades
**Changement de Milieu** :
| Niveau | Coût | Précision | Temps |
| :--- | :--- | :--- | :--- |
| 1 | 500 | Changement vers biome adjacent uniquement | 5s |
| 7 | 5000 | Changement vers n'importe quel biome (Terraformation avancée) | 2s |

**Régulateur Thermique** :
| Niveau | Coût | Plage Réglage | Temps |
| :--- | :--- | :--- | :--- |
| 1 | 200 | +/- 5°C | 0s |
| 7 | 2000 | +/- 50°C | 0s |

## 8. Logique et Interfaces
### Algorithme de Terraformation
```python
def terraform_tile(tile, target_biome, player):
    # Vérifier adjacence (si niveau bas)
    if player.terraform_level < 7:
        neighbors = get_neighbors(tile)
        if target_biome not in [n.biome for n in neighbors]:
            return error("BIOME_NOT_ADJACENT", "Vous devez étendre un biome existant.")
            
    if player.money < get_terraform_cost(target_biome):
        return error("NO_MONEY")
        
    player.money -= get_terraform_cost(target_biome)
    tile.biome = target_biome
    update_visuals(tile)
    check_animal_compatibility(tile) # Alerte si un animal est dessus
    
    return 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)
### Modification Terrain (Action)
**Description UX** : Le joueur sélectionne une case et choisit "Modifier Biome" ou "Température".
**Description UI** : Palette de couleurs (Biomes) ou Slider (Température).
**Mode Peinture** : Permet de glisser le doigt pour appliquer le biome/température à plusieurs cases adjacentes rapidement.
**Emplacement** : Menu Contextuel Case.
**Intégration** : Outil pinceau ou slider.
**Navigation** : Clic Case -> Outil -> Appliquer.
**Événements** : `TERRAFORM_CASE`.

#### Assets
- **Musiques** : Jingle "Travaux Publics" (bruits de chantier rythmés).
- **Sons** : `digging.mp3` (Biome), `hissing_gas.mp3` (Température).
- **Graphiques** : Icône Pelle, Thermomètre.
- **Images** : Textures sol (Herbe, Sable, Neige).
- **Vidéos** : Animation de transition de biome (morphing de texture).
- **Animations** : Transition de couleur (Fade) sur la case.
- **Couleurs** : Vert, Jaune, Blanc.
- **Textes** : "Coût : X".
- **Formes** : Curseur Pinceau.

### Vue Isométrique
- **Grid Overlay** : Lors de l'édition, afficher la grille en surbrillance pour bien délimiter les cases.
- **Feedback Visuel** : La case "saute" légèrement ou émet de la poussière lors du changement de biome.
- **Bords** : Gérer les transitions douces (blends) entre deux cases de biomes différents pour éviter l'effet damier trop strict (sauf si style voxel strict).
