# Thème

## 1. Définition
Ensemble cohérent de skins et d'éléments visuels transformant l'ambiance générale du zoo ou de l'interface. Un thème peut inclure des skins pour l'avatar, des textures pour les chemins, des apparences pour les bâtiments et une musique de fond spécifique. Les thèmes sont souvent liés aux passes saisonniers (ex: Jungle, Tigre, Ours, Dinosaures).

## 2. Fonctions
*   **Immersion :** Change l'atmosphère du jeu.
*   **Récompense :** Objectif principal des passes saisonniers.
*   **Fidélisation :** Renouvellement visuel régulier pour éviter la lassitude.

## 3. Icone
*   **Représentation :** Pinceau et palette ou Paysage stylisé.
*   **Couleur dominante :** Arc-en-ciel ou Variable selon le thème.

## 4. Interactions
*   **Activation :** Via le menu des paramètres ou le menu de personnalisation du zoo.
*   **Aperçu :** Possibilité de voir le rendu du thème avant de l'appliquer.

## 5. Annexes Techniques

### Données (JSON)
```json
{
  "theme_id": "theme_jungle_2026",
  "name": "Saison de la Jungle",
  "associated_pass_id": "pass_jungle",
  "assets": {
    "background_music": "music_jungle_loop.mp3",
    "ui_style": "jungle_skin",
    "default_path_texture": "texture_path_mossy",
    "zoo_entrance_skin": "entrance_temple"
  },
  "active_period": {
    "start": "2026-06-01",
    "end": "2026-06-30"
  }
}
```

### Règles Métier
*   L'accès à un thème est temporaire (durée du passe, ex: 1 mois) pour les joueurs standards.
*   **Exception VIP :** Les joueurs VIP conservent l'accès aux thèmes débloqués de manière permanente tant qu'ils conservent leur statut VIP.
*   Un thème s'applique globalement mais peut être désactivé par le joueur.

## 6. Annexes UX/UI
*   **Sélecteur de Thème :** Carrousel ou liste déroulante dans les options graphiques.
*   **Transition :** Fondu au noir ou effet de "rideau" lors du changement de thème.


# 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.


## Définition

| Champ | Valeur |
|---|---|
| Concept | Thème = pack cohérent de skins + style UI + ambiance audio/FX. |
| Portée | Global zoo + UI (selon `assets.ui_style`). |
| Source | Passe saisonnier, boutique, VIP gating. |
| Contrainte | Application immédiate et réversible ; pas de cache applicatif (état courant). |

## Fonctions (tableau détaillé)

| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|---|---|---|---|---|---|
| Lister thèmes | open UI | filtres | liste | gating par possession/VIP | Event `THEME_LIST_OPEN` |
| Prévisualiser | hover/clic | theme_id | preview | sandbox visuel (sans commit) | Event `THEME_PREVIEW` |
| Activer | clic apply | possession, gating | theme actif | Un thème actif à la fois ; idempotent | Event `THEME_APPLIED` |
| Désactiver | clic | - | retour default | revert complet | Event `THEME_REMOVED` |
| Appliquer assets | apply | `assets` | rendu | map textures, UI tokens, musique | Event `THEME_ASSETS_BOUND` |

## Icone de base

| Élément | Spécification |
|---|---|
| Représentation | Palette/pinceau / paysage |
| Couleur dominante | variable selon thème |
| Variantes | `icon_theme_palette.png`, `icon_theme_landscape.png` |
| États | lock, “actif”, “expire bientôt” |

## Interactions (tableau détaillé)

| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|---|---|---|---|---|---|
| Ouvrir sélecteur | Consultation | - | Paramètres → Thèmes | liste | - |
| Prévisualiser | Consultation | thème visible | clic item | preview | - |
| Appliquer | Action | possédé + gating ok | bouton “Appliquer” | thème actif | `THEME_LOCKED`, `VIP_REQUIRED` |
| Désactiver | Action | thème actif | “Désactiver” | default | - |

## Annexes Techniques

### 1. Données et États (tableau détaillé)

