summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/api
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal002@users.noreply.github.com>2024-02-25 18:28:20 +0100
committerGitHub <noreply@github.com>2024-02-25 18:28:20 +0100
commitce3ab82ad811dc76781d3113765325461045efbd (patch)
tree75d270d25b946b8c62ab39364fca59f76efb5b44 /src/main/java/at/hannibal2/skyhanni/api
parentcff372aeae28f7377a571672964c16ebdcd80a37 (diff)
downloadskyhanni-ce3ab82ad811dc76781d3113765325461045efbd.tar.gz
skyhanni-ce3ab82ad811dc76781d3113765325461045efbd.tar.bz2
skyhanni-ce3ab82ad811dc76781d3113765325461045efbd.zip
Fixed creating too many skill timers. #1057
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/api')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt b/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt
index a383b377e..45480aa4e 100644
--- a/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt
+++ b/src/main/java/at/hannibal2/skyhanni/api/SkillAPI.kt
@@ -36,6 +36,7 @@ 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
@@ -105,9 +106,9 @@ object SkillAPI {
skillXp.lastUpdate = SimpleTimeMark.now()
skillXp.sessionTimerActive = true
- if (skillXp.shouldStartTimer) {
- runTimer(skillName, skillXp)
- skillXp.shouldStartTimer = false
+
+ if (skillType.timer == null) {
+ skillType.timer = runTimer(skillType, skillXp)
}
SkillProgress.updateDisplay()
SkillProgress.hideInActionBar = listOf(component)
@@ -243,9 +244,10 @@ object SkillAPI {
add("- CustomGoalLevel: ${skillInfo.customGoalLevel}\n")
}
- private fun runTimer(skillName: String, info: SkillXPInfo) {
- fixedRateTimer(name = "skyhanni-skillprogress-timer-$skillName", initialDelay = 1_000L, period = 1_000L) {
- if (info.shouldStartTimer) cancel()
+ // 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
@@ -261,7 +263,6 @@ object SkillAPI {
info.timeActive++
}
}
- }
private fun handleSkillPattern(matcher: Matcher, skillType: SkillType, skillInfo: SkillInfo) {
val currentXp = matcher.group("current").formatNumber()
@@ -520,6 +521,5 @@ object SkillAPI {
var isActive: Boolean = false,
var lastUpdate: SimpleTimeMark = SimpleTimeMark.farPast(),
var timeActive: Long = 0L,
- var shouldStartTimer: Boolean = true,
)
}