27 lines
842 B
TypeScript
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;
|
|
}
|