mirror of
https://github.com/YouHaveTrouble/GuildMaster.git
synced 2026-05-12 06:26:59 +00:00
guild upgrades, enum for quest ranks and quests now persist while clicking onto another tab
This commit is contained in:
+80
-7
@@ -1,6 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import {RouterLink, RouterView} from 'vue-router'
|
||||
</script>
|
||||
import {RouterLink, RouterView} from 'vue-router'</script>
|
||||
|
||||
<template>
|
||||
<header>
|
||||
@@ -10,7 +9,12 @@ import {RouterLink, RouterView} from 'vue-router'
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<RouterView :guild="guild" :adventurers="adventurers" :quests="quests"/>
|
||||
<RouterView
|
||||
:guild="guild"
|
||||
:adventurers="adventurers"
|
||||
:quests="missives"
|
||||
@finalizeQuest="finalizeQuest($event)"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
@@ -18,6 +22,7 @@ import {defineComponent} from "vue";
|
||||
import {Adventurer} from "@/classes/Adventurer";
|
||||
import {Quest} from "@/classes/Quest";
|
||||
import {Guild} from "@/classes/Guild";
|
||||
import {getFromString, QuestRank} from "@/classes/QuestRank";
|
||||
|
||||
export default defineComponent({
|
||||
name: "GuildView",
|
||||
@@ -43,13 +48,81 @@ export default defineComponent({
|
||||
} as { [key: string]: Adventurer },
|
||||
quests: {
|
||||
F: {
|
||||
"1": new Quest("1", "Frog Frenzy", "Kill 10 demon frogs.", 30, 1),
|
||||
"2": new Quest("2", "Rats!", "Get rid of the rats in someone's basement.", 21, 1),
|
||||
"3": new Quest("3", "Herb gethering", "Colect medicinal herbs.", 25, 1),
|
||||
|
||||
"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 },
|
||||
E: {} as { [key: string]: Quest },
|
||||
D: {} as { [key: string]: Quest },
|
||||
C: {} as { [key: string]: Quest },
|
||||
B: {} as { [key: string]: Quest },
|
||||
A: {} as { [key: string]: Quest },
|
||||
S: {} as { [key: string]: Quest },
|
||||
},
|
||||
}),
|
||||
methods: {
|
||||
async updateMissives() {
|
||||
for (const missiveRank in this.missives) {
|
||||
const rank = getFromString(missiveRank as QuestRank);
|
||||
for (const missiveId in this.missives[rank.toString() as QuestRank]) {
|
||||
const missive = this.missives.F[missiveId];
|
||||
if (missive.adventurers.length <= 0) {
|
||||
missive.progressPoints = 0;
|
||||
continue;
|
||||
}
|
||||
for (const adventurerId in missive.adventurers) {
|
||||
const adventurer = missive.adventurers[adventurerId];
|
||||
const attack = adventurer.attackPerLevel * adventurer.level;
|
||||
missive.progressPoints = Math.min(missive.progressPoints + attack, missive.maxProgress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
finalizeQuest(missive: Quest) {
|
||||
missive.progressPoints = 0;
|
||||
this.guild.gold += missive.goldReward;
|
||||
for (const adventurerId in missive.adventurers) {
|
||||
const adventurer = missive.adventurers[adventurerId];
|
||||
adventurer.exp += (missive.expReward / missive.adventurers.length);
|
||||
adventurer.busy = false;
|
||||
}
|
||||
missive.adventurers = [];
|
||||
delete this.missives[missive.rank.toString() as QuestRank][missive.id];
|
||||
},
|
||||
getRandomQuest(rank: QuestRank): Quest | null {
|
||||
const keys = Object.keys(this.quests[rank]);
|
||||
if (keys.length <= 0) return null;
|
||||
const questsForRank = this.quests[rank] as { [key: string]: Quest };
|
||||
const randomId = keys.length * Math.random() << 0;
|
||||
const randomIdString = keys[randomId] as string;
|
||||
return questsForRank[randomIdString];
|
||||
},
|
||||
createMissive(questToAdd: Quest, rank: QuestRank) {
|
||||
const quest = JSON.parse(JSON.stringify(questToAdd));
|
||||
const newId = Math.random().toString(16).slice(2).toString();
|
||||
quest.id = newId;
|
||||
this.missives[rank][newId] = quest;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
setInterval(() => {
|
||||
this.updateMissives();
|
||||
}, 1000);
|
||||
|
||||
|
||||
setInterval(() => {
|
||||
const keys = Object.keys(this.missives[QuestRank.F]);
|
||||
if (keys.length >= 5) return;
|
||||
const quest = this.getRandomQuest(QuestRank.F);
|
||||
if (quest !== null) {
|
||||
this.createMissive(quest, QuestRank.F);
|
||||
}
|
||||
}, 10000);
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user