feat: add /client/game/mode handling (!308)

add `/client/game/mode` endpoint handling. gets into main menu

Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/308
Co-authored-by: kiobu <kiobu@sdf.org>
Co-committed-by: kiobu <kiobu@sdf.org>
This commit is contained in:
kiobu 2024-04-26 07:37:42 +00:00 committed by chomp
parent 7f56cee388
commit 001def56a5
5 changed files with 44 additions and 0 deletions

View File

@ -9,6 +9,8 @@ import { IGameConfigResponse } from "@spt-aki/models/eft/game/IGameConfigRespons
import { IGameEmptyCrcRequestData } from "@spt-aki/models/eft/game/IGameEmptyCrcRequestData";
import { IGameKeepAliveResponse } from "@spt-aki/models/eft/game/IGameKeepAliveResponse";
import { IGameLogoutResponseData } from "@spt-aki/models/eft/game/IGameLogoutResponseData";
import { IGameModeRequestData } from "@spt-aki/models/eft/game/IGameModeRequestData";
import { IGameModeResponse } from "@spt-aki/models/eft/game/IGameModeResponse";
import { IGameStartResponse } from "@spt-aki/models/eft/game/IGameStartResponse";
import { IGetRaidTimeRequest } from "@spt-aki/models/eft/game/IGetRaidTimeRequest";
import { IGetRaidTimeResponse } from "@spt-aki/models/eft/game/IGetRaidTimeResponse";
@ -91,6 +93,19 @@ export class GameCallbacks implements OnLoad
return this.httpResponse.getBody(this.gameController.getGameConfig(sessionID));
}
/**
* Handle client/game/mode
* @returns IGameModeResponse
*/
public getGameMode(
url: string,
info: IGameModeRequestData,
sessionID: string,
): IGetBodyResponseData<IGameModeResponse>
{
return this.httpResponse.getBody(this.gameController.getGameMode(sessionID, info));
}
/**
* Handle client/server/list
*/

View File

@ -15,6 +15,8 @@ import { ICheckVersionResponse } from "@spt-aki/models/eft/game/ICheckVersionRes
import { ICurrentGroupResponse } from "@spt-aki/models/eft/game/ICurrentGroupResponse";
import { IGameConfigResponse } from "@spt-aki/models/eft/game/IGameConfigResponse";
import { IGameKeepAliveResponse } from "@spt-aki/models/eft/game/IGameKeepAliveResponse";
import { IGameModeRequestData } from "@spt-aki/models/eft/game/IGameModeRequestData";
import { ESessionMode } from "@spt-aki/models/eft/game/IGameModeResponse";
import { IGetRaidTimeRequest } from "@spt-aki/models/eft/game/IGetRaidTimeRequest";
import { IGetRaidTimeResponse } from "@spt-aki/models/eft/game/IGetRaidTimeResponse";
import { IServerDetails } from "@spt-aki/models/eft/game/IServerDetails";
@ -479,6 +481,14 @@ export class GameController
return config;
}
/**
* Handle client/game/mode
*/
public getGameMode(sessionID: string, info: IGameModeRequestData): any
{
return { gameMode: ESessionMode.REGULAR, backendUrl: this.httpServerHelper.getBackendUrl() };
}
/**
* Handle client/server/list
*/

View File

@ -0,0 +1,4 @@
export interface IGameModeRequestData
{
sessionMode: string | null;
}

View File

@ -0,0 +1,11 @@
export enum ESessionMode
{
REGULAR = "regular",
PVE = "pve",
}
export interface IGameModeResponse
{
gameMode: ESessionMode;
backendUrl: string;
}

View File

@ -13,6 +13,10 @@ export class GameStaticRouter extends StaticRouter
{
return this.gameCallbacks.getGameConfig(url, info, sessionID);
}),
new RouteAction("/client/game/mode", (url: string, info: any, sessionID: string, output: string): any =>
{
return this.gameCallbacks.getGameMode(url, info, sessionID);
}),
new RouteAction("/client/server/list", (url: string, info: any, sessionID: string, output: string): any =>
{
return this.gameCallbacks.getServer(url, info, sessionID);