feat: require ranked match acceptance with configurable timeout
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
import { GLOBAL_SETTINGS_LIMITS } from '../../constants/global-settings.js';
|
||||
|
||||
export interface GlobalSettings { revision: number; turnDurationMs: number; finishCutsceneSpeed: number; matchingDelayMs: number; matchSuccessDelayMs: number; matchPreparationDelayMs: number }
|
||||
export interface GlobalSettings { revision: number; turnDurationMs: number; finishCutsceneSpeed: number; matchingDelayMs: number; matchSuccessDelayMs: number; matchPreparationDelayMs: number; rankedAcceptTimeoutMs: number }
|
||||
export function isGlobalSettings(value: unknown): value is GlobalSettings {
|
||||
if (!value || typeof value !== 'object') return false;
|
||||
const s = value as GlobalSettings, limits = GLOBAL_SETTINGS_LIMITS;
|
||||
return Number.isSafeInteger(s.revision) && s.revision >= 1
|
||||
&& Number.isSafeInteger(s.turnDurationMs) && s.turnDurationMs >= limits.turnDurationMs.min && s.turnDurationMs <= limits.turnDurationMs.max
|
||||
&& Number.isFinite(s.finishCutsceneSpeed) && s.finishCutsceneSpeed >= limits.finishCutsceneSpeed.min && s.finishCutsceneSpeed <= limits.finishCutsceneSpeed.max
|
||||
&& (['matchingDelayMs', 'matchSuccessDelayMs', 'matchPreparationDelayMs'] as const).every(key => Number.isSafeInteger(s[key]) && s[key] >= limits[key].min && s[key] <= limits[key].max);
|
||||
&& (['matchingDelayMs', 'matchSuccessDelayMs', 'matchPreparationDelayMs', 'rankedAcceptTimeoutMs'] as const).every(key => Number.isSafeInteger(s[key]) && s[key] >= limits[key].min && s[key] <= limits[key].max);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user