// Entry point for Plants vs Zombies game document.addEventListener('DOMContentLoaded', () => { const startModal = document.getElementById('start-modal'); const btnStart = document.getElementById('btn-start'); const engine = new window.GameEngine('gameCanvas'); // Immediate authoritative profile sync with server if (window.PvZAuth && !window.PvZAuth.isGuest()) { window.PvZAuth.fetchProfile().then(() => { if (engine && typeof engine.loadUserData === 'function') { engine.loadUserData(); engine.updateProfileUI(); engine.updateRecordDisplay(); engine.updateShopUI(); } }).catch(() => {}); } function startGame() { if (startModal) { startModal.classList.add('hidden'); } // Initialize Web Audio on user gesture if (window.PvZAudio) { window.PvZAudio.init(); } engine.init(); } if (btnStart) { btnStart.addEventListener('click', startGame); } else { startGame(); } // Register PWA Service Worker for offline play if ('serviceWorker' in navigator) { window.addEventListener('load', () => { navigator.serviceWorker.register('./sw.js') .then((reg) => { console.log('PvZ ServiceWorker registered:', reg.scope); }) .catch((err) => { console.warn('PvZ ServiceWorker registration failed:', err); }); }); } });