Initial commit
**Motivations:** - Initialisation du versionning git pour le projet **Root causes:** - N/A (Nouveau projet) **Correctifs:** - N/A **Evolutions:** - Structure initiale du projet - Ajout du .gitignore **Pages affectées:** - Tous les fichiers
This commit is contained in:
196
docs/specs/boutique.md
Normal file
196
docs/specs/boutique.md
Normal file
@@ -0,0 +1,196 @@
|
||||
# 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"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Caractéristiques Initiales
|
||||
| Caractéristique | Valeur Initiale (Niv 1) |
|
||||
| :--- | :--- |
|
||||
| Revenu / Visiteur | 15 pièces |
|
||||
| Capacité | 5 visiteurs |
|
||||
| Attractivité | 10 |
|
||||
|
||||
### Scores Initiaux
|
||||
N/A
|
||||
|
||||
## 2. Cycles de Vie et Apparition
|
||||
### Conditions d'Apparition
|
||||
Construction par le joueur sur case vide.
|
||||
|
||||
### Conditions de Disparition
|
||||
Destruction par le joueur (Remboursement partiel ?).
|
||||
|
||||
### Hérédité
|
||||
N/A
|
||||
|
||||
## 3. Impacts Environnementaux
|
||||
### Impact Température
|
||||
N/A
|
||||
|
||||
### Impact Milieu (Biome)
|
||||
N/A
|
||||
|
||||
### Impact Saisons
|
||||
| Saison | Modificateur Ventes |
|
||||
| :--- | :--- |
|
||||
| Été | +20% (Boissons/Glaces) |
|
||||
| Hiver | +10% (Chocolat chaud/Cadeaux) |
|
||||
|
||||
### Impact Heure / Jour-Nuit
|
||||
| Heure | Fréquentation |
|
||||
| :--- | :--- |
|
||||
| 12h-14h | Pic (Repas) |
|
||||
| 16h-18h | Pic (Souvenirs avant départ) |
|
||||
|
||||
## 4. Impacts Biologiques et Sociaux
|
||||
### Impact Reproduction
|
||||
N/A
|
||||
|
||||
### Impact Mort
|
||||
N/A
|
||||
|
||||
### Impact Nourriture
|
||||
N/A
|
||||
|
||||
### Impact Attractivité (Visiteurs/Animaux)
|
||||
| Niveau | Rayon Attraction |
|
||||
| :--- | :--- |
|
||||
| 1 | 2 cases |
|
||||
| 7 | 10 cases |
|
||||
|
||||
### Impact Valeur
|
||||
N/A
|
||||
|
||||
## 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).
|
||||
|
||||
### Dépenses (Boutiques/Visiteurs)
|
||||
Génère du revenu, ne coûte rien (sauf achat/upgrade).
|
||||
|
||||
### Trajet Visiteurs
|
||||
Point d'intérêt majeur pour le pathfinding (Poids 50).
|
||||
|
||||
## 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.
|
||||
|
||||
## 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." |
|
||||
|
||||
# Annexes UX/UI
|
||||
|
||||
## 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** : N/A
|
||||
**Événements** : `SALE_MADE`.
|
||||
|
||||
#### Assets
|
||||
- **Musiques** : N/A
|
||||
- **Sons** : `coin_jingle.mp3` (volume bas, pas trop répétitif).
|
||||
- **Graphiques** : Sprite Boutique (différents skins selon type : Burger, Cadeaux).
|
||||
- **Images** : N/A
|
||||
- **Vidéos** : N/A
|
||||
- **Animations** : Pièce dorée qui monte et disparaît.
|
||||
- **Couleurs** : Or #FFD700.
|
||||
- **Textes** : "+XX".
|
||||
- **Formes** : N/A
|
||||
|
||||
### 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** : N/A
|
||||
- **Sons** : `ui_open.mp3`
|
||||
- **Graphiques** : N/A
|
||||
- **Images** : Icône Caisse.
|
||||
- **Vidéos** : N/A
|
||||
- **Animations** : N/A
|
||||
- **Couleurs** : N/A
|
||||
- **Textes** : Chiffres clés.
|
||||
- **Formes** : N/A
|
||||
|
||||
### 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** : N/A
|
||||
- **Sons** : `construction_hammer.mp3`.
|
||||
- **Graphiques** : Sprite Fantôme semi-transparent.
|
||||
- **Images** : N/A
|
||||
- **Vidéos** : N/A
|
||||
- **Animations** : Petit effet de poussière à la pose.
|
||||
- **Couleurs** : N/A
|
||||
- **Textes** : N/A
|
||||
- **Formes** : N/A
|
||||
Reference in New Issue
Block a user