mirror of
https://github.com/Kugelschieber/breach.git
synced 2026-01-18 03:50:24 +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