**Motivations:** - Make docs/specs implementation-ready without empty sections or placeholders. **Root causes:** - Multiple specs still contained non-actionable placeholders (N/A, “see above”, "..."), and inconsistent “no cache” wording. **Correctifs:** - Replace placeholders with explicit tables, structures, and typed examples. - Align “no cache / no memorization” statements where relevant. **Evolutions:** - Add a features doc entry to track the documentation enrichment effort. **Pages affectées:** - docs/specs/* - docs/features/docs-specs-enrichment.md - docs/leo.md - docs/plan-enrich-docs-specs.md
96 lines
3.5 KiB
Markdown
96 lines
3.5 KiB
Markdown
# Spécifications : Achat et Upgrade des Cases du Zoo (Agrandissement)
|
|
|
|
## Agrandissement du Zoo
|
|
- **Action** : Acheter une nouvelle parcelle de terrain adjacente à la grille existante.
|
|
- **Coût** : Très élevé, progressif selon la taille actuelle du zoo.
|
|
- **Contenu** : La nouvelle case arrive avec un biome par défaut (selon sa position géographique Prairie/Océan/Montagne) et vide.
|
|
- **Contraintes** : Limité par la taille de la carte globale ("Monde" ou "Région").
|
|
|
|
# Annexes Techniques
|
|
|
|
## 1. Données et États
|
|
### Modèle de Données (JSON)
|
|
Action sur l'objet `Zoo` (dimensions).
|
|
```json
|
|
{
|
|
"zoo_id": "uuid",
|
|
"dimensions": { "width": 5, "height": 6 },
|
|
"expansion_history": [
|
|
{ "direction": "EAST", "cost": 1000, "timestamp": "timestamp" }
|
|
],
|
|
"max_dimensions": { "width": 20, "height": 20 }
|
|
}
|
|
```
|
|
|
|
### Caractéristiques Initiales
|
|
**Taille Initiale** : 5x6 cases (30 cases).
|
|
|
|
## 7. Progression
|
|
### Tableau des Upgrades (Agrandissement)
|
|
| Extension | Coût (Pièces) | Gain |
|
|
| :--- | :--- | :--- |
|
|
| +1 Colonne (Est) | 1000 | +Hauteur cases (6) |
|
|
| +1 Ligne (Sud) | 1000 | +Largeur cases (5) |
|
|
| +1 Colonne (Ouest) | 2000 | +Hauteur cases |
|
|
| +1 Ligne (Nord) | 2000 | +Largeur cases |
|
|
| +1 Colonne (Est 2) | 5000 | +Hauteur cases |
|
|
| +1 Ligne (Sud 2) | 5000 | +Largeur cases |
|
|
|
|
## 8. Logique et Interfaces
|
|
### Algorithme d'Expansion
|
|
```python
|
|
def expand_zoo(zoo, direction, player):
|
|
cost = calculate_expansion_cost(zoo, direction)
|
|
|
|
if player.money < cost:
|
|
return error("INSUFFICIENT_FUNDS")
|
|
|
|
if reaches_world_limit(zoo, direction):
|
|
return error("WORLD_LIMIT_REACHED")
|
|
|
|
player.money -= cost
|
|
|
|
# Mise à jour de la grille
|
|
new_cells = generate_new_strip(direction, zoo.dimensions)
|
|
zoo.grid.merge(new_cells)
|
|
zoo.update_dimensions(direction)
|
|
|
|
return success("ZOO_EXPANDED")
|
|
```
|
|
|
|
# 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)
|
|
### Achat Parcelle (Action)
|
|
**Description UX** : Le joueur clique sur une zone "Hors Limites" adjacente pour l'acheter.
|
|
**Description UI** : Zone grisée ou avec panneau "À Vendre". Au survol, prix affiché.
|
|
**Emplacement** : Bords de la Carte Zoo.
|
|
**Intégration** : Grille étendue.
|
|
**Navigation** : Clic Zone Grisée -> Confirmer Achat.
|
|
**Événements** : `EXPAND_ZOO`.
|
|
|
|
#### Assets
|
|
- **Musiques** : Son "Vent dans les plaines" lors du survol.
|
|
- **Sons** : `land_buy.mp3`.
|
|
- **Graphiques** : Panneau "For Sale".
|
|
- **Images** : Texture herbe (cachée par brouillard).
|
|
- **Vidéos** : Timelapse accéléré de la construction des clôtures (2s).
|
|
- **Animations** : Brouillard se dissipe, herbe apparaît.
|
|
- **Couleurs** : Gris (Inaccessible) -> Vert (Accessible).
|
|
- **Textes** : "Acheter Terrain (X Pièces)".
|
|
- **Formes** : Carré.
|
|
|
|
### Vue Isométrique
|
|
- **Brouillard de Guerre** : Les zones non achetées sont couvertes par des nuages ou un brouillard semi-transparent.
|
|
- **Dévoilement** : Lors de l'achat, les nuages se dissipent (fade out + scale up) pour révéler le nouveau terrain.
|
|
- **Clôtures** : Les clôtures délimitant le zoo se déplacent automatiquement vers la nouvelle limite.
|