| Donnée / État | Type | Exemple | Source | Contraintes |
|---|---|---|---|---|
| `theme_id` | string | `theme_jungle_2026` | config | unique |
| `name` | string | `Saison de la Jungle` | i18n | affichage |
| `associated_pass_id` | string | `pass_jungle` | config | gating |
| `assets.background_music` | string | `music_jungle_loop.mp3` | build | loop |
| `assets.ui_style` | string | `jungle_skin` | build | tokens |
| `assets.default_path_texture` | string | `texture_path_mossy` | build | iso tiles |
| `assets.zoo_entrance_skin` | string | `entrance_temple` | build | banderole/entrée |
| `active_period.start/end` | date | - | config | window |
| `player_state.active_theme_id` | string|null | - | DB | 1 actif |
| `timestamps.created_at/updated_at` | timestamp | - | DB | audit |

#### Caractéristiques Initiales (tableau détaillé)

| Caractéristique | Valeur initiale | Unité | Notes |
|---|---:|---|---|
| Thème actif | none | id | default |
| Nombre thèmes dispo | 0..n | count | selon possession |
| Musique | default | asset | fallback interdit, donc default est un thème “base” explicitement défini |

#### Scores Initiaux (tableau détaillé)

| Score | Valeur initiale | Plage | Impact |
|---|---:|---|---|
| Thèmes possédés | 0 | 0..∞ | collection |
| Thèmes actifs/jour | 0 | 0..∞ | debug |

### 2. Cycles de Vie et Apparition (tableau détaillé)

| Phase | Déclencheur | Entrées | Sorties | Invariants |
|---|---|---|---|---|
| Apparition | passe/shop | theme_id | visible | gating dates |
| Activation | apply | id | actif | unique |
| Fin période | end_date | now | gating | VIP rule |

#### Conditions d'Apparition (tableau détaillé)

| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Possédé | true | est | visible |

#### Conditions de Disparition (tableau détaillé)

| Condition | Seuil | Opérateur | Résultat |
|---|---:|---|---|
| Non-VIP + fin période | true | est | non activable (reste listé “verrouillé”) |

#### Hérédité (tableau détaillé)

| Élément | Hérité | Règle |
|---|---|---|
| Possession thème | Oui | persiste |
| Activation | Oui | persiste |
| Accès après saison | conditionnel | VIP gating |

### 3. Impacts Environnementaux

#### Impact Température (tableau détaillé)

| Condition | Effet | Notes |
|---|---|---|
| Hiver | textures neige | visuel |

#### Impact Milieu (Biome) (tableau détaillé)

| Biome | Effet | Notes |
|---|---|---|
| Jungle | palette verte | cohérence |

#### Impact Saisons (tableau détaillé)

| Saison | Effet | Notes |
|---|---|---|
| Saison du passe | thème recommandé | UI |

#### Impact Heure / Jour-Nuit (tableau détaillé)

| Période | Effet | Notes |
|---|---|---|
| Nuit | néon/torches | rendu |

### 4. Impacts Biologiques et Sociaux

#### Impact Reproduction (tableau détaillé)

| Facteur | Effet | Condition |
|---|---|---|
| - | aucun | cosmétique |

#### 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 | Effet | Condition |
|---|---|---|
| Thème cohérent | attractivité + | esthétique |

#### Impact Attractivité Animaux) (tableau détaillé)

| Action/État | Effet animaux | Condition |
|---|---|---|
| Skins enclos/objets | visuel | pas de stats |

#### Impact Valeur (tableau détaillé)

| Facteur | Variation | Condition |
|---|---:|---|
| Thèmes rares | + | prestige |

### 5. Impacts Logistiques et Économiques

#### Vitesse (Camion) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |

#### Vitesse (Nurserie) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |

#### Vitesse (Accueil) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |

#### Vitesse (Recherche) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |

#### Vitesse (Labo) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| - | aucun | - |

#### Vitesse (Visite) (tableau détaillé)

| Paramètre | Effet | Condition |
|---|---|---|
| Temps visite | + | attractivité via thème |

