# Spécifications : Boutique

## Définition
Bâtiment commercial générant des revenus passifs grâce aux visiteurs.

## Fonctionnalités
- **Vente** : Vend des produits (souvenirs, nourriture, boissons) aux visiteurs.
- **Attraction** : Attire les visiteurs sur sa case.
- **Rétention** : Augmente la durée de visite (satisfaction besoins).

## Niveaux d'Amélioration (7 niveaux)
- **Coût** : Progressif par palier.
- **Effet** : Augmente le revenu par visiteur et la capacité d'accueil simultanée.
- **Ratio** : 1 unité couvre 5 visiteurs simultanés max.

# Annexes Techniques

## 1. Données et États
### Modèle de Données (JSON)
```json
{
  "id": "uuid",
  "type": "shop",
  "level": "integer (1-7)",
  "position": { "x": "int", "y": "int" },
  "stats": {
    "revenue_total": "integer",
    "visitors_served": "integer"
  },
  "iso_x": "integer",
  "iso_y": "integer",
  "z_index": "integer"
}
```

### Caractéristiques Initiales
| Caractéristique | Valeur Initiale (Niv 1) |
| :--- | :--- |
| Revenu / Visiteur | 15 pièces |
| Capacité | 5 visiteurs |
| Attractivité | 10 |

### Scores Initiaux
**Stock** : 100 unités.
**Popularité** : 10/100.

## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Construction par le joueur sur case vide.

### Conditions de Disparition
Destruction par le joueur (Remboursement 50%).

