# Spécifications : Joueur

## Définition
L'utilisateur humain.

## Variantes de représentation
### Joueur actif
Le joueur actif est représenté par :
- **un profil** (pseudo, progression, paramètres) ;
- **un avatar personnalisable** (genre, skins, titres) : voir `avatar_joueur.md` et `inventaire_skins.md`.

### Autres joueurs
Les autres joueurs (humains) peuvent être représentés dans des modules sociaux (carte monde, visite, classements) par :
- un **portrait/mini-avatar** cohérent avec leurs skins (si le profil requis n’est pas accessible, afficher un état verrouillé explicite, pas de dégradation silencieuse) ;
- un **pseudo** et des indicateurs de progression (niveau, réputation) selon les règles du module.

## Propriétés
- **Compte** : Authentifié par clé privée (pas de mot de passe).
- **Ressources** : Pièces, Unités de recherche.
- **Zoo** : Possède et gère un unique zoo.
- **Démarrage** : Commence avec 200 pièces et 3 couples reproducteurs basiques.

## Actions
- Achat/Vente.
- Placement/Déplacement.
- Upgrade bâtiments/carte.
- Gestion des incidents visiteurs.
- Configuration du profil d'absence (Bot).

# Annexes Techniques

## 1. Données et États
### Modèle de Données (JSON)
```json
{
  "id": "uuid",
  "public_key": "string (ed25519)",
  "username": "string",
  "created_at": "timestamp",
  "last_login": "timestamp",
  "resources": {
    "coins": "integer",
    "research_points": "integer"
  },
  "settings": {
    "music_enabled": "boolean",
    "bot_profile_id": "integer"
  },
  "iso_x": "integer",
  "iso_y": "integer",
  "z_index": "integer"
}
```

### Caractéristiques Initiales
| Caractéristique | Valeur Initiale |
| :--- | :--- |
| Pièces | 200 |
| Recherche | 0 |
| Animaux | 3 couples (6 animaux) |

### Scores Initiaux
**Niveau Joueur** : 1.

## 2. Cycles de Vie et Apparition
### Conditions d'Apparition
Inscription.

### Conditions de Disparition
Suppression compte.

### Hérédité
**Héritage** : Le joueur garde son niveau et ses recherches après un reset.

## 3. Impacts Environnementaux
### Impact Température
**Confort** : Le joueur doit gérer la température pour ses animaux.

### Impact Milieu (Biome)
**Stratégie** : Le joueur choisit les biomes à développer.

### Impact Saisons
**Planification** : Le joueur adapte sa stratégie aux saisons.

### Impact Heure / Jour-Nuit
**Gestion** : Le joueur gère les cycles d'ouverture.

## 4. Impacts Biologiques et Sociaux
### Impact Reproduction
**Démarrage autonome** : Le joueur reçoit 3 couples reproducteurs basiques (Lapins/Poules/Canards selon biome) pour garantir une reproduction immédiate et alimenter le marché bas prix.

### Impact Mort
**Gestion Crise** : Le joueur doit réagir aux décès.

### Impact Nourriture
**Logistique** : Le joueur achète la nourriture.

### Impact Attractivité (Visiteurs/Animaux)
**Objectif** : Maximiser l'attractivité.

### Impact Valeur
**Finance** : Gérer le budget.

## 5. Impacts Logistiques et Économiques
### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite)
| Domaine | Paramètre | Valeur | Unité | Règle |
|---|---|---:|---|---|
| Camion | Actions/minute | 6 | actions | Limite anti-spam côté UI (évite double-clic achats/ventes). |
| Nurserie | Ouverture panel | 250 | ms | Transition UI (snappy) pour boucles fréquentes. |
| Accueil | Placement animal | 1 | interaction | Tap-to-select → Tap-to-place en 1 geste (accessibilité). |
| Recherche | Lancement projet | 1 | clic | 1 clic depuis menu achats → centre recherche → projet. |
| Labo | Achat offre rare | 1 | drag/drop | Alternatif : tap offre → tap camion (mobile). |
| Visite | Pan/zoom | 60 | FPS | Cible de fluidité sur la carte isométrique. |

### Dépenses (Boutiques/Visiteurs)
| Poste | Coût | Unité | Condition | Impact |
|---|---:|---|---|---|
| Parking | 0–5 | pièces / visite | Selon politique du joueur | Ajuste satisfaction visiteurs et revenus. |
| Marketing | 0–5000 | pièces / action | Campagne publicitaire | Augmente affluence temporaire. |
| Skins / thèmes | 0–2000 | pièces / item | Achat cosmétique | Aucun impact gameplay (sauf attractivité visuelle si spécifié ailleurs). |

### Trajet Visiteurs
**Design** : Le joueur trace les routes.

## 6. Événements
### Événements du Jeu / Carte / Zoo / Ville / Visiteur
*   **Connexion** : Chargement état.
*   **Quête** : Validation.

## 7. Progression
### Tableau des Upgrades
| Niveau | Coût | Avantage |
| :--- | :--- | :--- |
| 1 | 0 | Accès de base |
| 2 | 1000 | Accès statistiques avancées |

## 8. Logique et Interfaces
### Pseudo-code Impacts
```javascript
function playerAction(action):
  if checkResources(action.cost):
    execute(action)
```

### Messages d'Infos / Alerte
| ID | Niveau | Message |
| :--- | :--- | :--- |
| `WELCOME` | Info | "Bienvenue dans votre nouveau zoo !" |
| `NO_MONEY` | Alerte | "Fonds insuffisants." |

# 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)
### HUD Principal (Permanent)
**Description UX** : Le joueur voit en permanence ses ressources et accès rapides.
**Description UI** : Barre supérieure avec Compteurs (Pièces, Recherche, Réputation). Barre inférieure ou latérale avec Menus (Construction, Carte Monde, Inventaire, Profil).
**Emplacement** : Écran (Overlay).
**Intégration** : Fixe.
**Navigation** : Clic Menu -> Ouverture Panneau.
**Événements** : `UI_CLICK`.

#### Assets
- **Musiques** : `ui_hud_ambience.mp3` (très léger, optionnel, volume 15%).
- **Sons** : `ui_click.mp3`.
- **Graphiques** : Style UI "Bois et Pierre" ou "Moderne Clean".
- **Images** : Icônes (Pièce, Fiole, Marteau, Carte).
- **Vidéos** : `hud_counters_hint.webm` (micro-anim 1s, loop, optionnel sur tutoriel).
- **Animations** : Compteurs qui défilent quand gain/perte.
- **Couleurs** : Or, Bleu, Blanc.
- **Textes** : Chiffres, Labels menus.
- **Formes** : Barres, Boutons ronds.

### Profil & Bot (Configuration)
**Description UX** : Le joueur configure son avatar et son bot d'absence.
**Description UI** : Modal Profil. Onglet "Gestion Absence" avec sélecteur de Bot (Famille > Spécialisation).
**Emplacement** : Menu Profil.
**Intégration** : Modal.
**Navigation** : Profil -> Bot -> Sauvegarder.
**Événements** : `SAVE_PROFILE`.

#### Assets
- **Musiques** : `ui_profile_open.mp3` (jingle court).
- **Sons** : `save_success.mp3`.
- **Graphiques** : Portraits de bots.
- **Images** : Avatars joueurs.
- **Vidéos** : `profile_avatar_spin.webm` (aperçu rotation/pose, 2s, loop).
- **Animations** : Checkmark vert.
- **Couleurs** : Bleu UI.
- **Textes** : Description des bots ("Le Conservateur : Achète de la nourriture, évite les risques").
- **Formes** : Cartes de sélection.
