# Spécifications : Achat et Upgrade des Boutiques

## Construction
- Peut être construite sur n'importe quelle case vide de type "Terrain".
- Nécessite une connexion à un chemin pour être accessible aux visiteurs.

## Upgrade (7 Niveaux)
- **Attrait** : Attire les visiteurs de plus loin sur la grille (Rayon d'action).
- **Revenu** : Augmente le montant dépensé par chaque visiteur qui passe sur la case (Multiplicateur de prix).
- **Capacité** : Augmente le nombre de visiteurs pouvant interagir simultanément (File d'attente).

# Annexes Techniques

## 1. Données et États
### Modèle de Données (Transaction Upgrade)
```json
{
  "transaction_id": "uuid",
  "building_id": "uuid",
  "building_type": "shop",
  "current_level": "integer",
  "target_level": "integer",
  "cost": "float",
  "currency": "coins",
  "status": "enum (PENDING, COMPLETED, FAILED)",
  "timestamp": "timestamp"
}
```
*Voir `boutique.md` pour le modèle de données de l'entité Boutique.*

## 7. Progression
### Tableau des Upgrades
*Voir `boutique.md` pour le tableau détaillé des coûts et effets par niveau.*

## 8. Logique et Interfaces
### Pseudo-code Interaction
```python
def upgrade_shop(shop, player_wallet):
    # Vérification niveau max
    if shop.level >= MAX_LEVEL:
        return error("MAX_LEVEL_REACHED")
        
    next_level_config = get_shop_config(shop.type, shop.level + 1)
    cost = next_level_config.cost
    
    # Vérification fonds
    if player_wallet.coins < cost:
        return error("INSUFFICIENT_FUNDS")
        
    # Transaction
    player_wallet.debit(cost)
    shop.level += 1
    shop.stats = next_level_config.stats
    shop.visual_state = "UPGRADING" # Déclenche anim
    
    start_upgrade_timer(shop, next_level_config.build_time)
    
    return success("UPGRADE_STARTED")
```

### Cas Limites
- **Fonds insuffisants** : Bouton grisé + Tooltip rouge.
- **Upgrade en cours** : Impossible de lancer un autre upgrade tant que le précédent n'est pas fini.
- **Boutique utilisée** : L'upgrade n'éjecte pas les visiteurs actuels, mais bloque l'entrée de nouveaux pendant les travaux (si temps > 0).

# 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)
### Rénovation (Action)
**Description UX** : Améliorer la boutique change son apparence et ses stats.
**Description UI** : Le sprite du bâtiment change (devient plus grand/beau).
**Emplacement** : Case Boutique.
**Intégration** : Visuel immédiat.
**Navigation** : Upgrade -> Validation.
**Événements** : `UPGRADE_SHOP_VISUAL`.

#### Assets
- **Musiques** : Musique d'ascenseur (Muzak) apaisante.
- **Sons** : `construction_finish.mp3`.
- **Graphiques** : Sprites Boutiques Niv 1-7.
- **Images** : Photo avant/après (style émission rénovation).
- **Vidéos** : Ruban d'inauguration coupé.
- **Animations** : Effet de "pop" ou échafaudage rapide.
- **Couleurs** : Doré (pour les niveaux élevés).
- **Textes** : "Niveau Supérieur !".
- **Formes** : Particules Étoiles.

### Vue Isométrique
- **Travaux** : Si l'upgrade prend du temps, afficher un sprite "En travaux" (bâche, échafaudage) par-dessus la boutique.
- **Particules** : Lors de la complétion, explosion de confettis/étoiles en 3D isométrique au-dessus du toit.
- **Feedback** : Le bâtiment peut faire un petit saut (scale up/down) pour signifier l'upgrade.
