返回提交历史
Modified
src/managers/sessionManager.ts
+6
-2
Modified
src/types/session.ts
+7
-3
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
代码差异
2 个文件
+13
-5
@@ -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
})
@@ -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
);