using Core.Annotations; using Core.Controllers; using Core.Models.Eft.Common; using Core.Models.Eft.Common.Tables; using Core.Models.Eft.HttpResponse; using Core.Models.Eft.ItemEvent; using Core.Models.Eft.Quests; using Core.Utils; namespace Core.Callbacks; [Injectable] public class QuestCallbacks { protected HttpResponseUtil _httpResponseUtil; protected QuestController _questController; protected RepeatableQuestController _repeatableQuestController; public QuestCallbacks ( HttpResponseUtil httpResponseUtil, QuestController questController, RepeatableQuestController repeatableQuestController ) { _httpResponseUtil = httpResponseUtil; _questController = questController; _repeatableQuestController = repeatableQuestController; } /// /// Handle RepeatableQuestChange event /// /// /// /// /// /// public ItemEventRouterResponse ChangeRepeatableQuest(PmcData pmcData, RepeatableQuestChangeRequest info, string sessionID) { return _repeatableQuestController.ChangeRepeatableQuest(pmcData, info, sessionID); } /// /// Handle QuestAccept event /// /// /// /// /// /// 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 /// /// /// /// /// /// public ItemEventRouterResponse CompleteQuest(PmcData pmcData, CompleteQuestRequestData info, string sessionID) { return _questController.CompleteQuest(pmcData, info, sessionID); } /// /// Handle QuestHandover event /// /// /// /// /// /// public ItemEventRouterResponse HandoverQuest(PmcData pmcData, HandoverQuestRequestData info, string sessionID) { return _questController.HandoverQuest(pmcData, info, sessionID); } /// /// Handle client/quest/list /// /// /// /// /// /// public string ListQuests(string url, ListQuestsRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_questController.GetClientQuest(sessionID)); } /// /// Handle client/repeatalbeQuests/activityPeriods /// /// /// /// /// /// public string ActivityPeriods(string url, EmptyRequestData info, string sessionID) { return _httpResponseUtil.GetBody(_repeatableQuestController.GetClientRepeatableQuests(sessionID)); } }