94 lines
3.0 KiB
JavaScript
94 lines
3.0 KiB
JavaScript
/* ------------------------
|
|
7. MAIN INITIALIZATION
|
|
------------------------ */
|
|
function restartGame() {
|
|
hideGameOver();
|
|
resetScore();
|
|
setupBoard();
|
|
addNewTile();
|
|
addNewTile();
|
|
refreshBoard();
|
|
isMoving = false;
|
|
}
|
|
|
|
function playAgain() {
|
|
restartGame();
|
|
}
|
|
|
|
function goHome() {
|
|
try {
|
|
audio.bg.pause();
|
|
audio.bg.currentTime = 0;
|
|
} catch (e) {}
|
|
window.location.href = "Homepage.html";
|
|
}
|
|
|
|
/* Event Listeners Setup */
|
|
function setupEventListeners() {
|
|
// Tutorial Modal
|
|
const btnTutorial = document.getElementById('btn-tutorial');
|
|
const tutorialOverlay = document.getElementById('tutorial-overlay');
|
|
const closeTutorial = document.getElementById('close-tutorial');
|
|
|
|
if (btnTutorial) btnTutorial.addEventListener('click', () => tutorialOverlay.style.display = 'flex');
|
|
if (closeTutorial) closeTutorial.addEventListener('click', () => tutorialOverlay.style.display = 'none');
|
|
if (tutorialOverlay) tutorialOverlay.addEventListener('click', (e) => {
|
|
if (e.target === tutorialOverlay) tutorialOverlay.style.display = 'none';
|
|
});
|
|
|
|
// Restart & Game Over buttons
|
|
const btnRestart = document.getElementById('btn-restart');
|
|
if (btnRestart) btnRestart.addEventListener('click', restartGame);
|
|
|
|
const btnPlayAgain = document.getElementById('btn-play-again');
|
|
if (btnPlayAgain) btnPlayAgain.addEventListener('click', playAgain);
|
|
|
|
const btnHome = document.getElementById('btn-home');
|
|
if (btnHome) btnHome.addEventListener('click', goHome);
|
|
|
|
const gameOverClose = document.getElementById('game-over-close');
|
|
if (gameOverClose) gameOverClose.addEventListener('click', hideGameOver);
|
|
|
|
const gameOverOverlay = document.getElementById('game-over-overlay');
|
|
if (gameOverOverlay) gameOverOverlay.addEventListener('click', function(e) {
|
|
if (e.target === this) hideGameOver();
|
|
});
|
|
|
|
// Sound Buttons (Mute Toggles)
|
|
const btnSoundBg = document.getElementById('btn-sound-bg');
|
|
const btnSoundPop = document.getElementById('btn-sound-pop');
|
|
const btnSoundMerge = document.getElementById('btn-sound-merge');
|
|
|
|
if (btnSoundBg) btnSoundBg.addEventListener('click', () => {
|
|
soundState.bg = !soundState.bg;
|
|
localStorage.setItem('sound_bg', soundState.bg);
|
|
updateAudioVolumes();
|
|
if(soundState.bg) tryPlayBg(); else audio.bg.pause();
|
|
// Tambahkan logika update tombol UI jika ada (toggle class)
|
|
});
|
|
|
|
if (btnSoundPop) btnSoundPop.addEventListener('click', () => {
|
|
soundState.pop = !soundState.pop;
|
|
localStorage.setItem('sound_pop', soundState.pop);
|
|
updateAudioVolumes();
|
|
});
|
|
|
|
if (btnSoundMerge) btnSoundMerge.addEventListener('click', () => {
|
|
soundState.merge = !soundState.merge;
|
|
localStorage.setItem('sound_merge', soundState.merge);
|
|
updateAudioVolumes();
|
|
});
|
|
}
|
|
|
|
/* DOM Ready */
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
updateHighScoreDisplay();
|
|
setupBoard();
|
|
addNewTile();
|
|
addNewTile();
|
|
initVolumeControl(); // Starts audio logic
|
|
tryPlayBg();
|
|
document.addEventListener("keydown", handleKey);
|
|
setupEventListeners();
|
|
checkAndShowTutorial();
|
|
}); |