Files
SPT-Server-Build/Libraries/SPTarkov.Server.Core/Routers/ItemEvents/HideoutItemEventRouter.cs
T
2025-06-18 17:09:20 +00:00

193 lines
8.4 KiB
C#

using SPTarkov.DI.Annotations;
using SPTarkov.Server.Core.Callbacks;
using SPTarkov.Server.Core.DI;
using SPTarkov.Server.Core.Models.Eft.Common;
using SPTarkov.Server.Core.Models.Eft.Common.Request;
using SPTarkov.Server.Core.Models.Eft.Hideout;
using SPTarkov.Server.Core.Models.Eft.ItemEvent;
using SPTarkov.Server.Core.Models.Enums;
namespace SPTarkov.Server.Core.Routers.ItemEvents;
[Injectable]
public class HideoutItemEventRouter : ItemEventRouterDefinition
{
protected HideoutCallbacks _hideoutCallbacks;
public HideoutItemEventRouter(HideoutCallbacks hideoutCallbacks)
{
_hideoutCallbacks = hideoutCallbacks;
}
protected override List<HandledRoute> GetHandledRoutes()
{
return
[
new HandledRoute(HideoutEventActions.HIDEOUT_UPGRADE, false),
new HandledRoute(HideoutEventActions.HIDEOUT_UPGRADE_COMPLETE, false),
new HandledRoute(HideoutEventActions.HIDEOUT_PUT_ITEMS_IN_AREA_SLOTS, false),
new HandledRoute(HideoutEventActions.HIDEOUT_TAKE_ITEMS_FROM_AREA_SLOTS, false),
new HandledRoute(HideoutEventActions.HIDEOUT_TOGGLE_AREA, false),
new HandledRoute(HideoutEventActions.HIDEOUT_SINGLE_PRODUCTION_START, false),
new HandledRoute(HideoutEventActions.HIDEOUT_SCAV_CASE_PRODUCTION_START, false),
new HandledRoute(HideoutEventActions.HIDEOUT_CONTINUOUS_PRODUCTION_START, false),
new HandledRoute(HideoutEventActions.HIDEOUT_TAKE_PRODUCTION, false),
new HandledRoute(HideoutEventActions.HIDEOUT_RECORD_SHOOTING_RANGE_POINTS, false),
new HandledRoute(HideoutEventActions.HIDEOUT_IMPROVE_AREA, false),
new HandledRoute(HideoutEventActions.HIDEOUT_CANCEL_PRODUCTION_COMMAND, false),
new HandledRoute(HideoutEventActions.HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START, false),
new HandledRoute(HideoutEventActions.HIDEOUT_DELETE_PRODUCTION_COMMAND, false),
new HandledRoute(HideoutEventActions.HIDEOUT_CUSTOMIZATION_APPLY_COMMAND, false),
new HandledRoute(HideoutEventActions.HIDEOUT_CUSTOMIZATION_SET_MANNEQUIN_POSE, false),
];
}
public override ValueTask<ItemEventRouterResponse> HandleItemEvent(
string url,
PmcData pmcData,
BaseInteractionRequestData body,
string sessionID,
ItemEventRouterResponse output
)
{
switch (url)
{
case HideoutEventActions.HIDEOUT_UPGRADE:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.Upgrade(
pmcData,
body as HideoutUpgradeRequestData,
sessionID,
output
)
);
case HideoutEventActions.HIDEOUT_UPGRADE_COMPLETE:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.UpgradeComplete(
pmcData,
body as HideoutUpgradeCompleteRequestData,
sessionID,
output
)
);
case HideoutEventActions.HIDEOUT_PUT_ITEMS_IN_AREA_SLOTS:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.PutItemsInAreaSlots(
pmcData,
body as HideoutPutItemInRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_TAKE_ITEMS_FROM_AREA_SLOTS:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.TakeItemsFromAreaSlots(
pmcData,
body as HideoutTakeItemOutRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_TOGGLE_AREA:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.ToggleArea(
pmcData,
body as HideoutToggleAreaRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_SINGLE_PRODUCTION_START:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.SingleProductionStart(
pmcData,
body as HideoutSingleProductionStartRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_SCAV_CASE_PRODUCTION_START:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.ScavCaseProductionStart(
pmcData,
body as HideoutScavCaseStartRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_CONTINUOUS_PRODUCTION_START:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.ContinuousProductionStart(
pmcData,
body as HideoutContinuousProductionStartRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_TAKE_PRODUCTION:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.TakeProduction(
pmcData,
body as HideoutTakeProductionRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_RECORD_SHOOTING_RANGE_POINTS:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.RecordShootingRangePoints(
pmcData,
body as RecordShootingRangePoints,
sessionID,
output
)
);
case HideoutEventActions.HIDEOUT_IMPROVE_AREA:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.ImproveArea(
pmcData,
body as HideoutImproveAreaRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_CANCEL_PRODUCTION_COMMAND:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.CancelProduction(
pmcData,
body as HideoutCancelProductionRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.CicleOfCultistProductionStart(
pmcData,
body as HideoutCircleOfCultistProductionStartRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_DELETE_PRODUCTION_COMMAND:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.HideoutDeleteProductionCommand(
pmcData,
body as HideoutDeleteProductionRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_CUSTOMIZATION_APPLY_COMMAND:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.HideoutCustomizationApplyCommand(
pmcData,
body as HideoutCustomizationApplyRequestData,
sessionID
)
);
case HideoutEventActions.HIDEOUT_CUSTOMIZATION_SET_MANNEQUIN_POSE:
return new ValueTask<ItemEventRouterResponse>(
_hideoutCallbacks.HideoutCustomizationSetMannequinPose(
pmcData,
body as HideoutCustomizationSetMannequinPoseRequest,
sessionID
)
);
default:
throw new Exception(
$"HideoutItemEventRouter being used when it cant handle route {url}"
);
}
}
}