ok
This commit is contained in:
@@ -90,3 +90,477 @@ def update_security_agent(agent, world):
|
||||
* **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é “Agent de sécurité” |
|
||||
| Rôle | Maintenir l’ordre, réduire vandalisme/incidents, gérer visiteurs indisciplinés, intervenir (si feature) sur évasions. |
|
||||
| IA | FSM/priority queue : Évasion > Vandalisme > Déchets > Patrouille. |
|
||||
| Vue | Isométrique 2.5D, sprite 4 directions (le bloc “8 directions” existant est conservé comme option d’animation), hitbox base-sprite. |
|
||||
|
||||
## Fonctions (tableau détaillé)
|
||||
|
||||
| Fonction | Déclencheur | Entrées | Sorties | Règles | Observabilité |
|
||||
|---|---|---|---|---|---|
|
||||
| Patrouille | Tick agent | routes, densité | présence | Choisit chemins (visiteurs attirés chemins) | Event `SECURITY_PATROL_TICK` |
|
||||
| Dissuasion vandalisme | proximité incident | `intimidation`, rayon | proba vandalisme - | Effet plafonné ; dépend densité | Event `SECURITY_DETERRENCE_APPLIED` |
|
||||
| Intervention visiteur | visiteur “indiscipliné” | target | expulsion/stop | Temps action ; cooldown | Event `SECURITY_INTERACT_START/END` |
|
||||
| Gestion évasion (option) | animal `ESCAPED` | animal pos | capture | Nécessite équipement (filet) ou tranquillisant | Event `SECURITY_CAPTURE` |
|
||||
| Gestion fatigue | temps actif | stamina | REST | Repos staff room obligatoire | Event `SECURITY_REST_START/END` |
|
||||
|
||||
## Icone de base
|
||||
|
||||
| Élément | Spécification |
|
||||
|---|---|
|
||||
| Représentation | Écusson / casquette |
|
||||
| Couleur dominante | Bleu marine / jaune |
|
||||
| Variantes | `icon_security_badge.png`, `icon_security_cap.png` |
|
||||
| États | Badge “alerte” (rouge), “patrouille” (pas), “recherche” (loupe) |
|
||||
|
||||
## Interactions (tableau détaillé)
|
||||
|
||||
| Interaction | Type | Préconditions | Étapes UI | Résultat | Erreurs / Messages |
|
||||
|---|---|---|---|---|---|
|
||||
| Recruter | Action | coins ≥ `hire_cost` | Menu Employés → Sécurité → Confirmer | agent créé | `INSUFFICIENT_FUNDS`, `EMPLOYEE_CAP_REACHED` |
|
||||
| Envoyer en priorité | Action | zone/cible valide | clic carte → “Envoyer sécurité” | target prioritaire | `NO_SECURITY_AVAILABLE`, `INVALID_TARGET` |
|
||||
| Licencier | Action | pas en capture verrouillée | panel agent → “Licencier” | suppression | `ACTION_BLOCKED` |
|
||||
| Inspecter incidents | Consultation | - | panel → incidents | liste + ETA | - |
|
||||
| Activer mode “strict” | Configuration | upgrade / coût | toggle | intervention + mais visiteurs stress + | `LOCKED_FEATURE` |
|
||||
|
||||
## Annexes Techniques
|
||||
|
||||
### 1. Données et États (tableau détaillé)
|
||||
|
||||
| Donnée / État | Type | Exemple | Source | Contraintes |
|
||||
|---|---|---|---|---|
|
||||
| `employee_id` | string | `security_05` | DB | unique |
|
||||
| `type` | enum | `agent_securite` | DB | constante |
|
||||
| `created_at` | timestamp | - | DB | - |
|
||||
| `salary` | int | 40 | config | coins/jour |
|
||||
| `hire_cost` | int | 400 | config | one-shot |
|
||||
| `state` | enum | `PATROL|CHASE|REST|INTERACT` | runtime | FSM |
|
||||
| `position` | object | `{x,y}` | runtime | monde |
|
||||
| `target_position` | object | `{x,y}` | runtime | chase |
|
||||
| `stats.intimidation` | int | 10 | DB | [1..100] |
|
||||
| `stats.speed` | float | 1.1 | DB | déplacement |
|
||||
| `stats.stamina` | int | 100 | runtime | 0..100 |
|
||||
| `radius` | int | 5 | config | action |
|
||||
| `grid` | object | `{x,y}` | runtime | position grille zoo |
|
||||
| `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 |
|
||||
|---|---:|---|---|
|
||||
| Rayon action | 5 | cases | règle existante |
|
||||
| Vitesse | 1.1 | coef | - |
|
||||
| Stamina max | 100 | points | - |
|
||||
| Temps repos | 15 | min in-game | par cycle repos |
|
||||
| Priorité | 4 niveaux | - | évasion > vandalisme > déchets > patrouille |
|
||||
|
||||
#### Scores Initiaux (tableau détaillé)
|
||||
|
||||
| Score | Valeur initiale | Plage | Impact |
|
||||
|---|---:|---|---|
|
||||
| Incidents résolus/jour | 0 | 0..∞ | satisfaction + |
|
||||
| Vandalisme évité | 0 | 0..∞ | réputation + |
|
||||
| Temps réponse moyen | 0 | 0..∞ | performance |
|
||||
|
||||
### 2. Cycles de Vie et Apparition (tableau détaillé)
|
||||
|
||||
| Phase | Déclencheur | Entrées | Sorties | Invariants |
|
||||
|---|---|---|---|---|
|
||||
| Apparition | embauche | coins | entité | `PATROL` |
|
||||
| Chase | menace détectée | target | déplacement | sprint consomme stamina |
|
||||
| Interact | contact menace | menace | neutralisée | cooldown |
|
||||
| Rest | stamina bas | temps | stamina + | staff room |
|
||||
| Disparition | licenciement | - | suppression | stop chase |
|
||||
|
||||
#### 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 |
|
||||
| Stamina | Non | reset quotidien |
|
||||
|
||||
### 3. Impacts Environnementaux
|
||||
|
||||
#### Impact Température (tableau détaillé)
|
||||
|
||||
| Température | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Extrême | patrouille - | fatigue + |
|
||||
| Tempérée | neutre | - |
|
||||
|
||||
#### Impact Milieu (Biome) (tableau détaillé)
|
||||
|
||||
| Biome | Effet | Notes |
|
||||
|---|---|---|
|
||||
| Chemins | déplacement + | patrouille efficace |
|
||||
| Pont étroit | congestion | éviter chase sur pont |
|
||||
|
||||
#### Impact Saisons (tableau détaillé)
|
||||
|
||||
| Saison | Effet | Modificateur |
|
||||
|---|---|---|
|
||||
| Été | foule + | incidents + |
|
||||
| Hiver | affluence - | incidents - |
|
||||
|
||||
#### Impact Heure / Jour-Nuit (tableau détaillé)
|
||||
|
||||
| Période | Effet | Règle |
|
||||
|---|---|---|
|
||||
| Jour | patrouille | - |
|
||||
| Nuit | sécurité renforcée | incidents peur + si pas d’éclairage |
|
||||
|
||||
### 4. Impacts Biologiques et Sociaux
|
||||
|
||||
#### Impact Reproduction (tableau détaillé)
|
||||
|
||||
| Facteur | Effet sur taux | Condition |
|
||||
|---|---|---|
|
||||
| Bruit intervention | - | près enclos |
|
||||
|
||||
#### Impact Mort (tableau détaillé)
|
||||
|
||||
| Cas | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Évasion non gérée | risque mort + | collisions/ville |
|
||||
|
||||
#### Impact Nourriture (tableau détaillé)
|
||||
|
||||
| Ressource | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | agent n’alimente pas |
|
||||
|
||||
#### Impact Attractivité(Visiteurs (tableau détaillé)
|
||||
|
||||
| État | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Présence sécurité | confort + | rayon action |
|
||||
| Interventions fréquentes | confort - | stress visiteurs |
|
||||
|
||||
#### Impact Attractivité Animaux) (tableau détaillé)
|
||||
|
||||
| Action | Effet animaux | Condition |
|
||||
|---|---|---|
|
||||
| Capture évasion | stress + puis - | fin incident |
|
||||
|
||||
#### Impact Valeur (tableau détaillé)
|
||||
|
||||
| Facteur | Variation | Condition |
|
||||
|---|---:|---|
|
||||
| Zoo sûr | + | réputation/flux visiteurs |
|
||||
|
||||
### 5. Impacts Logistiques et Économiques
|
||||
|
||||
#### Vitesse (Camion) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Livraison équipements | + | si feature |
|
||||
|
||||
#### Vitesse (Nurserie) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Accueil) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Gestion sortie | + | si foule panique |
|
||||
|
||||
#### Vitesse (Recherche) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Tech caméras | incidents - | si débloqué |
|
||||
|
||||
#### Vitesse (Labo) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| - | aucun | - |
|
||||
|
||||
#### Vitesse (Visite) (tableau détaillé)
|
||||
|
||||
| Paramètre | Effet | Condition |
|
||||
|---|---|---|
|
||||
| Déplacement visiteurs | - | si zones bloquées |
|
||||
|
||||
#### Dépenses (Billeterie) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| - | 0 | - | - |
|
||||
|
||||
#### Dépenses (Boutiques) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Vente souvenirs “police” | revenu + | coins | option |
|
||||
|
||||
#### Dépenses (Visiteurs) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Remboursement peur | -coins | coins | incidents peur |
|
||||
|
||||
#### Dépenses (Employés) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| Salaire | 40 | 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 |
|
||||
|---|---:|---|---|
|
||||
| - | 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 |
|
||||
|---|---:|---|---|
|
||||
| dégâts évasion | 100 | coins | réparation |
|
||||
|
||||
#### Dépenses (Camion) (tableau détaillé)
|
||||
|
||||
| Poste | Coût | Unité | Condition |
|
||||
|---|---:|---|---|
|
||||
| capture matériel | 50 | coins | filet |
|
||||
|
||||
#### Trajet Visiteurs
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la ville (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Ville | Zoo | réputation | sécurité augmente confiance |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les animaux (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Incident | Enclos | évasion | zone bloquée |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis les boutiques (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Visiteurs | Boutique | after incident | achats - |
|
||||
|
||||
##### Trajet Visiteurs vers/depuis la billeterie (entrées/sorties du zoo) (tableau détaillé)
|
||||
|
||||
| Source | Destination | Déclencheur | Effet |
|
||||
|---|---|---|---|
|
||||
| Panique | sortie | peur | départ massif |
|
||||
|
||||
### 6. Événements
|
||||
|
||||
#### Événements du Jeu (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Payload | Effet |
|
||||
|---|---|---|---|
|
||||
| `VANDALISM_DETECTED` | scan | pos | chase |
|
||||
| `ESCAPE_DETECTED` | animal escaped | animal_id | chase |
|
||||
|
||||
#### Événements du Carte (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `SECURITY_CHASE` | menace | animation course |
|
||||
|
||||
#### Événements du Zoo (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `ZONE_BLOCKED` | intervention | pathing détour |
|
||||
|
||||
#### Événements du Ville / Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_CALMED` | sécurité proche | satisfaction + |
|
||||
|
||||
#### Événements du Visiteur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `VISITOR_EXPELLED` | interaction | sortie immédiate |
|
||||
|
||||
#### Événements du Joueur (tableau détaillé)
|
||||
|
||||
| Event | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `PLAYER_SEND_SECURITY` | clic zone | priorité chase |
|
||||
|
||||
### 7. Progression
|
||||
|
||||
#### Tableau des Upgrades (tableau détaillé)
|
||||
|
||||
| Niveau | Coût | Effet | Débloque |
|
||||
|---|---:|---|---|
|
||||
| 1 | 0 | patrouille base | - |
|
||||
| 2 | 1500 | intimidation +2 | dissuasion |
|
||||
| 3 | 3000 | speed +0.1 | réponse |
|
||||
| 4 | 6000 | équipement capture | gestion évasion |
|
||||
|
||||
### 8. Logique et Interfaces
|
||||
|
||||
#### Pseudo-code Impacts (tableau détaillé)
|
||||
|
||||
| Fonction | Entrées | Sorties | Notes |
|
||||
|---|---|---|---|
|
||||
| `scan_for_threats` | position, radius | threat | existant |
|
||||
| `neutralize` | threat | resolved | expulsion/capture |
|
||||
| `apply_deterrence` | intimidation | proba- | clamp |
|
||||
|
||||
#### Messages d'Infos / Alerte (tableau détaillé)
|
||||
|
||||
| ID | Niveau | Message | Condition |
|
||||
|---|---|---|---|
|
||||
| `SECURITY_BUSY` | Warning | "Agent occupé." | chase/interact |
|
||||
| `ESCAPE_ALERT` | Alerte | "Évasion détectée !" | animal escaped |
|
||||
| `VANDALISM_ALERT` | Warning | "Vandalisme !" | incident |
|
||||
|
||||
## Annexes UX/UI
|
||||
|
||||
### 1. Expérience Utilisateur (UX)
|
||||
|
||||
#### Description UX (tableau détaillé)
|
||||
|
||||
| Parcours | But | Friction | Réduction clics |
|
||||
|---|---|---|---|
|
||||
| Envoyer agent | résoudre incident | localisation | action contextuelle sur incident |
|
||||
| Voir sécurité | confiance | info | badges sur carte |
|
||||
|
||||
#### Description UI (tableau détaillé)
|
||||
|
||||
| Composant | Contenu | États |
|
||||
|---|---|---|
|
||||
| Panel agent | stamina, état, target | patrol/chase/rest |
|
||||
| Badge incident | type | priorité |
|
||||
|
||||
#### Emplacement (tableau détaillé)
|
||||
|
||||
| Zone UI | Position | Notes |
|
||||
|---|---|---|
|
||||
| Carte | sprite agent | sélection base |
|
||||
| Incidents | bulles | clic direct |
|
||||
|
||||
#### Intégration (tableau détaillé)
|
||||
|
||||
| Intégration | Contrat | Notes |
|
||||
|---|---|---|
|
||||
| Pathfinding | zones bloquées | pas de fallback |
|
||||
| Incidents visiteurs | expulsion | - |
|
||||
|
||||
#### Navigation (tableau détaillé)
|
||||
|
||||
| Action | Chemin | Résultat |
|
||||
|---|---|---|
|
||||
| Ouvrir panel | clic agent | panel |
|
||||
| Envoyer | clic incident | target |
|
||||
|
||||
#### Événements (tableau détaillé)
|
||||
|
||||
| Event UI | Déclencheur | Effet |
|
||||
|---|---|---|
|
||||
| `OPEN_SECURITY_PANEL` | clic | panel |
|
||||
| `CLICK_SEND_SECURITY` | clic zone | send |
|
||||
|
||||
#### Assets Skinables
|
||||
|
||||
##### Musiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée | Notes |
|
||||
|---|---|---:|---|
|
||||
| `security_loop.mp3` | ambiance | loop | discret |
|
||||
|
||||
##### Sons (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Volume |
|
||||
|---|---|---|
|
||||
| `whistle.mp3` | chase | moyen |
|
||||
| `ui_alert.mp3` | alerte | moyen |
|
||||
|
||||
##### Graphiques (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Contraintes |
|
||||
|---|---|---|
|
||||
| `security_sprite_[dir].png` | sprite | 4 dirs |
|
||||
| `fx_alert_ring.png` | FX | overlay |
|
||||
|
||||
##### Images (tableau détaillé)
|
||||
|
||||
| Asset | Usage |
|
||||
|---|---|
|
||||
| `icon_security_badge.png` | icône |
|
||||
| `portrait_security.png` | panel |
|
||||
|
||||
##### Vidéos (tableau détaillé)
|
||||
|
||||
| Asset | Usage | Durée |
|
||||
|---|---|---:|
|
||||
| `security_alert.webm` | popup | 0.9s |
|
||||
|
||||
##### Animations (tableau détaillé)
|
||||
|
||||
| Animation | Déclencheur | Notes |
|
||||
|---|---|---|
|
||||
| ring alerte | incident | loop |
|
||||
| dash | chase | burst |
|
||||
|
||||
##### Couleurs (tableau détaillé)
|
||||
|
||||
| Token | Valeur | Usage |
|
||||
|---|---|---|
|
||||
| `security_primary` | #1B3B6F | UI |
|
||||
| `security_accent` | #F1C40F | badge |
|
||||
|
||||
##### Textes (tableau détaillé)
|
||||
|
||||
| Clé | FR | EN |
|
||||
|---|---|---|
|
||||
| `security.send` | Envoyer | Send |
|
||||
| `security.busy` | Occupé | Busy |
|
||||
|
||||
##### Formes (tableau détaillé)
|
||||
|
||||
| Élément | Forme | Notes |
|
||||
|---|---|---|
|
||||
| Badge alerte | triangle arrondi | lisible |
|
||||
| Panel | bottom sheet | standard |
|
||||
|
||||
Reference in New Issue
Block a user