using Core.Controllers; using Core.Models.Eft.Common; using Core.Models.Eft.ItemEvent; using Core.Models.Eft.Quests; using Core.Utils; using SptCommon.Annotations; namespace Core.Callbacks; [Injectable] public class QuestCallbacks( HttpResponseUtil _httpResponseUtil, QuestController _questController, RepeatableQuestController _repeatableQuestController ) { /// /// Handle RepeatableQuestChange event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse ChangeRepeatableQuest(PmcData pmcData, RepeatableQuestChangeRequest info, string sessionID) { return _repeatableQuestController.ChangeRepeatableQuest(pmcData, info, sessionID); } /// /// Handle QuestAccept event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse AcceptQuest(PmcData pmcData, AcceptQuestRequestData info, string sessionID) { if (info.Type == "repeatable") { return _questController.AcceptRepeatableQuest(pmcData, info, sessionID); } return _questController.AcceptQuest(pmcData, info, sessionID); } /// /// Handle QuestComplete event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse CompleteQuest(PmcData pmcData, CompleteQuestRequestData info, string sessionID) { return _questController.CompleteQuest(pmcData, info, sessionID); } /// /// Handle QuestHandover event /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse HandoverQuest(PmcData pmcData, HandoverQuestRequestData info, string sessionID) { return _questController.HandoverQuest(pmcData, info, sessionID); } /// /// Handle client/quest/list /// /// /// /// Session/player id /// public string ListQuests(string url, ListQuestsRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_questController.GetClientQuests(sessionID)); } /// /// Handle client/repeatalbeQuests/activityPeriods /// /// /// /// Session/player id /// public string ActivityPeriods(string url, EmptyRequestData _, string sessionID) { return _httpResponseUtil.GetBody(_repeatableQuestController.GetClientRepeatableQuests(sessionID)); } }