0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-12 21:30:43 -05:00

Expanded new endpoints

This commit is contained in:
Chomp 2024-12-27 13:38:16 +00:00
parent 5190f6ac60
commit 4ff4f63879
7 changed files with 73 additions and 8 deletions

View File

@ -5,6 +5,7 @@ import type { ISuit } from "@spt/models/eft/common/tables/ITrader";
import type { IBuyClothingRequestData } from "@spt/models/eft/customization/IBuyClothingRequestData";
import type { IGetSuitsResponse } from "@spt/models/eft/customization/IGetSuitsResponse";
import type { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData";
import type { ICustomizationSetRequest } from "@spt/models/eft/customization/iCustomizationSetRequest";
import type { IGetBodyResponseData } from "@spt/models/eft/httpResponse/IGetBodyResponseData";
import type { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { SaveServer } from "@spt/servers/SaveServer";
@ -67,7 +68,11 @@ export class CustomizationCallbacks {
}
/** Handle CustomizationSet */
public setClothing(pmcData: IPmcData, info: any, sessionID: string): IItemEventRouterResponse {
public setClothing(
pmcData: IPmcData,
info: ICustomizationSetRequest,
sessionID: string,
): IGetBodyResponseData<any> {
return this.httpResponse.getBody(this.customizationController.setClothing(sessionID, info));
}
}

View File

@ -5,6 +5,7 @@ import type { IHandleQTEEventRequestData } from "@spt/models/eft/hideout/IHandle
import type { IHideoutCancelProductionRequestData } from "@spt/models/eft/hideout/IHideoutCancelProductionRequestData";
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 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";
@ -215,7 +216,7 @@ export class HideoutCallbacks implements OnUpdate {
*/
public hideoutCustomizationApplyCommand(
pmcData: IPmcData,
request: any,
request: IHideoutCustomizationApplyRequestData,
sessionId: string,
): IItemEventRouterResponse {
return this.hideoutController.hideoutCustomizationApply(sessionId, pmcData, request);

View File

@ -1,11 +1,14 @@
import { ProfileHelper } from "@spt/helpers/ProfileHelper";
import type { IPmcData } from "@spt/models/eft/common/IPmcData";
import type { ICustomisationStorage } from "@spt/models/eft/common/tables/ICustomisationStorage";
import type { ISuit } from "@spt/models/eft/common/tables/ITrader";
import type {
IBuyClothingRequestData,
IPaymentItemForClothing,
} from "@spt/models/eft/customization/IBuyClothingRequestData";
import type { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData";
import type { ICustomizationSetRequest } from "@spt/models/eft/customization/iCustomizationSetRequest";
import type { IHideoutCustomisation } from "@spt/models/eft/hideout/IHideoutCustomisation";
import type { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import type { ILogger } from "@spt/models/spt/utils/ILogger";
import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
@ -13,8 +16,6 @@ import { SaveServer } from "@spt/servers/SaveServer";
import { DatabaseService } from "@spt/services/DatabaseService";
import { LocalisationService } from "@spt/services/LocalisationService";
import { inject, injectable } from "tsyringe";
import type { ICustomisationStorage } from "../models/eft/common/tables/ICustomisationStorage";
import type { IHideoutCustomisation } from "../models/eft/hideout/IHideoutCustomisation";
@injectable()
export class CustomizationController {
@ -249,7 +250,8 @@ export class CustomizationController {
return this.databaseService.getTemplates().customisationStoage;
}
public setClothing(sessionId: string, info: any): any {
/** Handle CustomizationSet event */
public setClothing(sessionId: string, info: ICustomizationSetRequest, pmcData: IPmcData): any {
throw new Error("Method not implemented.");
}
}

View File

@ -18,6 +18,8 @@ import type { IHideoutArea, IStage } from "@spt/models/eft/hideout/IHideoutArea"
import type { IHideoutCancelProductionRequestData } from "@spt/models/eft/hideout/IHideoutCancelProductionRequestData";
import type { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData";
import type { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData";
import type { IHideoutCustomisationGlobal } from "@spt/models/eft/hideout/IHideoutCustomisation";
import type { IHideoutCustomizationApplyRequestData } from "@spt/models/eft/hideout/IHideoutCustomizationApplyRequestData";
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";
@ -1403,8 +1405,43 @@ export class HideoutController {
* @param pmcData Player profile
* @param request Client request data
*/
public hideoutCustomizationApply(sessionId: string, pmcData: IPmcData, request: any): IItemEventRouterResponse {
throw new Error("Method not implemented.");
public hideoutCustomizationApply(
sessionId: string,
pmcData: IPmcData,
request: IHideoutCustomizationApplyRequestData,
): IItemEventRouterResponse {
const output = this.eventOutputHolder.getOutput(sessionId);
const itemDetails = this.databaseService
.getHideout()
.customisation.globals.find((cust) => cust.id === request.offerId);
if (!itemDetails) {
this.logger.error(`Unable to find customisation: ${request.offerId} in db, cannot apply to hideout`);
return output;
}
pmcData.Hideout.Customization[this.getHideoutCustomisationType(itemDetails.type)];
return output;
}
protected getHideoutCustomisationType(type: string): string {
switch (type) {
case "wall":
return "Wall";
case "floor":
return "Floor";
case "light":
return "Light";
case "ceiling":
return "Ceiling";
case "shootingRangeMark":
return "ShootingRangeMark";
default:
this.logger.warning(`Unknown ${type}, unable to map`);
return type;
}
}
/**

View File

@ -0,0 +1,10 @@
export interface ICustomizationSetRequest {
Action: "CustomizationSet";
customizations: CustomizationSetOption[];
}
export interface CustomizationSetOption {
id: string;
type: string;
source: string;
}

View File

@ -0,0 +1,6 @@
export interface IHideoutCustomizationApplyRequestData {
Action: "HideoutCustomizationApply";
/** Id of the newly picked item to apply to hideout */
offerId: string;
timestamp: number;
}

View File

@ -13,7 +13,11 @@ export class CustomizationItemEventRouter extends ItemEventRouterDefinition {
}
public override getHandledRoutes(): HandledRoute[] {
return [new HandledRoute("CustomizationWear", false), new HandledRoute("CustomizationBuy", false)];
return [
new HandledRoute("CustomizationWear", false),
new HandledRoute("CustomizationBuy", false),
new HandledRoute("CustomizationSet", false),
];
}
public override async handleItemEvent(