import { inject, injectable } from "tsyringe"; import { QuestCallbacks } from "@spt-aki/callbacks/QuestCallbacks"; import { HandledRoute, ItemEventRouterDefinition } from "@spt-aki/di/Router"; import { IPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; @injectable() export class QuestItemEventRouter extends ItemEventRouterDefinition { constructor( @inject("WinstonLogger") protected logger: ILogger, @inject("QuestCallbacks") protected questCallbacks: QuestCallbacks, ) { super(); } public override getHandledRoutes(): HandledRoute[] { return [ new HandledRoute("QuestAccept", false), new HandledRoute("QuestComplete", false), new HandledRoute("QuestHandover", false), new HandledRoute("RepeatableQuestChange", false), ]; } public override handleItemEvent( eventAction: string, pmcData: IPmcData, body: any, sessionID: string, ): IItemEventRouterResponse { this.logger.debug(`${eventAction} ${body.qid}`); switch (eventAction) { case "QuestAccept": return this.questCallbacks.acceptQuest(pmcData, body, sessionID); case "QuestComplete": return this.questCallbacks.completeQuest(pmcData, body, sessionID); case "QuestHandover": return this.questCallbacks.handoverQuest(pmcData, body, sessionID); case "RepeatableQuestChange": return this.questCallbacks.changeRepeatableQuest(pmcData, body, sessionID); } } }