// --- Main App --- const DEFAULTS = /*EDITMODE-BEGIN*/{ "theme": "green", "hero": "arcade", "live": true }/*EDITMODE-END*/; function App() { const [state, setStateRaw] = useState(() => { try { const saved = JSON.parse(localStorage.getItem('gg_tweaks') || 'null'); return { ...DEFAULTS, ...(saved || {}) }; } catch { return { ...DEFAULTS }; } }); const [showGame, setShowGame] = useState(false); const [konami, setKonami] = useState(false); const setState = useCallback((patch) => { setStateRaw(prev => { const next = { ...prev, ...patch }; localStorage.setItem('gg_tweaks', JSON.stringify(next)); try { window.parent.postMessage({ type: '__edit_mode_set_keys', edits: patch }, '*'); } catch {} return next; }); }, []); // apply theme useEffect(() => { document.documentElement.setAttribute('data-theme', state.theme); }, [state.theme]); // Konami easter egg useEffect(() => { const seq = ['ArrowUp','ArrowUp','ArrowDown','ArrowDown','ArrowLeft','ArrowRight','ArrowLeft','ArrowRight','b','a']; let idx = 0; const onKey = (e) => { const k = e.key.length === 1 ? e.key.toLowerCase() : e.key; if (k === seq[idx]) { idx++; if (idx === seq.length) { idx = 0; setKonami(true); setTimeout(() => setKonami(false), 3500); } } else { idx = (k === seq[0]) ? 1 : 0; } // shortcuts if (e.key === 'F2') { e.preventDefault(); setShowGame(true); } if (e.key === 'Escape') setShowGame(false); }; window.addEventListener('keydown', onKey); return () => window.removeEventListener('keydown', onKey); }, []); const heroEl = state.hero === 'boot' ? setShowGame(true)} /> : state.hero === 'tv' ? setShowGame(true)} /> : setShowGame(true)} />; const tickerItems = [ 'GREEKGRANDPA.OS v3.8', 'STATUS: ΣΤΟ ΚΑΤΕΡΓΟ', 'STREAMS: ΟΤΑΝ ΓΙΝΕΤΑΙ Η ΦΑΣΟΥΛΑ', 'ΜΕΝΟΥΝ 27 ΧΡΟΝΙΑ ΓΙΑ ΣΥΝΤΑΞΗ', 'HI-SCORE ΣΥΝΤΑΞΗ RUSH: ' + (localStorage.getItem('gg_highscore') || 0), 'DISCORD: ΓΗΡΟΚΟΜΕΙΟ', 'ΚΑΦΕΣ: ΠΛΗΡΗΣ', ]; return (
{heroEl}
© {new Date().getFullYear()} GREEKGRANDPA — μένουν {GRANDPA.years_until_retirement}y ως τη σύνταξη
press F2 for mini-game · try the konami code
{showGame && setShowGame(false)} />} {konami && (
◉ CHEAT ΕΝΕΡΓΟ: +99 ΚΑΦΕΔΕΣ · ΣΥΝΤΑΞΗ -5Y
)}
); } ReactDOM.createRoot(document.getElementById('root')).render();