clarify managers and zustand store responsibilities
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user