diff --git a/index.html b/index.html index f5b12f1..d22a0b8 100644 --- a/index.html +++ b/index.html @@ -1,16 +1,19 @@ - + - Vite App - - - - - -
- - + Guild Master - Adventurer's guild management game + + + + + +
+ + + diff --git a/src/App.vue b/src/App.vue index a0c25ff..d8ec3c4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -52,6 +52,11 @@ export default defineComponent({ "2": new Quest("2", QuestRank.F, "Rats!", "Get rid of the rats in someone's basement.", 21, 1, 15), "3": new Quest("3", QuestRank.F, "Herb gethering", "Colect medicinal herbs.", 25, 1, 19), } as { [key: string]: Quest }, + E: { + "1": new Quest("1", QuestRank.F, "Frog Frenzy", "Kill 10 demon frogs.", 30, 1, 25), + "2": new Quest("2", QuestRank.F, "Rats!", "Get rid of the rats in someone's basement.", 21, 1, 15), + "3": new Quest("3", QuestRank.F, "Herb gethering", "Colect medicinal herbs.", 25, 1, 19), + } as { [key: string]: Quest }, } as { [key: string]: { [key: string]: Quest } }, missives: { F: {} as { [key: string]: Quest }, @@ -92,6 +97,7 @@ export default defineComponent({ } missive.adventurers = []; delete this.missives[missive.rank.toString() as QuestRank][missive.id]; + this.saveGame(); }, getRandomQuest(rank: QuestRank): Quest | null { const keys = Object.keys(this.quests[rank]); @@ -106,9 +112,35 @@ export default defineComponent({ const newId = Math.random().toString(16).slice(2).toString(); quest.id = newId; this.missives[rank][newId] = quest; + }, + saveGame() { + window.localStorage.setItem("savedGame", JSON.stringify({ + guild: this.guild, + adventurers: this.adventurers, + missives: this.missives, + })); + }, + loadGame() { + const rawData = window.localStorage.getItem("savedGame"); + if (!rawData) return; + const saveData = JSON.parse(rawData); + this.guild = saveData.guild; + + const adventurers = {} as { [key: string]: Adventurer }; + + for (const id in saveData.adventurers) { + const data = saveData.adventurers[id]; + adventurers[data.id] = new Adventurer(data.id, data.name, data.portrait, data.attackPerLevel, data.defensePerLevel); + } + + this.adventurers = adventurers; + this.missives = saveData.missives; } }, mounted() { + + this.loadGame(); + setInterval(() => { this.updateMissives(); }, 1000);