Files

51 lines
1.4 KiB
JavaScript

// 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);
});
});
}
});