**Motivations:** - Initialisation du versionning git pour le projet **Root causes:** - N/A (Nouveau projet) **Correctifs:** - N/A **Evolutions:** - Structure initiale du projet - Ajout du .gitignore **Pages affectées:** - Tous les fichiers
2.6 KiB
2.6 KiB
Incidents visiteurs (§4.2)
Objectif : Visiteurs peuvent rencontrer des incidents (soif, poubelle pleine, banc requis, animal trop loin, envie de photo). Apparition plus fréquente en phase d’attente. Bulle au-dessus du visiteur ; clic = résolution (bonus pièces + attractivité) ; non résolu = timeout puis départ du visiteur et pénalité d’attractivité.
Référence : Cahier des charges §2 (Visiteurs et Incidents).
Impacts
- State :
VisitorEntryétendu avecincidentType?("thirst"|"bin"|"bench"|"animalFar"|"photo"),incidentSince?.attractivityBonusFromIncidents?(cumul résolus − non résolus). - Phase d’attente : camion en cours (
eggPurchaseTruck,truckSale) ou vente en attente de validation (asBuyerUndeliveredavecvalidated_atdans le futur). - Résolution : clic sur la bulle → suppression de l’incident, ajout de pièces et bonus d’attractivité.
- Timeout : après
IncidentTimeoutSecondssans résolution, le visiteur est retiré et une pénalité d’attractivité est appliquée.
Modifications
- types.js :
VisitorEntryavecincidentType?,incidentSince?;GameState.attractivityBonusFromIncidents?. - config.js :
Visitor.IncidentChanceBase,IncidentChanceWaitMultiplier,IncidentTimeoutSeconds,IncidentResolveAttractivityBonus,IncidentResolveCoinBonus,IncidentUnresolvedAttractivityPenalty. - visitor-incidents.js (nouveau) :
isInWaitPhase(state),tickVisitorIncidents(state, nowUnix),resolveIncident(state, visitorIndex),INCIDENT_TYPES,INCIDENT_EMOJI. - game-loop.js : appel à
tickVisitorIncidentsaprèstickVisitorArrivals. - income.js :
getAttractivityScoreinclutstate.attractivityBonusFromIncidents. - state.js : au chargement, défaut
attractivityBonusFromIncidents = 0. - main.js : boucle visiteurs basée sur
state.visitorArrivals.length; pour chaque visiteur avec incident, affichage d’une bulle (emoji + tooltip) ; clic appelleresolveIncidentpuisfullRender. - texts-fr.js :
incidentLabel(soif, poubelle pleine, etc.),incidentBubbleAria. - main.css :
.visitor-incident-bubble(position au-dessus du sprite, cliquable).
Modalités de déploiement
- Client uniquement. Rechargement suffit.
Modalités d’analyse
- Avoir des visiteurs (billeterie) et attendre ou déclencher une phase d’attente (achat œuf, vente en cours) : des bulles d’incident apparaissent au-dessus de certains visiteurs.
- Clic sur une bulle : incident disparaît, pièces et attractivité augmentent.
- Ne pas cliquer : après le délai configuré, le visiteur disparaît et l’attractivité baisse.