Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 1x 1x 1x 4x 4x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 4x 1x 1x 4x 4x 4x 4x 4x 4x 4x | import type { GameState } from '@/components/GameCanvas/GameCanvas.types';
import { useLocalStorage } from './useLocalStorage';
const STORAGE_KEY = 'memory-game-state';
export function useGameStateStorage() {
const { data: gameState, clear } = useLocalStorage<GameState | null>(STORAGE_KEY, null);
function save(state: GameState) {
gameState.value = {
dateStart: state.dateStart ?? new Date().toISOString(),
tiles: state.tiles,
elapsedSeconds: state.elapsedSeconds,
moves: state.moves,
seed: state.seed,
difficulty: state.difficulty,
matchedPairs: state?.matchedPairs ?? [],
matchCount: state?.matchCount ?? 0,
mismatchCount: state?.mismatchCount ?? 0,
};
}
function load(): GameState | null {
return gameState.value;
}
return {
gameState,
save,
load,
clear,
};
}
|