Added function to save and load a save game.

This commit is contained in:
2020-12-16 19:33:31 +01:00
parent 869ee4c04a
commit 5f406a081a
2 changed files with 52 additions and 0 deletions

32
src/game/SaveGame.test.ts Normal file
View File

@@ -0,0 +1,32 @@
import "jest"
import { saveGameKey, saveGame, loadGame } from './SaveGame';
describe("SaveGame", () => {
const state = {
Level: 42,
Score: 89,
};
beforeEach(() => {
localStorage.clear();
});
test("save game", () => {
saveGame(state);
const inStore = localStorage.getItem(saveGameKey);
expect(inStore).not.toBeNull();
const loaded = JSON.parse(inStore as string);
expect(loaded).toEqual(state);
});
test("save game not exists", () => {
const loaded = loadGame();
expect(loaded).toBeNull();
});
test("load game", () => {
saveGame(state);
const loaded = loadGame();
expect(loaded).toEqual(state);
});
});

20
src/game/SaveGame.ts Normal file
View File

@@ -0,0 +1,20 @@
export const saveGameKey = "save_game";
export interface SaveGame {
Level: number
Score: number
}
export function saveGame(saveGame: SaveGame) {
localStorage.setItem(saveGameKey, JSON.stringify(saveGame));
}
export function loadGame(): SaveGame | null {
const saveGame = localStorage.getItem(saveGameKey);
if(saveGame) {
return JSON.parse(saveGame);
}
return null;
}