26 lines
1.4 KiB
TypeScript
26 lines
1.4 KiB
TypeScript
import { parseServerName, T5_ZOMBIE_MAPS, T6_ZOMBIE_MAPS, zombieMaps } from '../map-aliases.js';
|
|
|
|
export function mapTitle(map: string | null | undefined): string {
|
|
return [...T5_ZOMBIE_MAPS, ...T6_ZOMBIE_MAPS].find((entry) => entry.canonical === map?.toLowerCase())?.friendly ?? map ?? '—';
|
|
}
|
|
|
|
export function serverTitle(name: string): string {
|
|
const parsed = parseServerName(name);
|
|
if (!parsed || !['t5', 't6'].includes(parsed.game.toLowerCase()) ||
|
|
(parsed.gameMode !== null && parsed.gameMode !== 'zombie') || !parsed.mapCanonical) {
|
|
return name;
|
|
}
|
|
const title = zombieMaps(parsed.game).find((entry) => entry.slug === parsed.mapSlug)?.friendly ?? mapTitle(parsed.mapCanonical);
|
|
return parsed.lobby === null ? title : `${title} · Lobby ${parsed.lobby}`;
|
|
}
|
|
|
|
export function serverIdentity(name: string): { map: string; lobby: number | null; game: string } {
|
|
const parsed = parseServerName(name);
|
|
if (!parsed || !['t5', 't6'].includes(parsed.game.toLowerCase()) || !parsed.mapCanonical || (parsed.gameMode && parsed.gameMode !== 'zombie')) return { map: name, lobby: null, game: '' };
|
|
return {
|
|
map: zombieMaps(parsed.game).find(entry => entry.slug === parsed.mapSlug)?.friendly ?? mapTitle(parsed.mapCanonical),
|
|
lobby: parsed.lobby,
|
|
game: parsed.game === 't6' ? 'Black Ops II' : 'Black Ops I'
|
|
};
|
|
}
|