diff --git a/Leaderboard.php b/Leaderboard.php
index 18f8ed6..4d5ed76 100644
--- a/Leaderboard.php
+++ b/Leaderboard.php
@@ -150,7 +150,9 @@ if (is_array($currentUser)) {
+
+
diff --git a/assets/leaderboard.js b/assets/leaderboard.js
index f6e6ae3..62a5855 100644
--- a/assets/leaderboard.js
+++ b/assets/leaderboard.js
@@ -1,26 +1,88 @@
+// --- 1. SETUP SFX (Sama persis kayak Mainboard) ---
+const sfxClick = new Audio('music/music-click.mp3');
+
+function playClick() {
+ sfxClick.currentTime = 0;
+ sfxClick.play().catch(() => {});
+}
+
+// --- 2. LOGIKA TOMBOL FILTER (Var 'buttons' TETAP, cuma tambah delay) ---
const buttons = document.querySelectorAll(".filter-btn");
buttons.forEach(btn => {
- btn.addEventListener("click", function () {
+ btn.addEventListener("click", function (e) {
+ e.preventDefault(); // Tahan dulu biar gak langsung pindah
+ playClick(); // Bunyiin suara
+
+ // Logic ganti warna tombol (Asli punya kamu)
buttons.forEach(b => b.classList.remove("active"));
this.classList.add("active");
+
+ // Ambil link tujuan (href) lalu pindah setelah 300ms
+ const targetUrl = this.getAttribute("href");
+ setTimeout(() => {
+ window.location.href = targetUrl;
+ }, 300);
});
});
+// --- 3. LOGIKA TOMBOL KEMBALI & LOGOUT (Tambahan biar ada suaranya) ---
+const backBtn = document.querySelector(".back-btn");
+const logoutBtn = document.querySelector(".logout-btn");
+if (backBtn) {
+ backBtn.removeAttribute("onclick"); // Hapus onclick bawaan HTML
+ backBtn.addEventListener("click", () => {
+ playClick();
+ setTimeout(() => {
+ window.location.href = 'mainboard.php';
+ }, 300);
+ });
+}
+
+if (logoutBtn) {
+ logoutBtn.addEventListener("click", (e) => {
+ e.preventDefault(); // Tahan link logout
+ playClick();
+ setTimeout(() => {
+ window.location.href = 'logout.php';
+ }, 300);
+ });
+}
+
+// --- 4. LOGIKA BACKGROUND MUSIC (UBAHAN: CERDAS DETEKSI HALAMAN) ---
const lbMusicBtn = document.getElementById("lbMusicBtn");
const lbAudio = document.getElementById("lbAudio");
if (lbMusicBtn && lbAudio) {
- lbAudio.loop = true;
- const savedState = localStorage.getItem("musicState");
- let isLbPlaying = savedState === null ? true : (savedState === "on");
-
+ lbAudio.loop = true;
+
+ // 1. Cek nama file halaman saat ini
+ const path = window.location.pathname;
+ // Cek apakah nama filenya mengandung kata "mainboard" (huruf kecil/besar gak masalah)
+ const isMainboardPage = path.toLowerCase().includes("mainboard");
+
+ let isLbPlaying;
+
+ if (isMainboardPage) {
+ // SKENARIO A: Kalau ini halaman MAINBOARD
+ // Aturannya: Pas masuk HARUS ON (Reset).
+ isLbPlaying = true;
+ localStorage.setItem("musicState", "on");
+ } else {
+ // SKENARIO B: Kalau ini halaman LEVEL (Easy/Medium/Hard)
+ // Aturannya: IKUTI settingan terakhir user (baca localStorage).
+ const savedState = localStorage.getItem("musicState");
+ // Kalau gak ada data (null), anggap on. Kalau ada, ikutin isinya.
+ isLbPlaying = savedState === null ? true : (savedState === "on");
+ }
+
+ // Fungsi update tampilan & play/pause
const updateMusicState = () => {
if (isLbPlaying) {
lbAudio.play().then(() => {
lbMusicBtn.innerHTML = "🔊";
}).catch(error => {
- console.log("Autoplay dicegah, menunggu interaksi user...");
+ console.log("Autoplay dicegah browser, nunggu klik user...");
lbMusicBtn.innerHTML = "🔇";
const enableAudioOnInteraction = () => {
@@ -28,11 +90,8 @@ if (lbMusicBtn && lbAudio) {
lbMusicBtn.innerHTML = "🔊";
});
document.removeEventListener('click', enableAudioOnInteraction);
- document.removeEventListener('touchstart', enableAudioOnInteraction);
};
-
document.addEventListener('click', enableAudioOnInteraction);
- document.addEventListener('touchstart', enableAudioOnInteraction);
});
} else {
lbAudio.pause();
@@ -40,17 +99,21 @@ if (lbMusicBtn && lbAudio) {
}
};
+ // Jalankan pertama kali saat load
updateMusicState();
+ // Event Listener saat tombol speaker diklik
lbMusicBtn.addEventListener("click", (e) => {
e.stopPropagation();
+
+ // playClick(); // Uncomment kalau mau tombol mute bunyi klik
if (isLbPlaying) {
isLbPlaying = false;
- localStorage.setItem("musicState", "off");
+ localStorage.setItem("musicState", "off"); // Simpan 'off' biar level selanjutnya tau
} else {
isLbPlaying = true;
- localStorage.setItem("musicState", "on");
+ localStorage.setItem("musicState", "on"); // Simpan 'on'
}
updateMusicState();
});