Files
builazoo/docs/specs/boutique.md
2026-03-05 04:01:29 +01:00

715 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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%." |
## Personnage contextuel (événements & interaction)
Voir `vendeur.md`.
### Affichage
Le vendeur saffiche lorsque :
- la boutique est **actionnée** (clic panneau stats, upgrade, skin de boutique) ;
- un **événement** de boutique survient (vente, surcharge, promo).
### Déclencheurs (exemples)
| Event | Condition | Effet UI personnage |
|---|---|---|
| `OPEN_SHOP` | clic boutique | portrait + stats + CTA |
| `SALE_MADE` | vente | feedback “caisse” + pièce/FX |
| `SHOP_FULL` | capacité atteinte | bulle “Surcharge” + CTA “Améliorer / Ajouter boutique” |
| `SHOP_PROMO` | promo active | bulle “Promo” + détails (si module) |
### Skins & thèmes
Uniforme et comptoir suivent `theme.md`, avec skins de boutique via `inventaire_skins.md`.
# 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.
## Définition
| Champ | Valeur |
|---|---|
| Concept | Bâtiment “boutique” : point de vente in-zoo (souvenirs/food/boissons) qui convertit les besoins des visiteurs en revenus. |
| Rôle | Augmenter la rétention et la satisfaction via la résolution des besoins (faim/soif/cadeau), et créer des micro-flux (file, service, rupture). |
| Portée | Une instance de bâtiment sur carte zoo, avec paramètres (capacité, vitesse service, catalogue, skin). |
| Contrainte | Pas danalytics ; revenus calculés à la volée à partir des interactions visiteurs ; pas de fallback silencieux (rupture/plein => message + event). |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Construire boutique | mode build | coord, type boutique | bâtiment créé | case vide requise | Event `BUILD_SHOP` |
| Ouvrir stats | clic bâtiment | `shop_id` | UI stats | revenus totaux + clients | Event `OPEN_SHOP` |
| Attirer visiteurs | besoin/curiosité | visitor, rayon | target set | poids pathfinding élevé si besoin > seuil | Event `VISITOR_TARGETS_SHOP` |
| Servir visiteur | arrivée en file | visitor, stock | revenue + satisfaction | service limité par capacité + vitesse | Event `SALE_MADE` |
| Gérer file | dépassement capacité | queue length | impatience | si queue > seuil -> départ + malus | Event `SHOP_FULL` |
| Adapter produits au climat | temp/saison | météo, saison | mod ventes | canicule: eau + ; froid: chocolat + | Event `SHOP_DEMAND_MOD_CHANGED` |
| Appliquer skin biome | skin, biome | ids | bonus | +10% ventes si match | Event `SHOP_THEME_MATCH_BONUS` |
| Réapprovisionner | tick économique | CA, ratio | stock + coût | coût = 10% du CA | Event `SHOP_RESTOCKED` |
| Rupture | stock=0 | - | fermeture temporaire | déclenche panneau “Rupture” | Event `SHOP_OUT_OF_STOCK` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Boutique avec enseigne (cadeau/food) |
| Couleur dominante | Or (revenu) + couleur du type (rouge food, bleu boisson) |
| Variantes | `shop_gift_dir_{N,E,S,W}.png`, `shop_food_dir_{N,E,S,W}.png`, `shop_drink_dir_{N,E,S,W}.png` |
| États | `open`, `busy`, `full`, `out_of_stock`, `promo` |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Placer boutique | Action | case libre | sélectionner → placer | construction | `CELL_OCCUPIED` |
| Voir revenus | Consultation | boutique posée | clic | panneau stats | - |
| Upgrader | Action | coins ok | panneau → améliorer | level ↑ | `NOT_ENOUGH_COINS` |
| Voir file | Consultation | visiteurs proches | survol | tooltip file | - |
| Activer promo | Action (event) | condition event | clic toggle | affluence + | `PROMO_NOT_AVAILABLE` |
## Annexes Techniques
### 1. Données et États (tableau détaillé)
| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `id` | uuid_v4 | `uuid_v4` | DB | - |
| `type` | string | `shop` | DB | constant |
| `subtype` | string | `gift` | DB/config | `gift/food/drink` |
| `level` | int | 2 | DB | 1..7 |
| `position.x` | int | 10 | DB | grid |
| `position.y` | int | 12 | DB | grid |
| `stats.revenue_total` | int | 12500 | DB | cumul |
| `stats.visitors_served` | int | 840 | DB | cumul |
| `stock.units` | int | 100 | DB | >=0 |
| `popularity` | int | 10 | calcul/DB | 0..100 |
| `capacity` | int | 5 | config | visitors simultanés |
| `service_seconds_per_visitor` | float | 5.0 | config | 1..10 |
| `attractiveness` | int | 10 | config | poids target |
| `skin_id` | string | `shop_wood_forest` | DB | cosmétique |
| `iso_x` | int | 120 | DB/calcul | rendu |
| `iso_y` | int | 88 | DB/calcul | rendu |
| `z_index` | int | 12088 | calcul | profondeur |
#### Caractéristiques Initiales (tableau détaillé)
| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Revenu / visiteur | 15 | coins | level 1 |
| Capacité | 5 | visiteurs | level 1 |
| Vitesse service | 5 | s/visiteur | level 1 |
| Rayon attraction | 2 | cases | level 1 |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Stock | 100 | 0..∞ | rupture possible |
| Popularité | 10 | 0..100 | mod conversion |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Construction | joueur | coins + coord | bâtiment | case occupée |
| Service | visiteurs | besoins | revenus | capacité respectée |
| Réappro | tick | CA | stock + | coût 10% CA |
| Rupture | stock=0 | - | fermeture | observable |
| Upgrade | action | coins | level ↑ | monotone |
#### Conditions d'Apparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Construction | true | est | boutique posée |
#### Conditions de Disparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Destruction | true | est | remboursement 50% |
#### Hérédité (tableau détaillé)
| Élément | Hérité | Règle |
|---|---|---|
| Franchise | Oui | coût -10% si 5 identiques |
| Stats | Oui | cumul |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Condition | Effet boutique | Notes |
|---|---|---|
| > 30°C | eau +200% | canicule |
| < 5°C | chocolat +200% | froid |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet | Notes |
|---|---|---|
| forêt + skin bois | ventes +10% | thème match |
| désert + skin oasis | ventes +10% | thème match |
#### Impact Saisons (tableau détaillé)
| Saison | Effet | Notes |
|---|---|---|
| Été | ventes boisson +20% | règle |
| Hiver | ventes cadeaux +10% | règle |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet | Notes |
|---|---|---|
| 12h-14h | demande food ++ | pic |
| Nuit | fermé | 0 ventes |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet sur taux | Condition |
|---|---|---|
| Naissance rare | ventes peluche x2 | “espèce du moment” |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| Mort récente proche | ventes -20% | ambiance |
#### Impact Nourriture (tableau détaillé)
| Ressource | Effet | Condition |
|---|---|---|
| Concurrence < 3 cases | ventes food -10% | partage |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| Action/État | Gain | Rayon | Notes |
|---|---:|---:|---|
| Boutique level 7 | + | 10 cases | centre commercial |
| Rupture stock | - | 6 cases | frustration |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action/État | Effet animaux | Condition |
|---|---|---|
| Odeurs food | stress + | espèces sensibles |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Revente | 50% + upgrades | destruction |
### 5. Impacts Logistiques et Économiques
#### Vitesse (Camion) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Livraison stock | stock + | si feature livraison |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Peluches bébé | ventes + | bébés visibles |
#### Vitesse (Accueil) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Nouvel animal rare | promo | event |
#### Vitesse (Recherche) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Tech caisse auto | service 1s | level 7 |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| Produit “science” | panier moyen + | zone labo |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| File dattente | temps boutique + | capacité limitée |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 1 | coins | signalétique (conservée) |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Réappro | 10% CA | coins | automatique |
#### Dépenses (Visiteurs) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Temps perdu file | satisfaction - | points | queue |
#### Dépenses (Employés) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Caissier (lore) | 1800 | $/mois | level < 7 |
#### 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 |
|---|---:|---|---|
| Peluche naissance | 2 | coins | production |
#### Dépenses (Nourriture) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Matières food | 2 | coins/vente | marge |
#### Dépenses (Acceuil des animaux) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Cadeau “nouvel arrivant” | 1 | coins | souvenir |
#### Dépenses (Camion) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Livraison premium | 5 | coins | option |
#### Trajet Visiteurs
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Ville | Zoo | entrée | besoins init 0 |
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Enclos | Boutique | faim/soif > 80 | target |
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Boutique | Enclos | besoins résolus | continue visite |
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| Boutique | Sortie | budget 0 | départ |
### 6. Événements
#### Événements du Jeu (tableau détaillé)
| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `SALE_MADE` | service | revenue | coins + |
| `SHOP_FULL` | queue | length | départs |
| `SHOP_OUT_OF_STOCK` | stock | units | fermeture |
| `SHOP_RESTOCKED` | tick | cost | stock + |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `FOCUS_SHOP` | clic | caméra |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_BUYS_ITEM` | transaction | satisfaction + |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `WEATHER_HEATWAVE` | météo | eau ++ |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `VISITOR_LEAVES_SHOP_QUEUE` | impatience | satisfaction - |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `PLAYER_UPGRADES_SHOP` | UI | params + |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 4 | 340 | capacité 18 + service plus rapide | file réduite |
| 7 | 1150 | 50 capacité + caisses auto | 1s/visiteur |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `computeSeasonDemandMod` | season, temp | float | eau/glaces/chocolat |
| `serveVisitor` | shop, visitor | revenue | résout besoins |
| `restockIfNeeded` | shop, CA | shop | coût 10% CA |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `SHOP_FULL` | Warning | "Boutique pleine." | queue > cap |
| `SHOP_OUT_OF_STOCK` | Warning | "Rupture de stock." | stock=0 |
| `SALE_MADE` | Info | "Vente effectuée." | service |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Construire | générer revenus | placement | mode construction direct |
| Lire stats | décider upgrade | menus | clic bâtiment |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| Popup coins | +XX | burst | feedback |
| Panneau stats | total + served | open/closed |
| Badge rupture | icône | visible |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| Carte zoo | sur case | sélection base sprite |
| HUD | compteur | pièces volantes |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| `visiteur.md` | besoins | faim/soif |
| `chemin.md` | pathfinding | poids boutique |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir stats | clic | panneau |
| Upgrader | panneau → CTA | level ↑ |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_SHOP` | clic | panneau |
| `BUILD_SHOP` | build | placement |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `shop_muzak_loop.mp3` | proximité boutique | loop | discret |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `cash_register.mp3` | vente | bas |
| `coin_jingle.mp3` | revenue | bas |
| `ui_open.mp3` | panneau | bas |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `shop_coin_popup.png` | popup | lisible |
| `shop_queue_badge.png` | queue | contraste |
| `shop_out_of_stock_badge.png` | rupture | rouge |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `shop_blueprint.png` | construction |
| `shop_product_icons.png` | UI |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `shop_sales_bars.webm` | stats | 1.0s |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| pièce monte | vente | 0.6s |
| porte ouvre/ferme | visiteur | 0.4s |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `shop_gold` | #FFD700 | revenus |
| `shop_profit_green` | #2E7D32 | stats |
| `shop_alert_red` | #D32F2F | rupture |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `shop.title` | Boutique | Shop |
| `shop.revenue` | Revenus | Revenue |
| `shop.out_of_stock` | Rupture de stock | Out of stock |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Popup | rectangle arrondi | lisible |
| Badge | rond | constant |