(() => { 'use strict'; let overlay = null; let lastScore = 0; let lastNewBest = false; async function getBest(label) { const key = 'best-score:' + label; const legacyHighScore = Number(localStorage.getItem('highScore')) || 0; const stored = Number(await window.ParleySave?.load?.(key)) || Number(localStorage.getItem(key)) || legacyHighScore || 0; return { key, best: stored }; } async function show({ score = 0, wave = 1, label = 'nova-tap' } = {}) { if (!overlay) return; lastScore = score; const { key, best: previousBest } = await getBest(label); const best = Math.max(previousBest, score); lastNewBest = best > previousBest; if (lastNewBest) { await window.ParleySave?.save?.(key, best); try { localStorage.setItem(key, String(best)); localStorage.setItem('highScore', String(best)); } catch (_) {} } else { try { const legacyHighScore = Number(localStorage.getItem('highScore')) || 0; if (best > legacyHighScore) localStorage.setItem('highScore', String(best)); } catch (_) {} } overlay.querySelector('[data-slot="score"]').textContent = Math.floor(score).toLocaleString(); overlay.querySelector('[data-slot="best"]').textContent = Math.floor(best).toLocaleString(); overlay.querySelector('[data-slot="wave"]').textContent = String(wave); overlay.querySelector('[data-slot="newbest"]').textContent = lastNewBest ? 'NEW HIGH SCORE!' : 'Chase your best run.'; overlay.classList.add('visible'); } function hide() { overlay?.classList.remove('visible'); } function mount() { overlay = document.createElement('div'); overlay.id = 'parley-gameover-overlay'; overlay.innerHTML = `
Chase your best run.