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

fix: refine session required fields for u7/u8 (#3920)

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

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

代码差异

3 个文件 +46 -44
Modified src/models/sessionModel.ts +4 -4
@@ -7,18 +7,18 @@ export const sessionSchema = new Schema<ISessionDatabase>({
7 7 privateSlots: Number,
8 8 scoreLimit: Number,
9 9 timeLimit: Number,
10 gameModeId: Number,
10 gameModeId: { type: Number, required: true },
11 11 eloRating: Number,
12 regionId: Number,
12 regionId: { type: Number, required: true },
13 13 difficulty: Number,
14 hasStarted: Boolean,
14 hasStarted: { type: Boolean, required: true },
15 15 enableVoice: Boolean,
16 16 matchType: String,
17 17 maps: [String],
18 18 originalSessionId: String,
19 19 customSettings: String,
20 20 guildId: String,
21 buildId: BigInt,
21 buildId: { type: BigInt, required: true },
22 22 freePublic: Number,
23 23 freePrivate: Number,
24 24 fullReset: Number,
Modified src/services/sessionService.ts +28 -26
@@ -1,6 +1,5 @@
1 1 import { Session } from "../models/sessionModel.ts";
2 2 import { generateRewardSeed } from "./rngService.ts";
3 import { Platform } from "../types/loginTypes.ts";
4 3 import type {
5 4 ISession,
6 5 IFindSessionRequest,
@@ -20,29 +19,30 @@ export const createNewSession = async (
20 19 ): Promise<ISession> => {
21 20 const newSession: ISessionDatabase = {
22 21 _id: new Types.ObjectId(),
22 ...sessionData,
23 23 creatorId: Creator,
24 maxPlayers: sessionData.maxPlayers, // || 4
25 minPlayers: sessionData.minPlayers, // || 1
26 privateSlots: sessionData.privateSlots, // || 0
27 scoreLimit: sessionData.scoreLimit, // || 15
28 timeLimit: sessionData.timeLimit, // || 900
29 gameModeId: sessionData.gameModeId, // || 0
30 eloRating: sessionData.eloRating, // || 3
31 regionId: sessionData.regionId, // || 3
32 difficulty: sessionData.difficulty, // || 0
33 hasStarted: sessionData.hasStarted, // || false
34 enableVoice: sessionData.enableVoice, // || true
35 matchType: sessionData.matchType, // || "NORMAL"
36 maps: sessionData.maps, // || []
37 originalSessionId: sessionData.originalSessionId, // || ""
38 customSettings: sessionData.customSettings, // || ""
24 //maxPlayers: sessionData.maxPlayers ?? 4,
25 //minPlayers: sessionData.minPlayers ?? 1,
26 //privateSlots: sessionData.privateSlots ?? 0,
27 //scoreLimit: sessionData.scoreLimit ?? 15,
28 //timeLimit: sessionData.timeLimit ?? 900,
29 //gameModeId: sessionData.gameModeId ?? 0,
30 //eloRating: sessionData.eloRating ?? 3,
31 //regionId: sessionData.regionId ?? 3,
32 //difficulty: sessionData.difficulty ?? 0,
33 hasStarted: sessionData.hasStarted ?? false,
34 //enableVoice: sessionData.enableVoice ?? true,
35 //matchType: sessionData.matchType ?? "NORMAL",
36 //maps: sessionData.maps ?? [],
37 //originalSessionId: sessionData.originalSessionId ?? "",
38 //customSettings: sessionData.customSettings ?? "",
39 39 rewardSeed: sessionData.rewardSeed || -1,
40 guildId: sessionData.guildId, // || ""
41 buildId: sessionData.buildId, // || 4920386201513015989n
42 platform: sessionData.platform ?? Platform.Windows,
43 xplatform: sessionData.xplatform ?? false,
44 freePublic: sessionData.freePublic, // || 3
45 freePrivate: sessionData.freePrivate, // || 0
40 //guildId: sessionData.guildId ?? "",
41 //buildId: sessionData.buildId ?? 4920386201513015989n,
42 //platform: sessionData.platform ?? Platform.Windows,
43 //xplatform: sessionData.xplatform ?? false,
44 //freePublic: sessionData.freePublic ?? 3,
45 //freePrivate: sessionData.freePrivate ?? 0,
46 46 fullReset: 0,
47 47
48 48 lastUpdate: new Date()
@@ -75,10 +75,12 @@ export const getSession = async (request: IFindSessionRequest): Promise<IFindSes
75 75 query.freePublic = { $gte: 1 };
76 76 }
77 77 query.regionId = request.regionId;
78 query.eloRating = {
79 $gte: request.eloRating - request.maxEloDifference,
80 $lte: request.eloRating + request.maxEloDifference
81 };
78 if (request.eloRating !== undefined && request.maxEloDifference !== undefined) {
79 query.eloRating = {
80 $gte: request.eloRating - request.maxEloDifference,
81 $lte: request.eloRating + request.maxEloDifference
82 };
83 }
82 84 if (request.maps) {
83 85 query.maps = request.maps;
84 86 }
Modified src/types/sessionTypes.ts +14 -14
@@ -8,31 +8,31 @@ export interface IHostSessionRequest {
8 8 scoreLimit: number;
9 9 timeLimit: number;
10 10 gameModeId: number;
11 eloRating: number;
11 eloRating?: number;
12 12 regionId: number;
13 13 difficulty: number;
14 hasStarted: boolean;
15 enableVoice: boolean;
14 hasStarted?: boolean;
15 enableVoice?: boolean;
16 16 matchType: string;
17 17 maps: string[];
18 18 originalSessionId: string;
19 customSettings: string;
19 customSettings?: string;
20 20 rewardSeed?: number | bigint;
21 guildId: string;
21 guildId?: string;
22 22 buildId: number | bigint;
23 23 platform?: Platform;
24 24 xplatform?: boolean;
25 25 freePublic: number;
26 26 freePrivate: number;
27 fullReset: number;
27 fullReset?: number;
28 28 }
29 29
30 export interface ISession extends Omit<IHostSessionRequest, "rewardSeed" | "platform" | "xplatform"> {
30 export interface ISession extends Omit<IHostSessionRequest, "hasStarted" | "rewardSeed"> {
31 31 _id: Types.ObjectId;
32 32 creatorId: Types.ObjectId;
33
34 hasStarted: boolean;
33 35 rewardSeed: number | bigint;
34 platform: Platform;
35 xplatform: boolean;
36 36 }
37 37
38 38 export interface ISessionDatabase extends ISession {
@@ -52,12 +52,12 @@ export type IFindSessionRequest = { queryId: number } & (
52 52 freePublic?: { $gte: 1 };
53 53 maps?: string;
54 54 regionId: number;
55 maxEloDifference: number;
56 eloRating: number;
57 enforceElo: boolean;
55 maxEloDifference?: number;
56 eloRating?: number;
57 enforceElo?: boolean;
58 58 allowLobby?: boolean; // for conclave
59 platform: Platform;
60 xplatform: boolean;
59 platform?: Platform;
60 xplatform?: boolean;
61 61 }
62 62 );
63 63