51 lines
1.4 KiB
JavaScript
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);
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|