Files
incremental-game-engine/resource-graph-vite/src/saveLoad.ts
T

27 lines
842 B
TypeScript

import { defaultGame } from "./prefabs/game";
import { Game, serializeGameToString, deserializeGame, deserializeGameFromString } from '@incgame/engine';
const DEFAULT_KEY_GAME = 'incgame';
function getLocalStorageKey(): string {
const params = new URLSearchParams(window.location.search);
return params.get('game') || DEFAULT_KEY_GAME;
}
export function save(game: Game) {
localStorage.setItem(getLocalStorageKey(), serializeGameToString(game));
}
export function load(): Game {
try {
const raw = localStorage.getItem(getLocalStorageKey());
if (raw)
return deserializeGameFromString(raw);
} catch (e) {
console.warn('Не удалось прочитать игру из localStorage', e);
}
const fresh = deserializeGame(defaultGame());
save(fresh);
return fresh;
}