From ea2a886070f6105e4600f604ffd685e78f8ce101 Mon Sep 17 00:00:00 2001 From: HiZe Date: Sun, 25 Feb 2024 20:41:02 +0100 Subject: Fixed skill display stuff #1058 --- .../java/at/hannibal2/skyhanni/api/SkillAPI.kt | 4 +-- .../features/skillprogress/SkillProgress.kt | 31 +++++++++++++++++----- .../skyhanni/utils/renderables/Renderable.kt | 2 +- 3 files changed, 28 insertions(+), 9 deletions(-) (limited to 'src/main/java/at') diff --git a/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt b/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt index 45480aa4e..b21c10d41 100644 --- a/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt @@ -403,7 +403,7 @@ object SkillAPI { val level = getLevel(xp) ChatUtils.chat("With §b${xp.addSeparators()} §eXP you would be level §b$level") } else { - val (overflowLevel, current, needed, _) = calculateOverFlow(xp) + val (overflowLevel, current, needed, _) = calculateOverFlow((xp) - XP_NEEDED_FOR_60) ChatUtils.chat( "With §b${xp.addSeparators()} §eXP you would be level §b$overflowLevel " + "§ewith progress (§b${current.addSeparators()}§e/§b${needed.addSeparators()}§e) XP" @@ -423,7 +423,7 @@ object SkillAPI { ChatUtils.chat("You need §b${neededXp.addSeparators()} §eXP to be level §b${level.toDouble()}") } else { val base = levelingMap.values.sum().toLong() - val neededXP = xpRequiredForLevel(level.toDouble()) + base + val neededXP = xpRequiredForLevel(level.toDouble()) ChatUtils.chat("You need §b${neededXP.addSeparators()} §eXP to be level §b${level.toDouble()}") } return diff --git a/src/main/java/at/hannibal2/skyhanni/features/skillprogress/SkillProgress.kt b/src/main/java/at/hannibal2/skyhanni/features/skillprogress/SkillProgress.kt index 0c88e7633..684d65c82 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/skillprogress/SkillProgress.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/skillprogress/SkillProgress.kt @@ -115,8 +115,9 @@ object SkillProgress { } else { maxWidth = barConfig.regularBar.width + val factor = skillExpPercentage.coerceAtMost(1.0) Renderable.progressBar( - percent = skillExpPercentage, + percent = factor, startColor = Color(SpecialColour.specialToChromaRGB(barConfig.barStartColor)), endColor = Color(SpecialColour.specialToChromaRGB(barConfig.barStartColor)), width = maxWidth, @@ -312,13 +313,18 @@ object SkillProgress { val useCustomGoalLevel = skillInfo.customGoalLevel != 0 && skillInfo.customGoalLevel > skillInfo.overflowLevel && customGoalConfig.enableInETADisplay var targetLevel = if (useCustomGoalLevel) skillInfo.customGoalLevel else level + 1 if (targetLevel <= level || targetLevel > 400) targetLevel = (level + 1) - val currentLevelNeededXp = SkillUtil.xpRequiredForLevel(level.toDouble()) + skillInfo.overflowCurrentXp + + val need = skillInfo.overflowCurrentXpMax + val have = skillInfo.overflowCurrentXp + + val currentLevelNeededXp = SkillUtil.xpRequiredForLevel(level.toDouble()) + have val targetNeededXp = SkillUtil.xpRequiredForLevel(targetLevel.toDouble()) - var remaining = if (useCustomGoalLevel) targetNeededXp - currentLevelNeededXp else skillInfo.overflowCurrentXpMax - skillInfo.overflowCurrentXp - if (!useCustomGoalLevel) { + var remaining = if (useCustomGoalLevel) targetNeededXp - currentLevelNeededXp else need - have + + if (!useCustomGoalLevel && have < need) { if (skillInfo.overflowCurrentXpMax == skillInfoLast.overflowCurrentXpMax) { - remaining = interpolate(remaining.toFloat(), (skillInfoLast.overflowCurrentXpMax - skillInfoLast.overflowCurrentXp).toFloat(), lastGainUpdate.toMillis()).toLong() + remaining = interpolate(remaining.toFloat(), (need - have).toFloat(), lastGainUpdate.toMillis()).toLong() } } @@ -328,7 +334,10 @@ object SkillProgress { add(Renderable.string("§7Needed XP: §e${remaining.addSeparators()}")) var xpInterp = xpInfo.xpGainHour - if (xpInfo.xpGainHour < 1000) { + + if (have > need){ + add(Renderable.string("§7In §cIncrease level cap!")) + } else if (xpInfo.xpGainHour < 1000) { add(Renderable.string("§7In §cN/A")) } else { val duration = ((remaining) * 1000 * 60 * 60 / xpInterp.toLong()).milliseconds @@ -441,6 +450,16 @@ object SkillProgress { if (xpInfo.lastTotalXp > 0) { val delta = totalXp - xpInfo.lastTotalXp if (delta > 0 && delta < 1000) { + + xpInfo.timer = when (SkillAPI.activeSkill) { + SkillType.FARMING -> etaConfig.farmingPauseTime + SkillType.MINING -> etaConfig.miningPauseTime + SkillType.COMBAT -> etaConfig.combatPauseTime + SkillType.FORAGING -> etaConfig.foragingPauseTime + SkillType.FISHING -> etaConfig.fishingPauseTime + else -> 3 + } + xpInfo.xpGainQueue.add(0, delta) calculateXPHour(xpInfo) diff --git a/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt b/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt index c1b382ba8..106743a2c 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/renderables/Renderable.kt @@ -407,4 +407,4 @@ interface Renderable { } } } -} \ No newline at end of file +} -- cgit