0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 09:50:43 -05:00

Implemented hideoutCustomizationSetMannequinPose endpoint

This commit is contained in:
Chomp 2025-01-07 11:19:19 +00:00
parent 180af283be
commit 57a56440f7
6 changed files with 42 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import type { IHideoutCancelProductionRequestData } from "@spt/models/eft/hideou
import type { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData";
import type { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData";
import type { IHideoutCustomizationApplyRequestData } from "@spt/models/eft/hideout/IHideoutCustomizationApplyRequestData";
import { IHideoutCustomizationSetMannequinPoseRequest } from "@spt/models/eft/hideout/IHideoutCustomizationSetMannequinPoseRequest";
import type { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData";
import type { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData";
import type { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData";
@ -222,6 +223,17 @@ export class HideoutCallbacks implements OnUpdate {
return this.hideoutController.hideoutCustomizationApply(sessionId, pmcData, request);
}
/**
* Handle client/game/profile/items/moving - hideoutCustomizationSetMannequinPose
*/
public hideoutCustomizationSetMannequinPose(
pmcData: IPmcData,
request: IHideoutCustomizationSetMannequinPoseRequest,
sessionId: string,
): IItemEventRouterResponse {
return this.hideoutController.hideoutCustomizationSetMannequinPose(sessionId, pmcData, request);
}
public async onUpdate(timeSinceLastRun: number): Promise<boolean> {
if (timeSinceLastRun > this.hideoutConfig.runIntervalSeconds) {
this.hideoutController.update();

View File

@ -19,6 +19,7 @@ import type { IHideoutCancelProductionRequestData } from "@spt/models/eft/hideou
import type { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData";
import type { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData";
import type { IHideoutCustomizationApplyRequestData } from "@spt/models/eft/hideout/IHideoutCustomizationApplyRequestData";
import { IHideoutCustomizationSetMannequinPoseRequest } from "@spt/models/eft/hideout/IHideoutCustomizationSetMannequinPoseRequest";
import type { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData";
import type { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData";
import type { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction";
@ -1425,6 +1426,25 @@ export class HideoutController {
return output;
}
/**
* Handle HideoutCustomizationSetMannequinPose event
* @param sessionId Session id
* @param pmcData Player profile
* @param request Client request data
* @returns Client response
*/
public hideoutCustomizationSetMannequinPose(
sessionId: string,
pmcData: IPmcData,
request: IHideoutCustomizationSetMannequinPoseRequest,
): IItemEventRouterResponse {
for (const [key, value] of Object.entries(request.poses)) {
pmcData.Hideout.MannequinPoses[key] = value;
}
return this.eventOutputHolder.getOutput(sessionId);
}
protected getHideoutCustomisationType(type: string): string {
switch (type) {
case "wall":

View File

@ -351,7 +351,7 @@ export interface IHideout {
HideoutCounters: IHideoutCounters;
Seed: number;
Customization: Record<string, string>;
MannequinPoses: string[];
MannequinPoses: Record<string, string>;
sptUpdateLastRunTimestamp: number;
}

View File

@ -0,0 +1,5 @@
export interface IHideoutCustomizationSetMannequinPoseRequest {
Action: "HideoutCustomizationSetMannequinPose";
poses: Record<string, string>;
timestamp: number;
}

View File

@ -14,4 +14,5 @@ export enum HideoutEventActions {
HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart",
HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand",
HIDEOUT_CUSTOMIZATION_APPLY_COMMAND = "HideoutCustomizationApply",
HIDEOUT_CUSTOMIZATION_SET_MANNEQUIN_POSE = "HideoutCustomizationSetMannequinPose",
}

View File

@ -28,6 +28,7 @@ export class HideoutItemEventRouter extends ItemEventRouterDefinition {
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),
];
}
@ -69,6 +70,8 @@ export class HideoutItemEventRouter extends ItemEventRouterDefinition {
return this.hideoutCallbacks.hideoutDeleteProductionCommand(pmcData, body, sessionID);
case HideoutEventActions.HIDEOUT_CUSTOMIZATION_APPLY_COMMAND:
return this.hideoutCallbacks.hideoutCustomizationApplyCommand(pmcData, body, sessionID);
case HideoutEventActions.HIDEOUT_CUSTOMIZATION_SET_MANNEQUIN_POSE:
return this.hideoutCallbacks.hideoutCustomizationSetMannequinPose(pmcData, body, sessionID);
default:
throw new Error(`Unhandled event ${url} request: ${JSON.stringify(body)}`);
}