From 00fc43a564338c6a29322df06ab48c5ced6eeadd Mon Sep 17 00:00:00 2001 From: Pabloader Date: Mon, 27 Apr 2026 12:31:21 +0000 Subject: [PATCH] QuestManager --- src/common/rpg/quest.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/common/rpg/quest.ts b/src/common/rpg/quest.ts index 056963d..aecb904 100644 --- a/src/common/rpg/quest.ts +++ b/src/common/rpg/quest.ts @@ -104,3 +104,33 @@ export class QuestEngine { return this._status; } } + +export class QuestManager { + private readonly engines: Map; + + constructor(quests: Quest[], options: QuestRuntimeOptions) { + this.engines = new Map(quests.map(q => [q.id, new QuestEngine(q, options)])); + } + + start(questId: string): void { + this.engines.get(questId)?.start(); + } + + async checkAndAdvance(): Promise { + for (const engine of this.engines.values()) { + await engine.checkAndAdvance(); + } + } + + getVariables(): RPGVariables { + const result: RPGVariables = {}; + for (const engine of this.engines.values()) { + Object.assign(result, engine.getVariables()); + } + return result; + } + + getEngine(questId: string): QuestEngine | undefined { + return this.engines.get(questId); + } +}