From b70ef6df391efc1485c002a0d5a7f3fd28e8e699 Mon Sep 17 00:00:00 2001 From: Dev Date: Wed, 27 Dec 2023 15:05:07 +0000 Subject: [PATCH] Stub out various endpoints --- project/assets/configs/bot.json | 43 +++++++++++++ project/src/callbacks/AchievementCallbacks.ts | 34 ++++++++++ project/src/callbacks/BuildsCallbacks.ts | 63 +++++++++++++++++++ project/src/callbacks/MatchCallbacks.ts | 10 +++ project/src/callbacks/ProfileCallbacks.ts | 13 ++++ project/src/di/Container.ts | 6 ++ .../routers/static/AchievementStaticRouter.ts | 31 +++++++++ .../src/routers/static/BuildStaticRouter.ts | 54 ++++++++++++++++ .../src/routers/static/MatchStaticRouter.ts | 8 +++ .../src/routers/static/ProfileStaticRouter.ts | 8 +++ 10 files changed, 270 insertions(+) create mode 100644 project/src/callbacks/AchievementCallbacks.ts create mode 100644 project/src/callbacks/BuildsCallbacks.ts create mode 100644 project/src/routers/static/AchievementStaticRouter.ts create mode 100644 project/src/routers/static/BuildStaticRouter.ts diff --git a/project/assets/configs/bot.json b/project/assets/configs/bot.json index c9d58f83..088dea95 100644 --- a/project/assets/configs/bot.json +++ b/project/assets/configs/bot.json @@ -36,6 +36,12 @@ "crazyAssaultEvent": 15, "bossBoar": 5, "bossBoarSniper": 5, + "followerBoarClose1": 10, + "followerBoarClose2": 10, + "bossKolontay": 5, + "followerKolontayAssault": 10, + "followerKolontaySecurity": 10, + "shooterBTR": 10, "sptUsec": 30, "sptBear": 30 }, @@ -588,6 +594,30 @@ "lightLaserLimit": 1 } }, + "followerboarclose1": { + "nvgIsActiveChanceDayPercent": 20, + "nvgIsActiveChanceNightPercent": 85, + "faceShieldIsActiveChancePercent": 80, + "lightIsActiveDayChancePercent": 25, + "lightIsActiveNightChancePercent": 75, + "laserIsActiveChancePercent": 75, + "weaponModLimits": { + "scopeLimit": 2, + "lightLaserLimit": 1 + } + }, + "followerboarclose2": { + "nvgIsActiveChanceDayPercent": 20, + "nvgIsActiveChanceNightPercent": 85, + "faceShieldIsActiveChancePercent": 80, + "lightIsActiveDayChancePercent": 25, + "lightIsActiveNightChancePercent": 75, + "laserIsActiveChancePercent": 75, + "weaponModLimits": { + "scopeLimit": 2, + "lightLaserLimit": 1 + } + }, "bossboarsniper": { "nvgIsActiveChanceDayPercent": 20, "nvgIsActiveChanceNightPercent": 85, @@ -601,6 +631,19 @@ "lightLaserLimit": 1 } }, + "bosskolontay": { + "nvgIsActiveChanceDayPercent": 20, + "nvgIsActiveChanceNightPercent": 85, + "faceShieldIsActiveChancePercent": 80, + "lightIsActiveDayChancePercent": 25, + "lightIsActiveNightChancePercent": 75, + "laserIsActiveChancePercent": 75, + "forceStock": true, + "weaponModLimits": { + "scopeLimit": 2, + "lightLaserLimit": 1 + } + }, "followertest": {}, "sectantpriest": { "nvgIsActiveChanceDayPercent": 10, diff --git a/project/src/callbacks/AchievementCallbacks.ts b/project/src/callbacks/AchievementCallbacks.ts new file mode 100644 index 00000000..d15fa0cc --- /dev/null +++ b/project/src/callbacks/AchievementCallbacks.ts @@ -0,0 +1,34 @@ +import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; +import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { inject, injectable } from "tsyringe"; + +@injectable() +export class AchievementCallbacks +{ + constructor( + // @inject("AchievementController") protected botController: AchievementController, + @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, + ) + {} + + /** + * Handle client/achievement/list + * + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public getAchievements(url: string, info: IEmptyRequestData, sessionID: string): any + { + + throw new Error("Not implemented"); + } + + /** + * Handle client/achievement/statistic + * + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public statistic(url: string, info: IEmptyRequestData, sessionID: string): any + { + throw new Error("Not implemented"); + } +} \ No newline at end of file diff --git a/project/src/callbacks/BuildsCallbacks.ts b/project/src/callbacks/BuildsCallbacks.ts new file mode 100644 index 00000000..8c408f14 --- /dev/null +++ b/project/src/callbacks/BuildsCallbacks.ts @@ -0,0 +1,63 @@ +import { IEmptyRequestData } from "@spt-aki/models/eft/common/IEmptyRequestData"; +import { HttpResponseUtil } from "@spt-aki/utils/HttpResponseUtil"; +import { inject, injectable } from "tsyringe"; + +@injectable() +export class BuildsCallbacks +{ + constructor( + // @inject("AchievementController") protected botController: AchievementController, + @inject("HttpResponseUtil") protected httpResponse: HttpResponseUtil, + ) + {} + + /** + * Handle client/builds/list + * + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public getBuilds(url: string, info: IEmptyRequestData, sessionID: string): any + { + throw new Error("Not implemented"); + } + + /** + * Handle client/builds/magazine/save + * + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public setMagazine(url: string, info: IEmptyRequestData, sessionID: string): any + { + throw new Error("Not implemented"); + } + + /** + * Handle client/builds/weapon/save + * + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public setWeapon(url: string, info: IEmptyRequestData, sessionID: string): any + { + throw new Error("Not implemented"); + } + + /** + * Handle client/builds/equipment/save + * + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public setEquipment(url: string, info: IEmptyRequestData, sessionID: string): any + { + throw new Error("Not implemented"); + } + + /** + * Handle client/builds/delete + * + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public deleteBuild(url: string, info: IEmptyRequestData, sessionID: string): any + { + throw new Error("Not implemented"); + } +} \ No newline at end of file diff --git a/project/src/callbacks/MatchCallbacks.ts b/project/src/callbacks/MatchCallbacks.ts index 70e6de33..47c27acc 100644 --- a/project/src/callbacks/MatchCallbacks.ts +++ b/project/src/callbacks/MatchCallbacks.ts @@ -211,4 +211,14 @@ export class MatchCallbacks this.matchController.startOfflineRaid(info, sessionID); return this.httpResponse.nullResponse(); } + + /** Handle client/raid/configuration-by-profile */ + public getConfigurationByProfile( + url: string, + info: IGetRaidConfigurationRequestData, + sessionID: string, + ): INullResponseData + { + return this.httpResponse.nullResponse(); + } } diff --git a/project/src/callbacks/ProfileCallbacks.ts b/project/src/callbacks/ProfileCallbacks.ts index 82de7627..7fd2a984 100644 --- a/project/src/callbacks/ProfileCallbacks.ts +++ b/project/src/callbacks/ProfileCallbacks.ts @@ -159,6 +159,19 @@ export class ProfileCallbacks return this.httpResponse.getBody(response); } + /** + * Handle client/profile/view + * Called when viewing another players profile + */ + public getOtherProfile( + url: string, + info: IEmptyRequestData, + sessionID: string, + ): any + { + throw new Error("Not implemented"); + } + /** * Handle client/profile/settings */ diff --git a/project/src/di/Container.ts b/project/src/di/Container.ts index 990d1d39..ff15bd7a 100644 --- a/project/src/di/Container.ts +++ b/project/src/di/Container.ts @@ -161,7 +161,9 @@ import { ProfileSaveLoadRouter } from "@spt-aki/routers/save_load/ProfileSaveLoa import { BundleSerializer } from "@spt-aki/routers/serializers/BundleSerializer"; import { ImageSerializer } from "@spt-aki/routers/serializers/ImageSerializer"; import { NotifySerializer } from "@spt-aki/routers/serializers/NotifySerializer"; +import { AchievementStaticRouter } from "@spt-aki/routers/static/AchievementStaticRouter"; import { BotStaticRouter } from "@spt-aki/routers/static/BotStaticRouter"; +import { BuildsStaticRouter } from "@spt-aki/routers/static/BuildStaticRouter"; import { BundleStaticRouter } from "@spt-aki/routers/static/BundleStaticRouter"; import { ClientLogStaticRouter } from "@spt-aki/routers/static/ClientLogStaticRouter"; import { CustomizationStaticRouter } from "@spt-aki/routers/static/CustomizationStaticRouter"; @@ -328,6 +330,8 @@ export class Container depContainer.registerType("StaticRoutes", "RagfairStaticRouter"); depContainer.registerType("StaticRoutes", "PresetStaticRouter"); depContainer.registerType("StaticRoutes", "BundleStaticRouter"); + depContainer.registerType("StaticRoutes", "AchievementStaticRouter"); + depContainer.registerType("StaticRoutes", "BuildsStaticRouter"); depContainer.registerType("StaticRoutes", "NotifierStaticRouter"); depContainer.registerType("StaticRoutes", "ProfileStaticRouter"); depContainer.registerType("StaticRoutes", "TraderStaticRouter"); @@ -489,6 +493,8 @@ export class Container depContainer.register("RagfairStaticRouter", { useClass: RagfairStaticRouter }); depContainer.register("TraderStaticRouter", { useClass: TraderStaticRouter }); depContainer.register("WeatherStaticRouter", { useClass: WeatherStaticRouter }); + depContainer.register("AchievementStaticRouter", { useClass: AchievementStaticRouter }); + depContainer.register("BuildsStaticRouter", { useClass: BuildsStaticRouter }); } private static registerGenerators(depContainer: DependencyContainer): void diff --git a/project/src/routers/static/AchievementStaticRouter.ts b/project/src/routers/static/AchievementStaticRouter.ts new file mode 100644 index 00000000..b6f58364 --- /dev/null +++ b/project/src/routers/static/AchievementStaticRouter.ts @@ -0,0 +1,31 @@ +import { inject, injectable } from "tsyringe"; + +import { AchievementCallbacks } from "@spt-aki/callbacks/AchievementCallbacks"; +import { RouteAction, StaticRouter } from "@spt-aki/di/Router"; + +@injectable() +export class AchievementStaticRouter extends StaticRouter +{ + constructor(@inject("AchievementStaticRouter") protected achievementCallbacks: AchievementCallbacks) + { + super([ + new RouteAction( + "/client/achievement/list", + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (url: string, info: any, sessionID: string, output: string): any => + { + return this.achievementCallbacks.getAchievements(url, info, sessionID); + }, + ), + + new RouteAction( + "/client/achievement/statistic", + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (url: string, info: any, sessionID: string, output: string): any => + { + return this.achievementCallbacks.statistic(url, info, sessionID); + }, + ), + ]); + } +} diff --git a/project/src/routers/static/BuildStaticRouter.ts b/project/src/routers/static/BuildStaticRouter.ts new file mode 100644 index 00000000..6e083bee --- /dev/null +++ b/project/src/routers/static/BuildStaticRouter.ts @@ -0,0 +1,54 @@ +import { inject, injectable } from "tsyringe"; + +import { BuildsCallbacks } from "@spt-aki/callbacks/BuildsCallbacks"; +import { RouteAction, StaticRouter } from "@spt-aki/di/Router"; + +@injectable() +export class BuildsStaticRouter extends StaticRouter +{ + constructor(@inject("BuildsCallbacks") protected buildsCallbacks: BuildsCallbacks) + { + super([ + new RouteAction( + "/client/builds/list", + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (url: string, info: any, sessionID: string, output: string): any => + { + return this.buildsCallbacks.getBuilds(url, info, sessionID); + }, + ), + new RouteAction( + "/client/builds/magazine/save", + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (url: string, info: any, sessionID: string, output: string): any => + { + return this.buildsCallbacks.setMagazine(url, info, sessionID); + }, + ), + new RouteAction( + "/client/builds/weapon/save", + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (url: string, info: any, sessionID: string, output: string): any => + { + return this.buildsCallbacks.setWeapon(url, info, sessionID); + }, + ), + new RouteAction( + "/client/builds/equipment/save", + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (url: string, info: any, sessionID: string, output: string): any => + { + return this.buildsCallbacks.setEquipment(url, info, sessionID); + }, + ), + new RouteAction( + "/client/builds/delete", + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (url: string, info: any, sessionID: string, output: string): any => + { + return this.buildsCallbacks.deleteBuild(url, info, sessionID); + }, + ), + ]); + } +} diff --git a/project/src/routers/static/MatchStaticRouter.ts b/project/src/routers/static/MatchStaticRouter.ts index 20280f72..ae3b27b2 100644 --- a/project/src/routers/static/MatchStaticRouter.ts +++ b/project/src/routers/static/MatchStaticRouter.ts @@ -185,6 +185,14 @@ export class MatchStaticRouter extends StaticRouter return this.matchCallbacks.getRaidConfiguration(url, info, sessionID); }, ), + new RouteAction( + "/client/raid/configuration-by-profile", + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (url: string, info: any, sessionID: string, output: string): any => + { + return this.matchCallbacks.getConfigurationByProfile(url, info, sessionID); + }, + ), new RouteAction( "/client/match/group/player/remove", // eslint-disable-next-line @typescript-eslint/no-unused-vars diff --git a/project/src/routers/static/ProfileStaticRouter.ts b/project/src/routers/static/ProfileStaticRouter.ts index 083b3926..fb6e9936 100644 --- a/project/src/routers/static/ProfileStaticRouter.ts +++ b/project/src/routers/static/ProfileStaticRouter.ts @@ -73,6 +73,14 @@ export class ProfileStaticRouter extends StaticRouter return this.profileCallbacks.getProfileStatus(url, info, sessionID); }, ), + new RouteAction( + "/client/profile/view", + // eslint-disable-next-line @typescript-eslint/no-unused-vars + (url: string, info: any, sessionID: string, output: string): any => + { + return this.profileCallbacks.getOtherProfile(url, info, sessionID); + }, + ), new RouteAction( "/client/profile/settings", // eslint-disable-next-line @typescript-eslint/no-unused-vars