diff --git a/src/core/configuration/Config.ts b/src/core/configuration/Config.ts index 2329360ef..d3f9d6eea 100644 --- a/src/core/configuration/Config.ts +++ b/src/core/configuration/Config.ts @@ -28,8 +28,8 @@ export interface ServerConfig { turnstileSiteKey(): string; turnstileSecretKey(): string; turnIntervalMs(): number; - ticksPerSecond(): number; spawnPhaseTicks(gameType: GameType): number; + spawnPhaseSeconds(gameType: GameType): number; gameCreationRate(): number; numWorkers(): number; workerIndex(gameID: GameID): number; diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index f4eaf07d0..c201e7b03 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -123,6 +123,9 @@ export abstract class DefaultServerConfig implements ServerConfig { spawnPhaseTicks(gameType: GameType): number { return gameType === GameType.Singleplayer ? 100 : 300; } + spawnPhaseSeconds(gameType: GameType): number { + return this.spawnPhaseTicks(gameType) / this.ticksPerSecond(); + } gameCreationRate(): number { return 60 * 1000; } diff --git a/src/server/GamePreviewBuilder.ts b/src/server/GamePreviewBuilder.ts index ed5cef77d..6e6e6ba3c 100644 --- a/src/server/GamePreviewBuilder.ts +++ b/src/server/GamePreviewBuilder.ts @@ -182,15 +182,17 @@ export function buildPreview( const winner = parseWinner(publicInfo?.info?.winner, players); const duration = publicInfo?.info?.duration; const gameType = lobby?.gameConfig?.gameType ?? config.gameType; - const spawnPhaseSeconds = - serverConfig.spawnPhaseTicks( - gameType === GameType.Singleplayer - ? GameType.Singleplayer - : GameType.Public, - ) / serverConfig.ticksPerSecond(); const adjustedDuration = typeof duration === "number" - ? Math.max(0, duration - spawnPhaseSeconds) + ? Math.max( + 0, + duration - + serverConfig.spawnPhaseSeconds( + gameType === GameType.Singleplayer + ? GameType.Singleplayer + : GameType.Public, + ), + ) : undefined; // Normalize map name to match filesystem (lowercase, no spaces or special chars) diff --git a/tests/util/TestServerConfig.ts b/tests/util/TestServerConfig.ts index 39263b11f..902a32a34 100644 --- a/tests/util/TestServerConfig.ts +++ b/tests/util/TestServerConfig.ts @@ -46,10 +46,10 @@ export class TestServerConfig implements ServerConfig { turnIntervalMs(): number { throw new Error("Method not implemented."); } - ticksPerSecond(): number { + spawnPhaseTicks(gameType: GameType): number { throw new Error("Method not implemented."); } - spawnPhaseTicks(gameType: GameType): number { + spawnPhaseSeconds(gameType: GameType): number { throw new Error("Method not implemented."); } gameCreationRate(): number {