diff --git a/index.html b/index.html
index b479db3..cb27213 100644
--- a/index.html
+++ b/index.html
@@ -29,6 +29,7 @@
opacity: 0.5;
z-index: -1;
}
+ .cursor-pointer { cursor: pointer; }
@@ -58,6 +59,20 @@
+
+
+
+
+
+
@@ -74,6 +89,10 @@
806000000, 836000000, 866000000, 896000000, 926000000, 956000000, 986000000, 1016000000, 1046000000, 1076000000, // 71–80
];
+ let avgXpPerDay = 15000;
+ let currentXp = 0;
+ let currentLevel = 1;
+
function calculateLevel(xp) {
let level = 1;
for (let i = 0; i < xpThresholds.length; i++) {
@@ -86,31 +105,60 @@
return level;
}
+ function updateExtraInfo() {
+ let nextLevelXp = (currentLevel < xpThresholds.length) ? xpThresholds[currentLevel] : currentXp;
+ let xpToNext = Math.max(0, nextLevelXp - currentXp);
+ let xpTo80 = Math.max(0, xpThresholds[79] - currentXp);
+
+ let daysNext = Math.ceil(xpToNext / avgXpPerDay);
+ let days80 = Math.ceil(xpTo80 / avgXpPerDay);
+
+ document.getElementById('xp-per-day').textContent = avgXpPerDay.toLocaleString();
+ document.getElementById('days-next').textContent = daysNext.toLocaleString();
+ document.getElementById('days-80').textContent = days80.toLocaleString();
+ }
+
document.getElementById('calculate-btn').addEventListener('click', () => {
let xp = document.getElementById('xp-input').value.replace(/,/g,'').trim();
if (!xp || isNaN(xp)) {
alert('Please enter a valid number for XP.');
return;
}
- xp = parseInt(xp, 10);
+ currentXp = parseInt(xp, 10);
- let level = calculateLevel(xp);
- let nextLevelXp = (level < xpThresholds.length) ? xpThresholds[level] : xp;
- let currentLevelXp = xpThresholds[level - 1];
- let progress = (xp - currentLevelXp) / (nextLevelXp - currentLevelXp) * 100;
+ currentLevel = calculateLevel(currentXp);
+ let nextLevelXp = (currentLevel < xpThresholds.length) ? xpThresholds[currentLevel] : currentXp;
+ let currentLevelXp = xpThresholds[currentLevel - 1];
+ let progress = (currentXp - currentLevelXp) / (nextLevelXp - currentLevelXp) * 100;
// Update UI
document.getElementById('progress-bar').style.width = progress + '%';
- document.getElementById('level-text').textContent = `Level ${level}`;
- document.getElementById('level-left').textContent = level;
- document.getElementById('level-right').textContent = (level < xpThresholds.length) ? level + 1 : level;
+ document.getElementById('level-text').textContent = `Level ${currentLevel}`;
+ document.getElementById('level-left').textContent = currentLevel;
+ document.getElementById('level-right').textContent = (currentLevel < xpThresholds.length) ? currentLevel + 1 : currentLevel;
document.getElementById('result').classList.remove('hidden');
+
+ updateExtraInfo();
});
document.getElementById('xp-input').addEventListener('input', (e)=>{
e.target.value = e.target.value.replace(/[^0-9,]/g,'');
});
+
+ // Toggle extra info
+ document.getElementById('toggle-extra').addEventListener('click', () => {
+ document.getElementById('extra-info').classList.toggle('hidden');
+ });
+
+ // Edit XP/day
+ document.getElementById('edit-xp').addEventListener('click', () => {
+ let newVal = prompt("Enter your average XP per day:", avgXpPerDay);
+ if (newVal && !isNaN(newVal) && parseInt(newVal) > 0) {
+ avgXpPerDay = parseInt(newVal, 10);
+ updateExtraInfo();
+ }
+ });