### Hérédité
**Franchise** : Coût construction -10% si 5 boutiques identiques déjà posées (Économie d'échelle).

## 3. Impacts Environnementaux
### Impact Température
**Canicule** : Vente Eau x3. Vente Chocolat -50%.
**Froid** : Vente Chocolat x3. Vente Glaces -80%.

### Impact Milieu (Biome)
**Thème** : +10% ventes si le skin boutique correspond au biome (ex: Cabane en bois en Forêt).

### Impact Saisons
| Saison | Modificateur Ventes |
| :--- | :--- |
| Été | +20% (Boissons/Glaces) |
| Hiver | +10% (Chocolat chaud/Cadeaux) |
| Automne | +5% (Parapluies) |
| Printemps | Standard |

### Impact Heure / Jour-Nuit
| Heure | Fréquentation |
| :--- | :--- |
| 12h-14h | Pic (Repas - Food) |
| 16h-18h | Pic (Souvenirs avant départ - Gifts) |
| Nuit | Fermé (0 Ventes) |

## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Merchandising** : Vente peluche "Espèce du moment" x2 lors d'une naissance rare.

### Impact Mort
**Deuil** : Ventes -20% dans les boutiques proches d'une mort récente (Ambiance triste).

### Impact Nourriture
**Concurrence** : Si Stand Nourriture proche (< 3 cases), ventes Food partagées (-10% chacun).

### Impact Attractivité (Visiteurs/Animaux)
| Niveau | Rayon Attraction |
| :--- | :--- |
| 1 | 2 cases |
| 7 | 10 cases (Centre commercial) |

### Impact Valeur
**Revente** : 50% de l'investissement initial + upgrades.

## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Vitesse Service** : 1 visiteur / 5 secondes (Niv 1) -> 1 visiteur / 1 seconde (Niv 7 - Caisses auto).

### Dépenses (Boutiques/Visiteurs)
Génère du revenu. Coût réapprovisionnement : 10% du CA (automatique).

### Trajet Visiteurs
Point d'intérêt majeur pour le pathfinding (Poids 50). Arrêt obligatoire si besoin > 80.

## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
*   **Vente** : Gain de pièces.
*   **File d'attente** : Si Capacité atteinte, visiteurs frustrés.
*   **Rupture Stock** : Si stock géré, fermeture temporaire.

## 7. Progression
### Tableau des Upgrades
| Niveau | Coût (Pièces) | Revenu/Visiteur | Capacité | Temps Construction |
| :--- | :--- | :--- | :--- | :--- |
| 1 | 100 | 15 | 5 | 0s |
| 2 | 150 | 20 | 8 | 0s |
| 3 | 225 | 25 | 12 | 0s |
| 4 | 340 | 35 | 18 | 0s |
| 5 | 510 | 50 | 25 | 0s |
| 6 | 765 | 70 | 35 | 0s |
| 7 | 1150 | 100 | 50 | 0s |

## 8. Logique et Interfaces
### Pseudo-code Impacts
```
function processShop(shop, visitors):
  queue = visitors.filter(v => v.target == shop)
  served = min(queue.length, shop.capacity)

  for i in 0..served:
    revenue = shop.baseRevenue * seasonMod
    player.addCoins(revenue)
    visitors[i].satisfaction += 5
    visitors[i].needs.thirst = 0
```

### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `SHOP_FULL` | Warning | "Boutique pleine ! Des clients partent." |
| `SHOP_PROMO` | Info | "Soldes lancées ! Affluence +20%." |

# 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)
### Vente (Passif)
**Description UX** : Les visiteurs entrent dans la boutique, y restent quelques secondes, puis ressortent. Des pièces volent vers le compteur.
**Description UI** : Animation de porte qui s'ouvre/ferme. Popups "+15" au-dessus du toit.
**Emplacement** : Case Boutique.
**Intégration** : Automatique.
**Navigation** : Auto (Comportement).
**Événements** : `SALE_MADE`.

#### Assets
- **Musiques** : Musique d'ambiance "Supermarché" (Muzak).
- **Sons** : `coin_jingle.mp3` (volume bas, pas trop répétitif).
- **Graphiques** : Sprite Boutique (différents skins selon type : Burger, Cadeaux).
- **Images** : Icônes Produits (Burger, Peluche, Ballon).
- **Vidéos** : Pub télévisée miniature sur l'écran de la boutique (détail).
- **Animations** : Pièce dorée qui monte et disparaît.
- **Couleurs** : Or #FFD700.
- **Textes** : "+XX".
- **Formes** : Bulle de dialogue rectangulaire.

### Consultation Stats (Consultation)
**Description UX** : Le joueur clique pour voir combien la boutique a rapporté.
**Description UI** : **Bottom Sheet** simple avec "Revenus totaux" et "Clients servis".
**Emplacement** : Case Boutique.
**Intégration** : Standard.
**Navigation** : Clic -> Modal.
**Événements** : `OPEN_SHOP`.

#### Assets
- **Musiques** : Jingle "Caisse" (court).
- **Sons** : `ui_open.mp3`
- **Graphiques** : Graphique en barres simple.
- **Images** : Icône Caisse.
- **Vidéos** : Graphique animé des ventes (barres qui montent).
- **Animations** : Barres qui montent progressivement.
- **Couleurs** : Vert (Profit).
- **Textes** : Chiffres clés.
- **Formes** : Rectangle arrondi.

### Construction (Action)
**Description UX** : Le joueur choisit "Boutique" dans le menu construction et la place sur la grille.
**Description UI** : Fantôme du bâtiment vert/rouge selon validité.
**Alternative** : Tap to Select -> Tap to Place.
**Emplacement** : Menu Construction -> Grille.
**Intégration** : Mode construction global.
**Navigation** : Clic Menu -> Drag/Click Grille.
**Événements** : `BUILD_SHOP`.

#### Assets
- **Musiques** : Bruit de chantier (marteau, scie).
- **Sons** : `construction_hammer.mp3`.
- **Graphiques** : Sprite Fantôme semi-transparent.
- **Images** : Plan bleu (Blueprint) au sol.
- **Vidéos** : Time-lapse construction (accéléré).
- **Animations** : Petit effet de poussière à la pose.
- **Couleurs** : Bleu (Blueprint).
- **Textes** : "Construction".
- **Formes** : Grille de placement.
