import { composeServerCfg } from './config-compose.js'; import { getBaselineForScope, getVersion, listPromotedOverlaysForScope } from './scripts.js'; import { selectedZombieMap, mapRotation } from './map-aliases.js'; export const MAP_CONFIG_FILE = 'electric_cherry_map.cfg'; /** Loaded after Plutainer's default/main config and before map_rotate. */ export function getServerMapConfig(game: string | null, map: string | null, mapSlug?: string | null): Buffer | null { const entry = selectedZombieMap(game, map, mapSlug); return entry ? Buffer.from(`// Generated by Electric Cherry from the selected map.\nset sv_maprotation "${mapRotation(entry)}"\n`) : null; } /** The promoted config used for first boot and drift reconciliation. */ export function getPromotedServerConfig(game: string | null, map: string | null, mapSlug?: string | null): Buffer | null { if (!game) return null; const baseline = getBaselineForScope('game', game); if (!baseline?.current_version_id) return null; const version = getVersion(baseline.current_version_id); if (!version) return null; const overlays = [ ...listPromotedOverlaysForScope('game', game), ...(map ? listPromotedOverlaysForScope('map', map) : []) ].flatMap((overlay) => { const current = overlay.current_version_id ? getVersion(overlay.current_version_id) : undefined; return current ? [{ id: overlay.id, text: current.content.toString('utf8') }] : []; }); return Buffer.from(composeServerCfg(version.content.toString('utf8'), overlays, game, map, mapSlug), 'utf8'); }