fix already recruited adventurers showing up again

This commit is contained in:
2023-04-09 16:22:42 +02:00
parent 61ff80b69f
commit 2dad283de9
2 changed files with 25 additions and 5 deletions
+11 -2
View File
@@ -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,
+14 -3
View File
@@ -86,7 +86,7 @@ export async function loadAvailableQuests(): Promise<{ [key: string]: { [key: st
return quests;
}
export async function loadAdventurersForHire(currentAdventurerIds: Array<string> = []): Promise<Array<Adventurer>> {
export async function loadAdventurersForHire(): Promise<Array<Adventurer>> {
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<string>
}
const adventurerData = await response.json();
const adventurers = [] as Array<Adventurer>;
const adventurers: Array<Adventurer> = [];
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<string>
return adventurers;
}
export function removeAlreadyHiredAdventurers(
adventurers: Array<Adventurer>,
adventurersHired: { [key: string]: Adventurer }
): Array<Adventurer> {
const adventurersForHire: Array<Adventurer> = [];
for (const adventurer of adventurers) {
if (adventurersHired[adventurer.id]) continue;
adventurersForHire.push(adventurer);
}
return adventurersForHire;
}