const registry = new Map(); export function registerGame(definition) { if (!definition?.slug) throw new Error('Game definition needs a slug.'); registry.set(definition.slug, { slug: definition.slug, name: definition.name ?? definition.slug, category: definition.category ?? 'tabletop', minPlayers: definition.minPlayers ?? 2, maxPlayers: definition.maxPlayers ?? 2, supportsMultiplayer: definition.supportsMultiplayer ?? true, }); } export function listGames() { return [...registry.values()]; } export function getGame(slug) { return registry.get(slug) ?? null; } // Built-in placeholders so the menu has something to show. registerGame({ slug: 'backgammon', name: 'Backgammon', category: 'tabletop', minPlayers: 2, maxPlayers: 2 }); registerGame({ slug: 'parchisi', name: 'Parchisi', category: 'tabletop', minPlayers: 2, maxPlayers: 4 }); registerGame({ slug: 'blackjack', name: 'Blackjack', category: 'casino', minPlayers: 1, maxPlayers: 6 }); registerGame({ slug: 'holdem', name: "Texas Hold 'Em", category: 'casino', minPlayers: 2, maxPlayers: 8 });