Files
core2026/app/game-engine/src/turn/prestartDeletion.ts
T

28 lines
1.2 KiB
TypeScript

import { asNumber, asRecord } from '@sammo-ts/common';
const DEFAULT_MIN_TURNS = 2;
export const readPrestartDeleteAfter = (meta: Record<string, unknown>): Date | null => {
const value = meta.prestart_delete_after;
if (typeof value !== 'string' || !value.trim()) {
return null;
}
const parsed = new Date(value);
return Number.isNaN(parsed.getTime()) ? null : parsed;
};
export const buildPrestartDeleteAfter = (base: Date, tickSeconds: number, config: Record<string, unknown>): Date => {
const configConst = asRecord(config.const);
const minTurns = Math.max(0, Math.floor(asNumber(configConst.minTurnDieOnPrestart, DEFAULT_MIN_TURNS)));
return new Date(base.getTime() + Math.max(1, Math.floor(tickSeconds)) * minTurns * 1_000);
};
export const formatPrestartDeleteAfter = (value: Date): string => {
const seoul = new Date(value.getTime() + 9 * 60 * 60 * 1_000);
const pad = (part: number): string => String(part).padStart(2, '0');
return [
`${seoul.getUTCFullYear()}-${pad(seoul.getUTCMonth() + 1)}-${pad(seoul.getUTCDate())}`,
`${pad(seoul.getUTCHours())}:${pad(seoul.getUTCMinutes())}:${pad(seoul.getUTCSeconds())}`,
].join(' ');
};