#### Dépenses (Billeterie) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| - | 0 | - | - |

#### Dépenses (Boutiques) (tableau détaillé)

| Poste | Coût | Unité | Condition |
|---|---:|---|---|
| Achat thème | variable | coins | pass/shop |

#### 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 |
|---|---|---|---|
| Ville | Zoo | esthétique | thème indirect |

##### 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 |
|---|---|---|---|
| `THEME_APPLIED` | apply | theme_id | actif |
| `THEME_REMOVED` | remove | - | default |

#### Événements du Carte (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `THEME_ASSETS_BOUND` | apply | bind |

#### Événements du Zoo (tableau détaillé)

| Event | Déclencheur | Effet |
|---|---|---|
| `THEME_PREVIEW` | preview | render |

#### É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 |
|---|---|---|---|
| `OPEN_THEME_SELECTOR` | open | UI |

### 7. Progression

#### Tableau des Upgrades (tableau détaillé)

| Niveau | Coût | Effet | Débloque |
|---|---:|---|---|
| 1 | 0 | sélecteur thèmes | apply |

### 8. Logique et Interfaces 

#### Pseudo-code Impacts (tableau détaillé)

| Fonction | Entrées | Sorties | Notes |
|---|---|---|---|
| `applyTheme` | theme_id | ok/err | gating |
| `bindAssets` | assets | renderer | - |

#### Messages d'Infos / Alerte (tableau détaillé)

| ID | Niveau | Message | Condition |
|---|---|---|---|
| `THEME_LOCKED` | Warning | "Thème verrouillé." | non possédé |
| `VIP_REQUIRED` | Warning | "VIP requis." | gating |

## Annexes UX/UI 

### 1. Expérience Utilisateur (UX)

#### Description UX (tableau détaillé)

| Parcours | But | Friction | Réduction clics |
|---|---|---|---|
| Changer thème | ambiance | preview | bouton “Prévisualiser” + “Appliquer” |

#### Description UI (tableau détaillé)

| Composant | Contenu | États |
|---|---|---|
| Sélecteur | liste/carrousel | locked/active |
| Transition | rideau/fondu | - |

#### Emplacement (tableau détaillé)

| Zone UI | Position | Notes |
|---|---|---|
| Options | menu | - |

#### Intégration (tableau détaillé)

| Intégration | Contrat | Notes |
|---|---|---|
| UI tokens | css/theme | cohérence |

#### Navigation (tableau détaillé)

| Action | Chemin | Résultat |
|---|---|---|
| Ouvrir | options | liste |

#### Événements (tableau détaillé)

| Event UI | Déclencheur | Effet |
|---|---|---|
| `OPEN_THEME_SELECTOR` | clic | modal |

#### Assets Skinables

##### Musiques (tableau détaillé)

| Asset | Usage | Durée | Notes |
|---|---|---:|---|
| `music_jungle_loop.mp3` | fond | loop | thème |

##### Sons (tableau détaillé)

| Asset | Usage | Volume |
|---|---|---|
| `ui_theme_apply.mp3` | apply | moyen |

##### Graphiques (tableau détaillé)

| Asset | Usage | Contraintes |
|---|---|---|
| `theme_cards.png` | UI | - |

##### Images (tableau détaillé)

| Asset | Usage |
|---|---|
| `theme_preview.png` | preview |

##### Vidéos (tableau détaillé)

| Asset | Usage | Durée |
|---|---|---:|
| `theme_transition.webm` | transition | 1.2s |

##### Animations (tableau détaillé)

| Animation | Déclencheur | Notes |
|---|---|---|
| rideau | apply | 1.0s |

##### Couleurs (tableau détaillé)

| Token | Valeur | Usage |
|---|---|---|
| `theme_primary` | variable | UI |

##### Textes (tableau détaillé)

| Clé | FR | EN |
|---|---|---|
| `theme.apply` | Appliquer | Apply |
| `theme.preview` | Prévisualiser | Preview |

##### Formes (tableau détaillé)

| Élément | Forme | Notes |
|---|---|---|
| Cartes | rectangles arrondis | - |
