Files
builazoo/docs/specs/achat_upgrade_generique.md
Nicolas Cantu e92c1355d0 Enrichissement exhaustif des specs : Vue Isométrique et Design
**Motivations:**
- Aligner toute la documentation technique avec la nouvelle direction artistique isométrique (Réf IMG_20260303_170253).
- Faciliter l'implémentation en ajoutant les contraintes techniques liées à la 2.5D (Z-index, Sprites 4 directions).

**Root causes:**
- Besoin de cohérence visuelle et technique sur l'ensemble du projet.

**Correctifs:**
- N/A

**Evolutions:**
- Ajout systématique de la section "Direction Artistique & Vue" dans `Annexes UX/UI` de tous les fichiers.
- Enrichissement des modèles JSON avec coordonnées isométriques (`iso_x`, `iso_y`, `z_index`).
- Précision des interactions (clic, survol) adaptées à la grille losange.
- Conservation stricte de la structure existante (aucun titre supprimé).

**Pages affectées:**
- docs/specs/*
2026-03-05 02:10:32 +01:00

189 lines
6.6 KiB
Markdown

# Spécifications : Achat et Upgrade (Générique)
## Mécanique
- **Coût** : Payé en Pièces (ou Unités de Recherche pour la Carte du Monde).
- **Progression** : 7 Niveaux pour la plupart des éléments.
- **Formule de Coût** : `Coût_Niveau_N = Coût_Base * Multiplicateur^(N-1)`.
## Validation
- L'achat est instantané si les fonds sont disponibles.
- L'effet est immédiat (pas de temps de construction, sauf si spécifié autrement).
# Annexes Techniques
## 1. Données et États
### Modèle de Données (JSON)
**Transaction** :
```json
{
"id": "uuid",
"type": "BUY/UPGRADE",
"item_type": "string",
"item_id": "uuid",
"cost": "int",
"currency": "coins",
"status": "enum (SUCCESS, FAILED)",
"failure_reason": "string (optional)",
"timestamp": "date",
"iso_x": "integer",
"iso_y": "integer",
"z_index": "integer"
}
```
### Caractéristiques Initiales
**Solde Joueur** : Voir `joueur.md`.
### Scores Initiaux
**Dépenses Totales** : 0.
## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
**Menu Achat** : Accessible via le HUD.
### Conditions de Disparition
**Fermeture Menu**.
### Hérédité
**Historique** : Les transactions sont loggées pour les stats.
## 3. Impacts Environnementaux
### Impact Température
**Isolation** : Les bâtiments de haut niveau résistent mieux aux coûts énergétiques (Chauffage/Clim -10% par niveau).
### Impact Milieu (Biome)
**Adaptation** : Construire sur un biome "difficile" (Toundra, Désert) coûte +20% à l'achat initial (frais de fondations).
### Impact Saisons
**Soldes** : Certains items moins chers en Hiver (-15% sur les chauffages).
**Surcharge** : En Été, les stands de glaces coûtent +10% à l'achat (demande forte).
### Impact Heure / Jour-Nuit
**Tarif de Nuit** : Les travaux (Upgrades) lancés la nuit (22h-06h) sont 5% moins chers (main d'œuvre nocturne).
## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Couveuses** : L'achat d'upgrades "Confort" pour les enclos augmente la fertilité de +2%.
### Impact Mort
**Sécurité** : Les clôtures de haut niveau réduisent le risque de fuite et d'accident mortel de 99%.
### Impact Nourriture
**Stockage** : Les upgrades de "Réserve" permettent d'acheter la nourriture en gros (-5% prix unitaire).
### Impact Attractivité (Visiteurs/Animaux)
**Nouveauté** : Chaque nouvel achat génère un boost temporaire d'attractivité ("C'est tout neuf !" +10% pendant 2 jours).
### Impact Valeur
**Inflation** : Les prix augmentent légèrement si le joueur est très riche (équilibrage dynamique).
**Revente** : Un bâtiment peut être revendu pour 50% de son coût total (base + upgrades).
## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
**Livraison** : Instantanée pour les bâtiments, temps de trajet pour les animaux.
**Construction** : Les gros bâtiments (Laboratoire, Centre Recherche) prennent 24h in-game à être opérationnels.
### Dépenses (Boutiques/Visiteurs)
**Investissement** : Dépense principale du joueur.
**Maintenance** : Chaque niveau d'upgrade augmente les frais d'entretien quotidiens de +5%.
### Trajet Visiteurs
**Obstacle** : Un bâtiment en construction bloque le passage, forçant les visiteurs à faire un détour.
## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
* **Promo** : Offre limitée dans le temps (-20%).
## 7. Progression
### Tableau des Upgrades
| Niveau | Multiplicateur Coût | Effet Général | Apparence |
| :--- | :--- | :--- | :--- |
| 1 | x1.0 | Fonctionnalité de base | Standard |
| 2 | x1.5 | +10% Efficacité | +Détails |
| 3 | x2.2 | +25% Efficacité | +Couleurs |
| 4 | x3.3 | +45% Efficacité | +Éclairage |
| 5 | x5.0 | +70% Efficacité | +Enseigne |
| 6 | x7.5 | +100% Efficacité | +Moderne |
| 7 | x11.0 | +150% Efficacité | Futuriste (Or/Platine) |
## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function processPurchase(player, item):
# Vérification pré-requis (ex: niveau joueur)
if player.level < item.required_level:
emitEvent("BUY_FAIL", "Niveau joueur insuffisant")
return
# Vérification espace (si applicable)
if item.is_physical and not map.hasSpace(item.size):
emitEvent("BUY_FAIL", "Pas de place")
return
if player.coins >= item.cost:
player.coins -= item.cost
player.inventory.add(item)
emitEvent("BUY_SUCCESS")
logTransaction(player, item, "SUCCESS")
else:
emitEvent("BUY_FAIL", "Fonds insuffisants")
logTransaction(player, item, "FAILED")
```
### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `FUNDS_LOW` | Alerte | "Pas assez de pièces !" |
| `LEVEL_LOW` | Alerte | "Niveau X requis pour acheter ceci." |
| `NO_SPACE` | Alerte | "Impossible de construire ici." |
# 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)
### Interface d'Achat (Consultation)
**Description UX** : Le joueur ouvre le menu de construction ou d'upgrade.
**Description UI** : Grille d'éléments achetables. Prix affiché clairement. Grisé si trop cher.
**Emplacement** : HUD Bas.
**Intégration** : Menu déroulant ou fixe.
**Navigation** : Clic Catégorie -> Liste Objets.
**Événements** : `OPEN_SHOP_MENU`.
#### Assets
- **Musiques** : Jingle "Caisse Enregistreuse" (court).
- **Sons** : `ui_hover.mp3`.
- **Graphiques** : Icônes Bâtiments.
- **Images** : Sprites des bâtiments dans le menu (2D isométrique).
- **Vidéos** : Mini-clip "Construction en cours" (optionnel).
- **Animations** : Bouton rebondit au survol.
- **Couleurs** : Fond sombre, Texte clair.
- **Textes** : Prix, Nom.
- **Formes** : Cartes carrées avec coins arrondis.
### Confirmation Achat (Action)
**Description UX** : Le joueur clique pour acheter.
**Description UI** : Feedback immédiat (son + animation pièces déduites).
**Emplacement** : HUD.
**Intégration** : Immédiat.
**Navigation** : Clic Achat.
**Événements** : `BUY_ITEM`.
#### Assets
- **Musiques** : Jingle "Succès" (trompettes légères).
- **Sons** : `buy_success.mp3`.
- **Graphiques** : Particules de pièces d'or.
- **Images** : Icône "Vendu" tamponnée.
- **Vidéos** : Transition de fermeture de menu (wipe).
- **Animations** : Compteur pièces descend.
- **Couleurs** : Rouge (déduction).
- **Textes** : "-500".
- **Formes** : Effet d'onde de choc circulaire au clic.