mirror of
https://github.com/Kugelschieber/breach.git
synced 2026-01-18 12:00:25 +00:00
Added function to save and load a save game.
This commit is contained in:
32
src/game/SaveGame.test.ts
Normal file
32
src/game/SaveGame.test.ts
Normal 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
20
src/game/SaveGame.ts
Normal 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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user