diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/utils/CombatUtils.kt | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/CombatUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/CombatUtils.kt index 5fdc63f46..8f64a2d6e 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/CombatUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/CombatUtils.kt @@ -65,44 +65,35 @@ object CombatUtils { lastTotalXp = totalXp } - /* - Must be a better way to do this than repeating the calculateXP function - */ fun calculateETA() { lastKillUpdate = System.currentTimeMillis() killGainHourLast = killGainHour - val nextLevel = GhostCounter.hidden?.bestiaryNextLevel?.toInt() ?: return - val kill = GhostCounter.hidden?.bestiaryCurrentKill?.toInt() ?: return - val sum = GhostData.bestiaryData.filterKeys { it <= nextLevel - 1 }.values.sum() - val cKill = sum + kill - val totalKill = if (GhostCounter.config.showMax) GhostCounter.bestiaryCurrentKill else cKill - if (lastTotalKill > 0) { - val delta: Int = totalKill - lastTotalKill - if (delta in 1..19) { - gainTimer = GhostCounter.config.pauseTimer - killGainQueue.add(0, delta) - while (killGainQueue.size > 30) { - killGainQueue.removeLast() - } - var totalGain = 0 - for (f in killGainQueue) totalGain += f - killGainHour = totalGain * (60 * 60) / killGainQueue.size - _isKilling = true - } else if (gainTimer > 0) { - gainTimer-- - killGainQueue.add(0, 0) - while (killGainQueue.size > 30) { - killGainQueue.removeLast() + + GhostCounter.hidden?.bestiaryNextLevel?.toInt()?.let { nextLevel -> + GhostCounter.hidden?.bestiaryCurrentKill?.toInt()?.let { kill -> + val sum = GhostData.bestiaryData.filterKeys { it <= nextLevel - 1 }.values.sum() + val cKill = sum + kill + val totalKill = if (GhostCounter.config.showMax) GhostCounter.bestiaryCurrentKill else cKill + + if (lastTotalKill > 0) { + val delta: Int = totalKill - lastTotalKill + if (delta in 1..10 || gainTimer > 0) { + gainTimer = maxOf(gainTimer - 1, 0) + killGainQueue.add(0, delta) + while (killGainQueue.size > 30) { + killGainQueue.removeLast() + } + + val totalGain = killGainQueue.sum() + killGainHour = totalGain * 3600 / killGainQueue.size + _isKilling = true + } else if (delta <= 0) { + _isKilling = false + } } - var totalGain = 0 - for (f in killGainQueue) totalGain += f - killGainHour = totalGain * (60 * 60) / killGainQueue.size - _isKilling = true - } else if (delta <= 0) { - _isKilling = false + lastTotalKill = totalKill } } - lastTotalKill = totalKill } /** |