summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/api
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal002@users.noreply.github.com>2024-02-27 19:37:29 +0100
committerGitHub <noreply@github.com>2024-02-27 19:37:29 +0100
commit347c0714c906a8391c31e45e740d05a9e31cac85 (patch)
tree8122e3fa33509d09df50fb8a78fc4e883d43f7ce /src/main/java/at/hannibal2/skyhanni/api
parent219cb98fb66500491b1614552042d582eff9b968 (diff)
downloadskyhanni-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.kt52
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()