clarify managers and zustand store responsibilities

This commit is contained in:
Tom Boullay
2026-04-30 14:38:07 +02:00
parent b9970c4e03
commit 8884edb281
2 changed files with 56 additions and 2 deletions
+31 -1
View File
@@ -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. 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 ## Current Shape
The store exposes: The store exposes:
@@ -45,7 +69,13 @@ The store exposes:
The mission steps currently use this sequence: The mission steps currently use this sequence:
```ts ```ts
"locked" | "waiting" | "inspect" | "scanning" | "repairing" | "done"; "locked" |
"waiting" |
"inspected" |
"fragmented" |
"scanning" |
"repairing" |
"done";
``` ```
## Reading State In Components ## Reading State In Components
+25 -1
View File
@@ -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. 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 ## Forme actuelle
Le store expose : Le store expose :
@@ -254,7 +278,7 @@ Le store expose :
Les étapes de mission utilisent actuellement cette séquence : Les étapes de mission utilisent actuellement cette séquence :
\`\`\`ts \`\`\`ts
"locked" | "waiting" | "inspect" | "scanning" | "repairing" | "done" "locked" | "waiting" | "inspected" | "fragmented" | "scanning" | "repairing" | "done"
\`\`\` \`\`\`
## Lire le state dans un composant ## Lire le state dans un composant