From 2dad283de9d160b1650159597d4f0e7c7bb9d424 Mon Sep 17 00:00:00 2001 From: youhavetrouble Date: Sun, 9 Apr 2023 16:22:42 +0200 Subject: [PATCH] fix already recruited adventurers showing up again --- src/App.vue | 13 +++++++++++-- src/GameData.ts | 17 ++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/App.vue b/src/App.vue index c5efbe4..d4151e8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -27,7 +27,14 @@ import {Adventurer} from "@/classes/Adventurer"; import {getQuestWithRewards, Quest} from "@/classes/Quest"; import {Guild} from "@/classes/Guild"; import {getFromString, QuestRank} from "@/classes/QuestRank"; -import {GameData, loadAdventurersForHire, loadAvailableQuests, loadGame, saveGame} from "@/GameData"; +import { + GameData, + loadAdventurersForHire, + loadAvailableQuests, + loadGame, + removeAlreadyHiredAdventurers, + saveGame +} from "@/GameData"; import type {GuildUpgrade} from "@/classes/GuildUpgrade"; import {AdventurerCapacityUpgrade} from "@/classes/guildUpgrades/AdventurerCapacityUpgrade"; import {getNewAdventurerForHire} from "@/classes/Recruitment"; @@ -205,9 +212,11 @@ export default defineComponent({ }, async mounted() { this.quests = await loadAvailableQuests(); - this.adventurersDatabase = await loadAdventurersForHire(Object.keys(this.adventurers)); + this.adventurersDatabase = await loadAdventurersForHire(); this.loadGame(); + this.adventurersDatabase = removeAlreadyHiredAdventurers(this.adventurersDatabase, this.adventurers); + setInterval(() => { saveGame(new GameData({ adventurers: this.adventurers, diff --git a/src/GameData.ts b/src/GameData.ts index 221536e..ee3108e 100644 --- a/src/GameData.ts +++ b/src/GameData.ts @@ -86,7 +86,7 @@ export async function loadAvailableQuests(): Promise<{ [key: string]: { [key: st return quests; } -export async function loadAdventurersForHire(currentAdventurerIds: Array = []): Promise> { +export async function loadAdventurersForHire(): Promise> { const response = await fetch("data/adventurers.json"); if (response.status !== 200) { console.error("Failed to load adventurers"); @@ -95,9 +95,8 @@ export async function loadAdventurersForHire(currentAdventurerIds: Array } const adventurerData = await response.json(); - const adventurers = [] as Array; + const adventurers: Array = []; for (const adventurer of adventurerData) { - if (currentAdventurerIds.includes(adventurer.id)) continue; adventurers.push(new Adventurer( adventurer.id, adventurer.name, @@ -110,3 +109,15 @@ export async function loadAdventurersForHire(currentAdventurerIds: Array return adventurers; } + +export function removeAlreadyHiredAdventurers( + adventurers: Array, + adventurersHired: { [key: string]: Adventurer } +): Array { + const adventurersForHire: Array = []; + for (const adventurer of adventurers) { + if (adventurersHired[adventurer.id]) continue; + adventurersForHire.push(adventurer); + } + return adventurersForHire; +}