using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.DI; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.Hideout; using SPTarkov.Server.Core.Models.Eft.ItemEvent; using SPTarkov.Server.Core.Models.Spt.Config; using SPTarkov.Server.Core.Servers; namespace SPTarkov.Server.Core.Callbacks; [Injectable(TypePriority = OnUpdateOrder.HideoutCallbacks)] public class HideoutCallbacks( HideoutController _hideoutController, ConfigServer _configServer ) : IOnUpdate { private readonly HideoutConfig _hideoutConfig = _configServer.GetConfig(); public bool OnUpdate(long timeSinceLastRun) { if (timeSinceLastRun > _hideoutConfig.RunIntervalSeconds) { _hideoutController.Update(); return true; } return false; } public string GetRoute() { return "spt-hideout"; } /// /// Handle HideoutUpgrade event /// public ItemEventRouterResponse Upgrade(PmcData pmcData, HideoutUpgradeRequestData request, string sessionID, ItemEventRouterResponse output) { _hideoutController.StartUpgrade(pmcData, request, sessionID, output); return output; } /// /// Handle HideoutUpgradeComplete event /// public ItemEventRouterResponse UpgradeComplete(PmcData pmcData, HideoutUpgradeCompleteRequestData request, string sessionID, ItemEventRouterResponse output) { _hideoutController.UpgradeComplete(pmcData, request, sessionID, output); return output; } /// /// Handle HideoutPutItemsInAreaSlots /// public ItemEventRouterResponse PutItemsInAreaSlots(PmcData pmcData, HideoutPutItemInRequestData request, string sessionID) { return _hideoutController.PutItemsInAreaSlots(pmcData, request, sessionID); } /// /// Handle HideoutTakeItemsFromAreaSlots event /// public ItemEventRouterResponse TakeItemsFromAreaSlots(PmcData pmcData, HideoutTakeItemOutRequestData request, string sessionID) { return _hideoutController.TakeItemsFromAreaSlots(pmcData, request, sessionID); } /// /// Handle HideoutToggleArea event /// public ItemEventRouterResponse ToggleArea(PmcData pmcData, HideoutToggleAreaRequestData request, string sessionID) { return _hideoutController.ToggleArea(pmcData, request, sessionID); } /// /// Handle HideoutSingleProductionStart event /// public ItemEventRouterResponse SingleProductionStart(PmcData pmcData, HideoutSingleProductionStartRequestData request, string sessionID) { return _hideoutController.SingleProductionStart(pmcData, request, sessionID); } /// /// Handle HideoutScavCaseProductionStart event /// public ItemEventRouterResponse ScavCaseProductionStart(PmcData pmcData, HideoutScavCaseStartRequestData request, string sessionID) { return _hideoutController.ScavCaseProductionStart(pmcData, request, sessionID); } /// /// Handle HideoutContinuousProductionStart /// public ItemEventRouterResponse ContinuousProductionStart(PmcData pmcData, HideoutContinuousProductionStartRequestData request, string sessionID) { return _hideoutController.ContinuousProductionStart(pmcData, request, sessionID); } /// /// Handle HideoutTakeProduction event /// public ItemEventRouterResponse TakeProduction(PmcData pmcData, HideoutTakeProductionRequestData request, string sessionID) { return _hideoutController.TakeProduction(pmcData, request, sessionID); } /// /// Handle HideoutQuickTimeEvent /// public ItemEventRouterResponse HandleQTEEvent(PmcData pmcData, HandleQTEEventRequestData request, string sessionID, ItemEventRouterResponse output) { _hideoutController.HandleQTEEventOutcome(sessionID, pmcData, request, output); return output; } /// /// Handle client/game/profile/items/moving - RecordShootingRangePoints /// public ItemEventRouterResponse RecordShootingRangePoints(PmcData pmcData, RecordShootingRangePoints request, string sessionID, ItemEventRouterResponse output) { _hideoutController.RecordShootingRangePoints(sessionID, pmcData, request); return output; } /// /// Handle client/game/profile/items/moving - RecordShootingRangePoints /// public ItemEventRouterResponse ImproveArea(PmcData pmcData, HideoutImproveAreaRequestData request, string sessionID) { return _hideoutController.ImproveArea(sessionID, pmcData, request); } /// /// Handle client/game/profile/items/moving - HideoutCancelProductionCommand /// public ItemEventRouterResponse CancelProduction(PmcData pmcData, HideoutCancelProductionRequestData request, string sessionID) { return _hideoutController.CancelProduction(sessionID, pmcData, request); } /// /// Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart /// public ItemEventRouterResponse CicleOfCultistProductionStart(PmcData pmcData, HideoutCircleOfCultistProductionStartRequestData request, string sessionID) { return _hideoutController.CicleOfCultistProductionStart(sessionID, pmcData, request); } /// /// Handle client/game/profile/items/moving - HideoutDeleteProductionCommand /// public ItemEventRouterResponse HideoutDeleteProductionCommand(PmcData pmcData, HideoutDeleteProductionRequestData request, string sessionID) { return _hideoutController.HideoutDeleteProductionCommand(sessionID, pmcData, request); } /// /// Handle client/game/profile/items/moving - HideoutCustomizationApply /// public ItemEventRouterResponse HideoutCustomizationApplyCommand(PmcData pmcData, HideoutCustomizationApplyRequestData request, string sessionID) { return _hideoutController.HideoutCustomizationApply(sessionID, pmcData, request); } /// /// Handle client/game/profile/items/moving - hideoutCustomizationSetMannequinPose /// /// public ItemEventRouterResponse HideoutCustomizationSetMannequinPose(PmcData pmcData, HideoutCustomizationSetMannequinPoseRequest request, string sessionId) { return _hideoutController.HideoutCustomizationSetMannequinPose(sessionId, pmcData, request); } }