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; } }