diff options
| author | hannibal2 <24389977+hannibal002@users.noreply.github.com> | 2024-02-27 19:37:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-27 19:37:29 +0100 |
| commit | 347c0714c906a8391c31e45e740d05a9e31cac85 (patch) | |
| tree | 8122e3fa33509d09df50fb8a78fc4e883d43f7ce /src/main/java/at/hannibal2/skyhanni/api | |
| parent | 219cb98fb66500491b1614552042d582eff9b968 (diff) | |
| download | skyhanni-347c0714c906a8391c31e45e740d05a9e31cac85.tar.gz skyhanni-347c0714c906a8391c31e45e740d05a9e31cac85.tar.bz2 skyhanni-347c0714c906a8391c31e45e740d05a9e31cac85.zip | |
Fixed skill timer. (#1070)
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/api')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt b/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt index 4c25b4c3e..2e7af1836 100644 --- a/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt @@ -36,7 +36,6 @@ import io.github.moulberry.notenoughupdates.util.Utils import net.minecraft.command.CommandBase import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import java.util.LinkedList -import java.util.Timer import java.util.regex.Matcher import kotlin.concurrent.fixedRateTimer import kotlin.time.Duration.Companion.seconds @@ -81,6 +80,33 @@ object SkillAPI { var showDisplay = false var lastUpdate = SimpleTimeMark.farPast() + init { + fixedRateTimer(name = "skyhanni-skillprogress-timer", initialDelay = 1_000L, period = 1_000L) { + tickSkill() + } + } + + private fun tickSkill() { + val activeSkill = activeSkill ?: return + val info = skillXPInfoMap[activeSkill] ?: return + if (!info.sessionTimerActive) return + + val time = when (activeSkill) { + SkillType.FARMING -> SkillProgress.etaConfig.farmingPauseTime + SkillType.MINING -> SkillProgress.etaConfig.miningPauseTime + SkillType.COMBAT -> SkillProgress.etaConfig.combatPauseTime + SkillType.FORAGING -> SkillProgress.etaConfig.foragingPauseTime + SkillType.FISHING -> SkillProgress.etaConfig.fishingPauseTime + else -> 0 + } + if (info.lastUpdate.passedSince() > time.seconds) { + info.sessionTimerActive = false + } + if (info.sessionTimerActive) { + info.timeActive++ + } + } + @SubscribeEvent fun onActionBar(event: ActionBarUpdateEvent) { val actionBar = event.actionBar.removeColor() @@ -106,10 +132,6 @@ object SkillAPI { skillXp.lastUpdate = SimpleTimeMark.now() skillXp.sessionTimerActive = true - - if (skillType.timer == null) { - skillType.timer = runTimer(skillType, skillXp) - } SkillProgress.updateDisplay() SkillProgress.hideInActionBar = listOf(component) return @@ -244,26 +266,6 @@ object SkillAPI { add("- CustomGoalLevel: ${skillInfo.customGoalLevel}\n") } - // TODO only use one statuc timer for the whole feature. this timer just ticks the currently active skill. - private fun runTimer(skillType: SkillType, info: SkillXPInfo): Timer = - fixedRateTimer(name = "skyhanni-skillprogress-timer-${skillType.displayName}", initialDelay = 1_000L, period = 1_000L) { - if (skillType.timer != this) cancel() - val time = when (activeSkill) { - SkillType.FARMING -> SkillProgress.etaConfig.farmingPauseTime - SkillType.MINING -> SkillProgress.etaConfig.miningPauseTime - SkillType.COMBAT -> SkillProgress.etaConfig.combatPauseTime - SkillType.FORAGING -> SkillProgress.etaConfig.foragingPauseTime - SkillType.FISHING -> SkillProgress.etaConfig.fishingPauseTime - else -> 0 - } - if (info.lastUpdate.passedSince() > time.seconds) { - info.sessionTimerActive = false - } - if (info.sessionTimerActive) { - info.timeActive++ - } - } - private fun handleSkillPattern(matcher: Matcher, skillType: SkillType, skillInfo: SkillInfo) { val currentXp = matcher.group("current").formatNumber() val maxXp = matcher.group("needed").formatNumber() |
