XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

chore: improve findSessions (#3549)

Closes #3548 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3549 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

2b18f298
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

2 个文件 +13 -5
Modified src/managers/sessionManager.ts +6 -2
@@ -1,4 +1,5 @@
1 1 import { generateRewardSeed } from "../services/rngService.ts";
2 import { Platform } from "../types/loginTypes.ts";
2 3 import type {
3 4 ISession,
4 5 IFindSessionRequest,
@@ -34,7 +35,7 @@ function createNewSession(sessionData: IHostSessionRequest, Creator: Types.Objec
34 35 rewardSeed: sessionData.rewardSeed || -1,
35 36 guildId: sessionData.guildId, // || ""
36 37 buildId: sessionData.buildId, // || 4920386201513015989n
37 platform: sessionData.platform ?? 0,
38 platform: sessionData.platform ?? Platform.Windows,
38 39 xplatform: sessionData.xplatform ?? false,
39 40 freePublic: sessionData.freePublic, // || 3
40 41 freePrivate: sessionData.freePrivate, // || 0
@@ -64,10 +65,13 @@ function getSession(request: IFindSessionRequest): IFindSessionResponseSession[]
64 65 return session.sessionId.equals(request.originalSessionId);
65 66 } else {
66 67 return (
68 !session.hasStarted &&
67 69 request.buildId == session.buildId &&
68 70 request.gameModeId == session.gameModeId &&
71 (!request.freePublic || session.freePublic >= 1) &&
72 session.regionId == request.regionId &&
69 73 Math.abs(session.eloRating - request.eloRating) <= request.maxEloDifference &&
70 (request.maps == "" || session.maps.indexOf(request.maps) != -1)
74 (!request.maps || session.maps.indexOf(request.maps) != -1)
71 75 );
72 76 }
73 77 })
Modified src/types/session.ts +7 -3
@@ -1,4 +1,5 @@
1 1 import type { Types } from "mongoose";
2 import type { Platform } from "./loginTypes.ts";
2 3
3 4 export interface IHostSessionRequest {
4 5 maxPlayers: number;
@@ -19,7 +20,7 @@ export interface IHostSessionRequest {
19 20 rewardSeed?: number | bigint;
20 21 guildId: string;
21 22 buildId: number | bigint;
22 platform?: number;
23 platform?: Platform;
23 24 xplatform?: boolean;
24 25 freePublic: number;
25 26 freePrivate: number;
@@ -30,7 +31,7 @@ export interface ISession extends Omit<IHostSessionRequest, "rewardSeed" | "plat
30 31 sessionId: Types.ObjectId;
31 32 creatorId: Types.ObjectId;
32 33 rewardSeed: number | bigint;
33 platform: number;
34 platform: Platform;
34 35 xplatform: boolean;
35 36 }
36 37
@@ -44,11 +45,14 @@ export type IFindSessionRequest = { queryId: number } & (
44 45 | {
45 46 buildId: number | bigint;
46 47 gameModeId: number;
47 maps: string;
48 freePublic?: { $gte: 1 };
49 maps?: string;
48 50 regionId: number;
49 51 maxEloDifference: number;
50 52 eloRating: number;
51 53 enforceElo: boolean;
54 allowLobby?: boolean; // for conclave
55 platform: Platform;
52 56 xplatform: boolean;
53 57 }
54 58 );