# Nourisseur ## 1. Définition Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les mangeoires vides et s'assure que les animaux n'ont pas faim. Achetable avec des pièces. ## 2. Fonctions * **Remplissage :** Détecte les mangeoires vides et va les remplir. * **Qualité :** Peut (avec amélioration) fournir une nourriture de meilleure qualité (+santé). * **Automatisation :** Évite au joueur de devoir cliquer manuellement pour nourrir (si mécanique manuelle existe). ## 3. Icone * **Représentation :** Seau ou Sac de graines. * **Couleur dominante :** Marron et Orange. ## 4. Interactions * **Recrutement :** Menu "Employés", coût en pièces. * **Gestion :** Définir des priorités (ex: nourrir les bébés en premier). ## 5. Annexes Techniques ### Données (JSON) ```json { "employee_id": "feeder_02", "type": "nourisseur", "name": "Bob", "salary": 30, "hire_cost": 300, "stats": { "capacity": 50, // Quantité de nourriture transportable "speed": 1.2 }, "current_task": "moving_to_enclosure_12", "iso_x": "integer", "iso_y": "integer", "z_index": "integer" } ``` ### Règles Métier * Les animaux affamés perdent de la santé et du bonheur. * Le nourisseur doit retourner au stock (bâtiment de service) pour se ravitailler. ## 6. Annexes UX/UI * **Visuel Carte :** Personnage avec une brouette ou un sac sur le dos. * **Animation :** Verse de la nourriture dans l'auge. * **Alerte :** Icône "Faim" rouge clignotante si le nourisseur est débordé. ## Affichage contextuel (modules) Le nourisseur sert de personnage contextuel lorsque des événements de nourriture surviennent sur la carte du zoo. ### Déclencheurs (exemples) | Event | Condition | Effet UI personnage | |---|---|---| | `FEED_LOW` | auge < seuil | bulle “Mangeoire vide” + CTA “Voir enclos” | | `FOOD_STOCK_EMPTY` | stock global = 0 | bulle “Stock vide” + deep-link `menu_achats.md` | | `FEEDER_OVERLOADED` | trop de tâches | bulle “Débordé” + CTA recruter/ajuster priorités | # 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 | |---|---| | Entité | Employé “Nourisseur” | | Rôle | Approvisionner les mangeoires, éviter la faim, appliquer (si présent) la nourriture spéciale ciblée. | | Logistique | Transport capacité `stats.capacity`, ravitaillement depuis stock. | | Vue | Isométrique 2.5D, sprite 4 directions, sélection base-sprite. | ## Fonctions (tableau détaillé) | Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité | |---|---|---|---|---|---| | Détection auge vide | Tick nourisseur | enclos, jauges auge | liste tâches | Priorité bébés > adultes | Event `FEEDER_SCAN` | | Remplissage | Arrivée en enclos | stock, capacity | auge + | Consomme stock global, clamp max auge | Event `FEEDER_FILL_START/END` | | Ravitaillement stock | capacity=0 | stock bâtiment | capacity reset | Retour “service stock” obligatoire | Event `FEEDER_RESTOCK` | | Qualité nourriture | upgrade | niveau/skill | santé + | Bonus si nourriture premium active | Event `FEEDER_PREMIUM_APPLIED` | ## Icone de base | Élément | Spécification | |---|---| | Représentation | Seau / sac de graines | | Couleur dominante | Marron / orange | | Variantes | `icon_feeder_bucket.png`, `icon_feeder_bag.png` | | États | Badge “en route” (flèche), “débordé” (rouge), “capacity vide” (0) | ## Interactions (tableau détaillé) | Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages | |---|---|---|---|---|---| | Recruter | Action | coins ≥ `hire_cost` | Menu Employés → Nourisseur → Confirmer | entité créée | `INSUFFICIENT_FUNDS`, `EMPLOYEE_CAP_REACHED` | | Définir priorités | Action | - | panel nourisseur → priorités | ordre tâches | - | | Assigner zone/enclos | Action | cible valide | “Assigner” → clic | couverture | `INVALID_TARGET` | | Forcer nourrir | Action | enclos sélectionné | bouton “Nourrir maintenant” | tâche top priorité | `NO_FEEDER_AVAILABLE`, `OUT_OF_FOOD_STOCK` | | Inspecter stock | Consultation | - | panel stock | quantités | - | ## Annexes Techniques ### 1. Données et États (tableau détaillé) | Donnée / État | Type | Exemple | Source | Contraintes | |---|---|---|---|---| | `employee_id` | string | `feeder_02` | DB | unique | | `type` | enum | `nourisseur` | DB | constante | | `salary` | int | 30 | config | coins/jour | | `hire_cost` | int | 300 | config | one-shot | | `stats.capacity` | int | 50 | DB | [10..200] | | `stats.speed` | float | 1.2 | DB | déplacement | | `current_task` | string | `moving_to_enclosure_12` | runtime | debug | | `state` | enum | `IDLE|MOVING|FILLING|RESTOCK|BREAK` | runtime | FSM | | `carried_food` | int | 0..capacity | runtime | décrémente | | `assigned_zone` | uuid/null | null | runtime | null=global | | `grid` | object | `{x,y}` | runtime | position | | `iso_x/iso_y` | int | - | rendu | projection | | `z_index` | int | - | rendu | profondeur | | `hitbox` | enum | `base_sprite` | rendu | click base | #### Caractéristiques Initiales (tableau détaillé) | Caractéristique | Valeur initiale | Unité | Notes | |---|---:|---|---| | Capacité | 50 | unités | transport | | Vitesse | 1.2 | coef | marche | | Temps remplissage | 1 | min in-game | par auge | | Temps restock | 2 | min in-game | au stock | | Seuil faim critique | 80 | % | déclenche urgence | #### Scores Initiaux (tableau détaillé) | Score | Valeur initiale | Plage | Impact | |---|---:|---|---| | Auges remplies/jour | 0 | 0..∞ | faim - | | Ruptures évitées | 0 | 0..∞ | survie + | | Coût nourrissage/jour | 30 | 0..∞ | dépenses employés | ### 2. Cycles de Vie et Apparition (tableau détaillé) | Phase | Déclencheur | Entrées | Sorties | Invariants | |---|---|---|---|---| | Apparition | embauche | coins | entité | `IDLE` | | Action | auge vide | stock | auge + | pas si stock=0 | | Restock | capacity=0 | stock bâtiment | capacity reset | chemin valide | | Disparition | licenciement (si prévu) | - | suppression | stop tâches | #### Conditions d'Apparition (tableau détaillé) | Condition | Seuil | Opérateur | Résultat | |---|---:|---|---| | Achat | coins ≥ `hire_cost` | vrai | création | #### Conditions de Disparition (tableau détaillé) | Condition | Seuil | Opérateur | Résultat | |---|---:|---|---| | Licenciement | action joueur | vrai | suppression | | Zoo supprimé | - | vrai | suppression | #### Hérédité (tableau détaillé) | Élément | Hérité | Règle | |---|---|---| | Stats | Oui | persistées | | Carried food | Non | remis à 0 au reset | ### 3. Impacts Environnementaux #### Impact Température (tableau détaillé) | Température | Effet | Condition | |---|---|---| | Extrême | consommation + | animaux mangent plus selon règles | | Tempérée | neutre | - | #### Impact Milieu (Biome) (tableau détaillé) | Biome | Effet | Notes | |---|---|---| | Chemins | déplacement + | visiteurs attirés aux chemins | | Sable/neige | déplacement - | ralentissement | #### Impact Saisons (tableau détaillé) | Saison | Effet | Modificateur | |---|---|---| | Hiver | ration + | +10% conso | | Été | eau/boisson + | incidents soif visiteurs + | #### Impact Heure / Jour-Nuit (tableau détaillé) | Période | Effet | Règle | |---|---|---| | Matin | repas 1 | tâche batch | | Soir | repas 2 | tâche batch | | Nuit | urgence | uniquement si faim critique | ### 4. Impacts Biologiques et Sociaux #### Impact Reproduction (tableau détaillé) | Facteur | Effet sur taux | Condition | |---|---|---| | Faim basse | + | si animaux bien nourris | #### Impact Mort (tableau détaillé) | Cas | Effet | Condition | |---|---|---| | Stock 0 | risque mort + | faim extrême prolongée | #### Impact Nourriture (tableau détaillé) | Type | Effet | Condition | |---|---|---| | Standard | neutre | base | | Spéciale | buff | selon `nourriture_speciale.md` | #### Impact Attractivité(Visiteurs (tableau détaillé) | État | Effet | Condition | |---|---|---| | Animaux actifs (pas affamés) | satisfaction + | enclos proches | #### Impact Attractivité Animaux) (tableau détaillé) | Action | Effet animaux | Condition | |---|---|---| | Nourrir | stress - | faim résolue | #### Impact Valeur (tableau détaillé) | Facteur | Variation | Condition | |---|---:|---| | Animal bien nourri | +5% | vente animal | ### 5. Impacts Logistiques et Économiques #### Vitesse (Camion) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | Livraison nourriture | +stock | via camion/achat | #### Vitesse (Nurserie) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | Priorité bébés | + | si règle activée | #### Vitesse (Accueil) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | - | aucun | - | #### Vitesse (Recherche) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | Tech nutrition | + | réduit conso ou augmente qualité | #### Vitesse (Labo) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | - | aucun | - | #### Vitesse (Visite) (tableau détaillé) | Paramètre | Effet | Condition | |---|---|---| | Temps séjour | + | animaux visibles actifs | #### Dépenses (Billeterie) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | - | 0 | - | - | #### Dépenses (Boutiques) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Vente nourriture visiteurs | revenu + | coins | canicule | #### Dépenses (Visiteurs) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Plainte faim | remboursement | coins | si incidents | #### Dépenses (Employés) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Salaire | 30 | coins/jour | actif | #### 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 | |---|---:|---|---| | Lait/bébés | +conso | stock | si bébés présents | #### Dépenses (Nourriture) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Achat nourriture | variable | coins | menu achats | #### Dépenses (Acceuil des animaux) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Ration arrivée | 5 | coins | accueil | #### Dépenses (Camion) (tableau détaillé) | Poste | Coût | Unité | Condition | |---|---:|---|---| | Transport nourriture | 10 | coins | livraison | #### Trajet Visiteurs ##### Trajet Visiteurs vers/depuis la ville (tableau détaillé) | Source | Destination | Déclencheur | Effet | |---|---|---|---| | Ville | Zoo | réputation | nourisseur indirect | ##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé) | Source | Destination | Déclencheur | Effet | |---|---|---|---| | Nourisseur | Enclos | auge vide | déplacement sur chemins | ##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé) | Source | Destination | Déclencheur | Effet | |---|---|---|---| | Visiteur | Boutique | faim/soif | achat | ##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé) | Source | Destination | Déclencheur | Effet | |---|---|---|---| | Visiteur mécontent | sortie | incidents | départ | ### 6. Événements #### Événements du Jeu (tableau détaillé) | Event | Déclencheur | Payload | Effet | |---|---|---|---| | `FEED_LOW` | auge < seuil | enclosure_id | warning | | `FEED_FILLED` | fin remplissage | enclosure_id | info | #### Événements du Carte (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---| | `FEEDER_MOVING` | tâche | rendu déplacement | #### Événements du Zoo (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---| | `FOOD_STOCK_EMPTY` | stock=0 | alerte | #### Événements du Ville / Visiteur (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---| | `VISITOR_BUY_FOOD` | faim/soif | revenu | #### Événements du Visiteur (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---|---| | `VISITOR_COMPLAINT_HUNGER` | faim | satisfaction - | #### Événements du Joueur (tableau détaillé) | Event | Déclencheur | Effet | |---|---|---| | `PLAYER_FORCE_FEED` | bouton | tâche urgente | ### 7. Progression #### Tableau des Upgrades (tableau détaillé) | Niveau | Coût | Effet | Débloque | |---|---:|---|---| | 1 | 0 | remplissage base | - | | 2 | 1000 | capacity +20 | moins restocks | | 3 | 2500 | speed +0.1 | réactivité | | 4 | 5000 | qualité + | premium | ### 8. Logique et Interfaces #### Pseudo-code Impacts (tableau détaillé) | Fonction | Entrées | Sorties | Notes | |---|---|---|---| | `scan_empty_troughs` | enclos | list | priorités | | `fill_trough` | stock, carried | trough | clamp | | `restock` | stock building | carried reset | - | #### Messages d'Infos / Alerte (tableau détaillé) | ID | Niveau | Message | Condition | |---|---|---|---| | `OUT_OF_FOOD_STOCK` | Alerte | "Stock de nourriture vide." | stock=0 | | `FEEDER_OVERLOADED` | Warning | "Nourisseur débordé." | trop tâches | | `FEED_FILLED` | Info | "Mangeoire remplie." | fin | ## Annexes UX/UI ### 1. Expérience Utilisateur (UX) #### Description UX (tableau détaillé) | Parcours | But | Friction | Réduction clics | |---|---|---|---| | Automatiser nourrissage | éviter morts | manque stock | deep-link menu achats | | Prioriser bébés | survie | réglages | preset “bébés d’abord” | #### Description UI (tableau détaillé) | Composant | Contenu | États | |---|---|---| | Panel nourisseur | capacity, tâches | moving/filling | | Badge faim | icône rouge | clignote | #### Emplacement (tableau détaillé) | Zone UI | Position | Notes | |---|---|---| | HUD | menu employés | - | | Enclos | jauge auge | overlay | #### Intégration (tableau détaillé) | Intégration | Contrat | Notes | |---|---|---| | Stock nourriture | global | pas de cache | | Nourriture spéciale | ciblée | cf. spec | #### Navigation (tableau détaillé) | Action | Chemin | Résultat | |---|---|---| | Ouvrir panel | clic nourisseur | panel | | Forcer nourrir | clic enclos | tâche | #### Événements (tableau détaillé) | Event UI | Déclencheur | Effet | |---|---|---| | `OPEN_FEEDER_PANEL` | clic | panel | | `CLICK_FORCE_FEED` | bouton | urgence | #### Assets Skinables ##### Musiques (tableau détaillé) | Asset | Usage | Durée | Notes | |---|---|---:|---| | `feeder_loop.mp3` | ambiance | loop | discret | ##### Sons (tableau détaillé) | Asset | Usage | Volume | |---|---|---| | `pour_food.mp3` | verse | faible | | `ui_food_empty.mp3` | stock 0 | moyen | ##### Graphiques (tableau détaillé) | Asset | Usage | Contraintes | |---|---|---| | `feeder_sprite_[dir].png` | sprite | 4 dirs | | `fx_grains.png` | FX | overlay | ##### Images (tableau détaillé) | Asset | Usage | |---|---| | `icon_feeder_bag.png` | icône | | `portrait_feeder.png` | panel | ##### Vidéos (tableau détaillé) | Asset | Usage | Durée | |---|---|---:| | `feed_success.webm` | popup | 0.8s | ##### Animations (tableau détaillé) | Animation | Déclencheur | Notes | |---|---|---| | grains qui tombent | filling | loop | | jauge auge + | fin | 0.4s | ##### Couleurs (tableau détaillé) | Token | Valeur | Usage | |---|---|---| | `feeder_primary` | #E67E22 | UI | | `feeder_alert` | #E74C3C | faim | ##### Textes (tableau détaillé) | Clé | FR | EN | |---|---|---| | `feeder.force` | Nourrir maintenant | Feed now | | `food.empty` | Stock vide | Empty stock | ##### Formes (tableau détaillé) | Élément | Forme | Notes | |---|---|---| | Jauge auge | barre | lisible | | Badge faim | rond | clignote |