**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/*
78 lines
2.3 KiB
Markdown
78 lines
2.3 KiB
Markdown
# Spécifications : Case (Générique)
|
|
|
|
## Définition
|
|
Une case est l'unité élémentaire de la grille (Zoo ou Monde).
|
|
|
|
## Propriétés
|
|
- **Coordonnées** : Position (x, y) dans la grille.
|
|
- **Couleur (Milieu)** : Définit le biome et l'environnement visuel.
|
|
- **Température** : Liée à la couleur/biome.
|
|
- **Contenu** : Peut contenir un bâtiment, un animal, un visiteur, ou être vide.
|
|
- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre, fertilité).
|
|
|
|
# Annexes Techniques
|
|
|
|
## 1. Données et États
|
|
### Modèle de Données (JSON)
|
|
```json
|
|
{
|
|
"x": "integer",
|
|
"y": "integer",
|
|
"biome_id": "integer",
|
|
"temperature_offset": "float",
|
|
"content_ref": "uuid | null",
|
|
"content_type": "string",
|
|
"fertility_level": "float (0-100)",
|
|
"state_flags": ["frozen", "dry", "dirty", "fertilized"],
|
|
"iso_x": "integer",
|
|
"iso_y": "integer",
|
|
"z_index": "integer"
|
|
}
|
|
```
|
|
|
|
## 8. Logique et Interfaces
|
|
### Pseudo-code Impacts
|
|
```python
|
|
def fertilize_case(case, player):
|
|
cost = 50
|
|
if player.money < cost: return error("NO_MONEY")
|
|
|
|
player.money -= cost
|
|
case.fertility_level = 100
|
|
case.state_flags.append("fertilized")
|
|
|
|
# Si plante dessus, boost croissance
|
|
if case.content and case.content.type == "plant":
|
|
case.content.growth_rate *= 1.5
|
|
|
|
return success("CASE_FERTILIZED")
|
|
```
|
|
|
|
# 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)
|
|
### Fertilisation (Action)
|
|
**Description UX** : Le joueur améliore le sol pour que l'herbe repousse plus vite.
|
|
**Description UI** : Outil "Sac d'engrais". Clic sur la case.
|
|
**Emplacement** : Menu Outils -> Case.
|
|
**Intégration** : Curseur.
|
|
**Navigation** : Clic.
|
|
**Événements** : `FERTILIZE_SOIL`.
|
|
|
|
#### Assets
|
|
- **Musiques** : Bruit de poudre.
|
|
- **Sons** : `scatter.mp3`.
|
|
- **Graphiques** : Particules vertes/brunes.
|
|
- **Images** : Texture terre riche (plus foncée).
|
|
- **Animations** : Poussière qui retombe.
|
|
- **Couleurs** : Marron foncé.
|