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 {getQuestWithRewards, Quest} from "@/classes/Quest";
import {Guild} from "@/classes/Guild"; import {Guild} from "@/classes/Guild";
import {getFromString, QuestRank} from "@/classes/QuestRank"; 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 type {GuildUpgrade} from "@/classes/GuildUpgrade";
import {AdventurerCapacityUpgrade} from "@/classes/guildUpgrades/AdventurerCapacityUpgrade"; import {AdventurerCapacityUpgrade} from "@/classes/guildUpgrades/AdventurerCapacityUpgrade";
import {getNewAdventurerForHire} from "@/classes/Recruitment"; import {getNewAdventurerForHire} from "@/classes/Recruitment";
@@ -205,9 +212,11 @@ export default defineComponent({
}, },
async mounted() { async mounted() {
this.quests = await loadAvailableQuests(); this.quests = await loadAvailableQuests();
this.adventurersDatabase = await loadAdventurersForHire(Object.keys(this.adventurers)); this.adventurersDatabase = await loadAdventurersForHire();
this.loadGame(); this.loadGame();
this.adventurersDatabase = removeAlreadyHiredAdventurers(this.adventurersDatabase, this.adventurers);
setInterval(() => { setInterval(() => {
saveGame(new GameData({ saveGame(new GameData({
adventurers: this.adventurers, adventurers: this.adventurers,
+14 -3
View File
@@ -86,7 +86,7 @@ export async function loadAvailableQuests(): Promise<{ [key: string]: { [key: st
return quests; 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"); const response = await fetch("data/adventurers.json");
if (response.status !== 200) { if (response.status !== 200) {
console.error("Failed to load adventurers"); console.error("Failed to load adventurers");
@@ -95,9 +95,8 @@ export async function loadAdventurersForHire(currentAdventurerIds: Array<string>
} }
const adventurerData = await response.json(); const adventurerData = await response.json();
const adventurers = [] as Array<Adventurer>; const adventurers: Array<Adventurer> = [];
for (const adventurer of adventurerData) { for (const adventurer of adventurerData) {
if (currentAdventurerIds.includes(adventurer.id)) continue;
adventurers.push(new Adventurer( adventurers.push(new Adventurer(
adventurer.id, adventurer.id,
adventurer.name, adventurer.name,
@@ -110,3 +109,15 @@ export async function loadAdventurersForHire(currentAdventurerIds: Array<string>
return adventurers; 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;
}