const empiredropJsonUrl = "../empiredrop.json"; const dateJsonUrl = "../date_2.json"; const prizeJsonUrl = "../prize.json"; async function fetchPrizeData() { try { const response = await fetch(prizeJsonUrl); return await response.json(); } catch (error) { console.error("❌ Failed to fetch Prize data:", error); return null; } } async function fetchEmpiredropData() { try { const response = await fetch(empiredropJsonUrl); const data = await response.json(); const prizeData = await fetchPrizeData(); if (!prizeData) { console.error("⚠️ No prize data available"); return; } updateLeaderboard(data.ranking || [], prizeData); } catch (error) { console.error("❌ Failed to fetch Empiredrop data:", error); } } async function updateLeaderboard(rankingData, prizeData) { const titleElement = document.querySelector(".leaderboard-title"); if (titleElement) { titleElement.textContent = prizeData.title || "EmpireDrop Leaderboard"; } if (!rankingData.length) { console.warn("⚠️ No leaderboard data available. Using placeholders."); rankingData = Array(10).fill(null).map((_, index) => ({ rank: index + 1, total: 0, user: { name: "Unknown Player", avatar: "/assets/images/Default_pfp.png" } })); } rankingData.sort((a, b) => b.total - a.total); const topThree = rankingData.slice(0, 3); const rest = rankingData.slice(3, 10); // Swap 1st and 2nd place in the topThree array [topThree[0], topThree[1]] = [topThree[1], topThree[0]]; const rankContainers = document.querySelectorAll(".rank-container"); rankContainers.forEach((container, index) => { if (!container) return; const player = topThree[index] || { total: 0, user: { name: "-", avatar: "/assets/images/Default_pfp.png" } }; const wagerAmount = (player.total / 100).toFixed(2); container.querySelector(".wagered-amount").innerHTML = `$${wagerAmount}`; container.querySelector(".player-name").textContent = player.user.name; container.querySelector(".profile-picture").src = player.user.avatar; // Swap prize values for 1st and 2nd places let prizeAmount; if (index === 0) { prizeAmount = prizeData.second_place; // 1st place gets 2nd place prize } else if (index === 1) { prizeAmount = prizeData.first_place; // 2nd place gets 1st place prize } else { prizeAmount = prizeData.third_place; } container.querySelector(".prize-amount").innerHTML = `Coin Icon ${prizeAmount || 0}`; }); const barEntries = document.querySelectorAll(".bar-entry"); barEntries.forEach((barEntry, index) => { if (!barEntry) return; const player = rest[index] || { total: 0, user: { name: "-", avatar: "/assets/images/Default_pfp.png" } }; const wagerAmount = (player.total / 100).toFixed(2); barEntry.querySelector(".position").textContent = index + 4; barEntry.querySelector(".username").textContent = player.user.name; barEntry.querySelector(".wager").innerHTML = `$${wagerAmount}`; barEntry.querySelector(".bar-avatar").src = player.user.avatar; const prizeKey = `position_${index + 4}`; const prizeAmount = prizeData[prizeKey] || 0; barEntry.querySelector(".prize").innerHTML = `Coin Icon ${prizeAmount}`; }); } // Function to handle the countdown based on dates in date.json async function startCountdown() { const dates = await fetchDates(); if (!dates) return; const endingDate = new Date(dates.ending_date).getTime(); const countdownElement = document.querySelector('.leaderboard-time'); function updateCountdown() { const now = new Date().getTime(); const timeLeft = endingDate - now; if (timeLeft <= 0) { countdownElement.innerHTML = "Ends In: End"; clearInterval(interval); return; } const days = Math.floor(timeLeft / (1000 * 60 * 60 * 24)); const hours = Math.floor((timeLeft % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60)); const seconds = Math.floor((timeLeft % (1000 * 60)) / 1000); countdownElement.innerHTML = `Ends In: ${days}d ${hours}h ${minutes}m ${seconds}s`; } const interval = setInterval(updateCountdown, 1000); updateCountdown(); } // Fetch start and end dates from date.json async function fetchDates() { try { const response = await fetch(dateJsonUrl); const data = await response.json(); return data; } catch (error) { console.error("❌ Failed to fetch date data:", error); return null; } } fetchEmpiredropData(); startCountdown();