fix: preserve gameStatus when switching game modes

- Stop passing gameMode as dependency to useGameStatus initialization
- Create useGameStatus once with default 'letters' mode
- Add setGameMode method to update mode via ref without recreating hook
- Update gameMode via effect in useGame when it changes
- Fixes issue where switching to letters mode and starting game would reset to waiting
This commit is contained in:
2025-11-03 23:41:12 +00:00
parent 662557c933
commit 308eafac62
3 changed files with 12 additions and 1 deletions
+6 -1
View File
@@ -14,7 +14,7 @@ export function useGame(
const boardManager = useBoard();
const cursorManager = useCursor();
const gameStatusManager = useGameStatus(undefined, gameMode);
const gameStatusManager = useGameStatus();
// Wrap renderBoard to include player position
const renderBoardWrapped = (letters: any = []) => {
@@ -35,6 +35,11 @@ export function useGame(
renderBoardWrapped(letters);
};
// Update gameMode when it changes (without recreating gameStatus state)
useEffect(() => {
gameStatusManager.setGameMode(gameMode);
}, [gameMode, gameStatusManager]);
// Set the game loop callback
useEffect(() => {
gameStatusManager.setGameLoopCallback(handleGameLoopTick);