diff --git a/docs/technical/zustand.md b/docs/technical/zustand.md index 0913a70..8e05717 100644 --- a/docs/technical/zustand.md +++ b/docs/technical/zustand.md @@ -30,6 +30,30 @@ src/managers/stores/useGameStore.ts The store is placed under `src/managers/stores/` because it belongs to the gameplay orchestration layer, not to a specific visual component. +## Managers vs Store + +Managers are responsible for local runtime objects and imperative behavior. + +Examples: + +- `AudioManager` owns audio elements and sound pools. +- `InteractionManager` owns transient interaction handles and input-oriented behavior. + +Managers can read from or write to the Zustand store when their local behavior needs to affect global gameplay progression. + +The Zustand store is responsible for durable global state: + +- current main state +- mission sub state +- progression flags +- dialogue/audio references +- state transitions + +Rule of thumb: + +- manager = runtime objects, side effects, and local imperative logic +- store = global gameplay state that UI or world components can subscribe to + ## Current Shape The store exposes: @@ -45,7 +69,13 @@ The store exposes: The mission steps currently use this sequence: ```ts -"locked" | "waiting" | "inspect" | "scanning" | "repairing" | "done"; +"locked" | + "waiting" | + "inspected" | + "fragmented" | + "scanning" | + "repairing" | + "done"; ``` ## Reading State In Components diff --git a/src/data/docs/docsTranslations.ts b/src/data/docs/docsTranslations.ts index 6c1ad7d..d7a95b3 100644 --- a/src/data/docs/docsTranslations.ts +++ b/src/data/docs/docsTranslations.ts @@ -239,6 +239,30 @@ src/managers/stores/useGameStore.ts Le store est placé dans \`src/managers/stores/\` parce qu'il appartient à la couche d'orchestration gameplay, pas à un composant visuel précis. +## Managers vs Store + +Les managers sont responsables des objets runtime locaux et des comportements impératifs. + +Exemples : + +- \`AudioManager\` possède les éléments audio et les pools de sons. +- \`InteractionManager\` possède les handles d'interaction transitoires et la logique orientée input. + +Un manager peut lire ou mettre à jour le store Zustand quand son comportement local doit impacter la progression globale du jeu. + +Le store Zustand est responsable de l'état global durable : + +- main state courant +- sous-état de mission +- flags de progression +- références de dialogue/audio +- transitions de state + +Règle simple : + +- manager = objets runtime, effets de bord et logique impérative locale +- store = état gameplay global auquel l'UI ou le world peuvent s'abonner + ## Forme actuelle Le store expose : @@ -254,7 +278,7 @@ Le store expose : Les étapes de mission utilisent actuellement cette séquence : \`\`\`ts -"locked" | "waiting" | "inspect" | "scanning" | "repairing" | "done" +"locked" | "waiting" | "inspected" | "fragmented" | "scanning" | "repairing" | "done" \`\`\` ## Lire le state dans un composant