This commit is contained in:
2026-03-05 04:01:29 +01:00
parent dfecb09b7c
commit 6c8a710432
32 changed files with 8203 additions and 3 deletions

View File

@@ -59,3 +59,473 @@ Interface de gestion permettant au joueur de visualiser, trier et équiper les
* **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.
## Définition
| Champ | Valeur |
|---|---|
| Concept | Inventaire “Skins” : vue de possession + équipement de cosmétiques (avatar et zoo). |
| Rôle | Donner un accès rapide à léquipement, au filtrage, et à la prévisualisation sans étapes inutiles. |
| Portée | UI profil/boutique ; impact avatar, bâtiments, décorations. |
| Contrainte | Pas de cache/mémorisation : état “équipé” lu comme source de vérité ; pas danalytics ; aucune suppression/vente implicite. |
## Fonctions (tableau détaillé)
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Ouvrir inventaire | menu | `player_id` | page/grille | affiche items possédés + grisés | Event `OPEN_SKIN_INVENTORY` |
| Filtrer | UI | catégorie/thème/rareté | liste filtrée | filtres combinables | Event `FILTER_SKINS` |
| Trier | UI | critère | liste triée | stable | Event `SORT_SKINS` |
| Prévisualiser | clic item | `item_id` | preview | paper doll / rendu zoo | Event `PREVIEW_SKIN` |
| Équiper | clic “Équiper” | `item_id`, slot | `is_equipped=true` | un item équipé par slot | Event `EQUIP_SKIN` |
| Déséquiper | clic “Retirer” | slot | `is_equipped=false` | revient au skin de base explicite | Event `UNEQUIP_SKIN` |
| Synchroniser après achat | achat | receipt | inventaire maj | immédiat, sans cache | Event `SKIN_ACQUIRED` |
## Icone de base
| Élément | Spécification |
|---|---|
| Représentation | Cintre / coffre |
| Couleur dominante | Marron + or |
| Variantes | `icon_skin_hanger.png`, `icon_skin_chest.png` |
| États | normal, selected, disabled (non possédé) |
## Interactions (tableau détaillé)
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Ouvrir | Navigation | - | profil → skins | grille | - |
| Équiper item | Action | possédé | clic item → équiper | appliqué | `SKIN_NOT_OWNED` |
| Prévisualiser | Consultation | - | clic item | preview | - |
| Filtrer | Consultation | - | toggles | liste | - |
| Drag & drop | Action | option active | drag → drop | équipe | `DROP_INVALID` |
## Personnage contextuel (événements & interaction)
Le module “Inventaire Skins” affiche le **joueur actif** via son avatar (voir `avatar_joueur.md`) comme personnage contextuel.
### Affichage
Lavatar saffiche lorsque :
- le module est **actionné** (ouverture inventaire, sélection dun item, équipement/déséquipement) ;
- un **événement** lié aux skins survient (acquisition, équipement réussi/échoué).
### Déclencheurs (exemples)
| Event | Condition | Effet UI personnage |
|---|---|---|
| `OPEN_SKIN_INVENTORY` | ouverture | avatar/paper doll visible, cohérent avec léquipement courant |
| `PREVIEW_SKIN` | clic item | lavatar adopte la prévisualisation (paper doll) |
| `EQUIP_SKIN` / `UNEQUIP_SKIN` | action | feedback visuel sur lavatar + message |
| `SKIN_ACQUIRED` | achat/gain | bulle “Nouveau skin” + CTA “Équiper” |
### Skins & thèmes
Le module applique `theme.md` et léquipement de `inventaire_skins.md` sur lavatar, sans inférer silencieusement un skin “par défaut”.
## Annexes Techniques
### 1. Données et États (tableau détaillé)
| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `inventory_id` | string | `inv_skins_<player_id>` | DB | stable |
| `items[].item_id` | string | `skin_hat_01` | DB | id unique |
| `items[].acquired_at` | timestamp | - | DB | UTC |
| `items[].is_equipped` | boolean | true | DB | par slot |
| `items[].slot` | string | `HAT` | DB | enum |
| `items[].theme` | string | `JUNGLE` | config | enum |
| `items[].rarity` | string | `RARE` | config | enum |
| `capacity` | string \| int | `unlimited` | config | pas de limite par défaut |
#### Caractéristiques Initiales (tableau détaillé)
| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Capacité | illimitée | - | règle existante |
| Slots avatar | 6 | count | ex: hat, top, bottom, shoes, accessory, back |
| Slots zoo | 8 | count | ex: sol, clôture, portes, UI, etc. |
#### Scores Initiaux (tableau détaillé)
| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Skins possédés | 0 | 0..∞ | collection |
| Skins équipés | 0 | 0..slots | rendu |
### 2. Cycles de Vie et Apparition (tableau détaillé)
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Acquisition | achat/gain | item_id | inventaire +1 | pas de doublon |
| Équipement | action | slot | is_equipped | exclusivité slot |
| Déséquipement | action | slot | base | base explicite |
#### Conditions d'Apparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Achat skin | true | est | item ajouté |
#### Conditions de Disparition (tableau détaillé)
| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| - | - | - | pas de suppression |
#### Hérédité (tableau détaillé)
| Élément | Hérité | Règle |
|---|---|---|
| Inventaire | Oui | persiste compte |
| Équipement | Oui | persiste par profil |
### 3. Impacts Environnementaux
#### Impact Température (tableau détaillé)
| Condition | Effet | Notes |
|---|---|---|
| - | aucun | cosmétique |
#### Impact Milieu (Biome) (tableau détaillé)
| Biome | Effet | Notes |
|---|---|---|
| - | aucun | - |
#### Impact Saisons (tableau détaillé)
| Saison | Effet | Notes |
|---|---|---|
| Saison active | skins saisonniers visibles | gating |
#### Impact Heure / Jour-Nuit (tableau détaillé)
| Période | Effet | Notes |
|---|---|---|
| - | aucun | - |
### 4. Impacts Biologiques et Sociaux
#### Impact Reproduction (tableau détaillé)
| Facteur | Effet sur taux | Condition |
|---|---|---|
| - | aucun | - |
#### Impact Mort (tableau détaillé)
| Cas | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Impact Nourriture (tableau détaillé)
| Ressource | Effet | Condition |
|---|---|---|
| - | aucun | - |
#### Impact Attractivité(Visiteurs (tableau détaillé)
| Action/État | Gain | Rayon | Notes |
|---|---:|---:|---|
| Skins zoo | + | zoo | esthétique |
#### Impact Attractivité Animaux) (tableau détaillé)
| Action/État | Effet animaux | Condition |
|---|---|---|
| - | - | - |
#### Impact Valeur (tableau détaillé)
| Facteur | Variation | Condition |
|---|---:|---|
| Collection | + | complétude |
### 5. Impacts Logistiques et Économiques
#### Vitesse (Camion) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Nurserie) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Accueil) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Recherche) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Labo) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Vitesse (Visite) (tableau détaillé)
| Paramètre | Effet | Condition |
|---|---|---|
| - | - | - |
#### Dépenses (Billeterie) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Visiteurs) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Employés) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Boutiques) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Section dupliquée | 0 | - | conservée |
#### Dépenses (Nurseries) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Nourriture) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Acceuil des animaux) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Dépenses (Camion) (tableau détaillé)
| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |
#### Trajet Visiteurs
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| - | - | - | - |
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| - | - | - | - |
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| - | - | - | - |
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
| Source | Destination | Déclencheur | Effet |
|---|---|---|---|
| - | - | - | - |
### 6. Événements
#### Événements du Jeu (tableau détaillé)
| Event | Déclencheur | Payload | Effet |
|---|---|---|---|
| `OPEN_SKIN_INVENTORY` | menu | - | UI |
| `EQUIP_SKIN` | clic | item_id, slot | équipé |
| `UNEQUIP_SKIN` | clic | slot | base |
#### Événements du Carte (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| - | - | - |
#### Événements du Zoo (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| - | - | - |
#### Événements du Ville / Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| - | - | - |
#### Événements du Visiteur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| - | - | - |
#### Événements du Joueur (tableau détaillé)
| Event | Déclencheur | Effet |
|---|---|---|
| `FILTER_SKINS` | toggle | UI |
### 7. Progression
#### Tableau des Upgrades (tableau détaillé)
| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 0 | inventaire dispo | - |
### 8. Logique et Interfaces
#### Pseudo-code Impacts (tableau détaillé)
| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `equipSkin` | item, slot | state | exclusif slot |
| `filterSkins` | list, filters | list | combinable |
#### Messages d'Infos / Alerte (tableau détaillé)
| ID | Niveau | Message | Condition |
|---|---|---|---|
| `SKIN_NOT_OWNED` | Warning | "Skin non possédé." | équiper |
| `SKIN_EQUIPPED` | Info | "Skin équipé." | succès |
## Annexes UX/UI
### 1. Expérience Utilisateur (UX)
#### Description UX (tableau détaillé)
| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Équiper avatar | personnaliser | navigation | paper doll + bouton direct |
| Équiper zoo | thème | sélection | filtres |
#### Description UI (tableau détaillé)
| Composant | Contenu | États |
|---|---|---|
| Grille | items | owned/missing |
| Paper doll | preview | slot highlight |
| Bouton équiper | CTA | enabled/disabled |
#### Emplacement (tableau détaillé)
| Zone UI | Position | Notes |
|---|---|---|
| Profil | onglet skins | - |
| Boutique | lien | - |
#### Intégration (tableau détaillé)
| Intégration | Contrat | Notes |
|---|---|---|
| `skin.md` | definition item | ids cohérents |
| `avatar_joueur.md` | rendu avatar | slots |
#### Navigation (tableau détaillé)
| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir | profil → skins | grille |
| Équiper | item → CTA | appliqué |
#### Événements (tableau détaillé)
| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_SKIN_INVENTORY` | menu | UI |
| `CLICK_EQUIP` | CTA | équipe |
#### Assets Skinables
##### Musiques (tableau détaillé)
| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `skins_inventory_loop.mp3` | inventaire | loop | neutre |
##### Sons (tableau détaillé)
| Asset | Usage | Volume |
|---|---|---|
| `ui_equip.mp3` | équiper | bas |
| `ui_unequip.mp3` | retirer | bas |
##### Graphiques (tableau détaillé)
| Asset | Usage | Contraintes |
|---|---|---|
| `paper_doll_frame.png` | preview | scalable |
| `skin_item_tile.png` | tuile | grille |
##### Images (tableau détaillé)
| Asset | Usage |
|---|---|
| `skin_missing_overlay.png` | grisé |
##### Vidéos (tableau détaillé)
| Asset | Usage | Durée |
|---|---|---:|
| `equip_fx.webm` | feedback | 0.6s |
##### Animations (tableau détaillé)
| Animation | Déclencheur | Notes |
|---|---|---|
| glow item | hover | 0.2s |
| bounce CTA | success | 0.3s |
##### Couleurs (tableau détaillé)
| Token | Valeur | Usage |
|---|---|---|
| `skins_gold` | #D4AF37 | rareté |
| `skins_brown` | #6D4C41 | fond |
##### Textes (tableau détaillé)
| Clé | FR | EN |
|---|---|---|
| `skins.title` | Skins | Skins |
| `skins.equip` | Équiper | Equip |
##### Formes (tableau détaillé)
| Élément | Forme | Notes |
|---|---|---|
| Tuiles | rectangles arrondis | lisibles |