// Haelt die Trefferzonen jeder generierten Szene serverseitig, damit Klicks // geprueft werden koennen, ohne die Zielpositionen je ans Frontend zu schicken. // Einfache Groessen- und Zeitbegrenzung verhindert ein Speicher-Leck bei vielen // Aufrufen. const MAX_ENTRIES = 500; const TTL_MS = 1000 * 60 * 30; // 30 Minuten const scenes = new Map(); // sceneId -> { targets, createdAt } function evictIfNeeded() { const now = Date.now(); for (const [id, entry] of scenes) { if (now - entry.createdAt > TTL_MS) scenes.delete(id); } while (scenes.size > MAX_ENTRIES) { const oldest = scenes.keys().next().value; // Map behaelt Einfuege-Reihenfolge scenes.delete(oldest); } } export function saveScene(sceneId, targets) { scenes.set(sceneId, { targets, createdAt: Date.now() }); evictIfNeeded(); } export function getScene(sceneId) { return scenes.get(sceneId) || null; }