using SPTarkov.DI.Annotations; using SPTarkov.Server.Core.Controllers; using SPTarkov.Server.Core.Models.Common; using SPTarkov.Server.Core.Models.Eft.Common; using SPTarkov.Server.Core.Models.Eft.Inventory; using SPTarkov.Server.Core.Models.Eft.ItemEvent; using SPTarkov.Server.Core.Models.Eft.Quests; namespace SPTarkov.Server.Core.Callbacks; [Injectable] public class InventoryCallbacks(InventoryController inventoryController, QuestController questController) { /// /// Handle client/game/profile/items/moving Move event /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse MoveItem( PmcData pmcData, InventoryMoveRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.MoveItem(pmcData, info, sessionID, output); return output; } /// /// Handle Remove event /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse RemoveItem( PmcData pmcData, InventoryRemoveRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.DiscardItem(pmcData, info, sessionID, output); return output; } /// /// Handle Split event /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse SplitItem( PmcData pmcData, InventorySplitRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.SplitItem(pmcData, info, sessionID, output); return output; } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse MergeItem( PmcData pmcData, InventoryMergeRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.MergeItem(pmcData, info, sessionID, output); return output; } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse TransferItem( PmcData pmcData, InventoryTransferRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.TransferItem(pmcData, info, sessionID, output); return output; } /// /// Handle Swap /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse SwapItem(PmcData pmcData, InventorySwapRequestData info, MongoId sessionID) { return inventoryController.SwapItem(pmcData, info, sessionID); } /// /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse FoldItem(PmcData pmcData, InventoryFoldRequestData info, MongoId sessionID) { return inventoryController.FoldItem(pmcData, info, sessionID); } /// /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse ToggleItem(PmcData pmcData, InventoryToggleRequestData info, MongoId sessionID) { return inventoryController.ToggleItem(pmcData, info, sessionID); } /// /// /// Players PMC profile /// /// Session/Player id /// public ItemEventRouterResponse TagItem(PmcData pmcData, InventoryTagRequestData request, MongoId sessionId) { return inventoryController.TagItem(pmcData, request, sessionId); } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse BindItem( PmcData pmcData, InventoryBindRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.BindItem(pmcData, info, sessionID, output); return output; } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse UnBindItem( PmcData pmcData, InventoryBindRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.UnBindItem(pmcData, info, sessionID, output); return output; } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse ExamineItem( PmcData pmcData, InventoryExamineRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.ExamineItem(pmcData, info, sessionID, output); return output; } /// /// Handle ReadEncyclopedia /// /// Players PMC profile /// /// Session/player id /// public ItemEventRouterResponse ReadEncyclopedia(PmcData pmcData, InventoryReadEncyclopediaRequestData info, MongoId sessionID) { return inventoryController.ReadEncyclopedia(pmcData, info, sessionID); } /// /// Handle ApplyInventoryChanges /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse SortInventory( PmcData pmcData, InventorySortRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.SortInventory(pmcData, info, sessionID, output); return output; } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse CreateMapMarker( PmcData pmcData, InventoryCreateMarkerRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.CreateMapMarker(pmcData, info, sessionID, output); return output; } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse DeleteMapMarker( PmcData pmcData, InventoryDeleteMarkerRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.DeleteMapMarker(pmcData, info, sessionID, output); return output; } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse EditMapMarker( PmcData pmcData, InventoryEditMarkerRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.EditMapMarker(pmcData, info, sessionID, output); return output; } /// /// Handle OpenRandomLootContainer /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse OpenRandomLootContainer( PmcData pmcData, OpenRandomLootContainerRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.OpenRandomLootContainer(pmcData, info, sessionID, output); return output; } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse RedeemProfileReward( PmcData pmcData, RedeemProfileRequestData info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.RedeemProfileReward(pmcData, info, sessionID); return output; } /// /// Handle game/profile/items/moving SetFavoriteItems /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse SetFavoriteItem( PmcData pmcData, SetFavoriteItems info, MongoId sessionID, ItemEventRouterResponse output ) { inventoryController.SetFavoriteItem(pmcData, info, sessionID); return output; } /// /// TODO: MOVE INTO QUEST CODE /// Handle game/profile/items/moving - QuestFail /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse FailQuest(PmcData pmcData, FailQuestRequestData info, MongoId sessionID, ItemEventRouterResponse output) { questController.FailQuest(pmcData, info, sessionID, output); return output; } /// /// /// Players PMC profile /// /// Session/player id /// Client response /// public ItemEventRouterResponse PinOrLock(PmcData pmcData, PinOrLockItemRequest info, MongoId sessionID, ItemEventRouterResponse output) { inventoryController.PinOrLock(pmcData, info, sessionID, output); return output; } public ItemEventRouterResponse SaveDialogueState( PmcData pmcData, SaveDialogueStateRequest request, MongoId sessionId, ItemEventRouterResponse output ) { inventoryController.SetDialogueProgress(pmcData, request, sessionId, output); return output; } }