using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Controllers;
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,
string 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,
string 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,
string 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,
string 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,
string 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,
string sessionID
)
{
return _inventoryController.SwapItem(pmcData, info, sessionID);
}
///
///
/// Players PMC profile
///
/// Session/player id
///
public ItemEventRouterResponse FoldItem(
PmcData pmcData,
InventoryFoldRequestData info,
string sessionID
)
{
return _inventoryController.FoldItem(pmcData, info, sessionID);
}
///
///
/// Players PMC profile
///
/// Session/player id
///
public ItemEventRouterResponse ToggleItem(
PmcData pmcData,
InventoryToggleRequestData info,
string sessionID
)
{
return _inventoryController.ToggleItem(pmcData, info, sessionID);
}
///
///
/// Players PMC profile
///
/// Session/Player id
///
public ItemEventRouterResponse TagItem(
PmcData pmcData,
InventoryTagRequestData request,
string sessionId
)
{
return _inventoryController.TagItem(pmcData, request, sessionId);
}
///
///
/// Players PMC profile
///
/// Session/player id
/// Client response
///
public ItemEventRouterResponse BindItem(
PmcData pmcData,
InventoryBindRequestData info,
string 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,
string 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,
string 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,
string sessionID
)
{
return _inventoryController.ReadEncyclopedia(pmcData, info, sessionID);
}
///
/// Handle ApplyInventoryChanges
///
/// Players PMC profile
///
/// Session/player id
/// Client response
///
public ItemEventRouterResponse SortInventory(
PmcData pmcData,
InventorySortRequestData info,
string 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,
string 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,
string 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,
string 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,
string 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,
string 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,
string 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,
string 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,
string sessionID,
ItemEventRouterResponse output
)
{
_inventoryController.PinOrLock(pmcData, info, sessionID, output);
return output;
}
}