From e03ba746fa0ab6258fcd5e6855d1590b0ba6f5c9 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Thu, 9 Nov 2023 18:39:30 +0100 Subject: SkyHanniTracker now handles the display list as well. --- .../features/mining/powdertracker/PowderTracker.kt | 53 +++++++++------------- 1 file changed, 22 insertions(+), 31 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/features/mining') diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/powdertracker/PowderTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/powdertracker/PowderTracker.kt index fa2506069..359fb40b9 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/powdertracker/PowderTracker.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/powdertracker/PowderTracker.kt @@ -24,7 +24,6 @@ import kotlin.concurrent.fixedRateTimer object PowderTracker { private val config get() = SkyHanniMod.feature.mining.powderTracker - private var display = emptyList>() private val picked = "§6You have successfully picked the lock on this chest!".toPattern() private val uncovered = "§aYou uncovered a treasure chest!".toPattern() private val powderEvent = ".*§r§b§l2X POWDER STARTED!.*".toPattern() @@ -59,7 +58,8 @@ object PowderTracker { } } - private val tracker = SkyHanniTracker("Powder Tracker", { Data() }, { it.powderTracker }) { saveAndUpdate() } + private val tracker = SkyHanniTracker("Powder Tracker", { Data() }, { it.powderTracker }) + { formatDisplay(drawDisplay(it)) } class Data : TrackerData() { override fun reset() { @@ -80,7 +80,7 @@ object PowderTracker { if (config.onlyWhenPowderGrinding && !isGrinding) return - tracker.renderDisplay(config.position, display) + tracker.renderDisplay(config.position) } @SubscribeEvent @@ -120,7 +120,7 @@ object PowderTracker { } } } - saveAndUpdate() + tracker.update() } @SubscribeEvent @@ -132,7 +132,7 @@ object PowderTracker { powderTimer = group("time") doublePowder = powderTimer != "00:00" - saveAndUpdate() + tracker.update() } } if (System.currentTimeMillis() - lastChestPicked > 60_000) { @@ -142,7 +142,9 @@ object PowderTracker { @SubscribeEvent fun onConfigLoad(event: ConfigLoadEvent) { - config.textFormat.afterChange { saveAndUpdate() } + config.textFormat.afterChange { + tracker.update() + } } @SubscribeEvent @@ -164,7 +166,7 @@ object PowderTracker { chestInfo.stoppedChecks = 0 chestInfo.perMin.clear() doublePowder = false - saveAndUpdate() + tracker.update() } @SubscribeEvent @@ -176,40 +178,32 @@ object PowderTracker { } } - private fun saveAndUpdate() { - calculate(gemstoneInfo, PowderChestReward.GEMSTONE_POWDER) - calculate(mithrilInfo, PowderChestReward.MITHRIL_POWDER) - calculate(diamondEssenceInfo, PowderChestReward.DIAMOND_ESSENCE) - calculate(goldEssenceInfo, PowderChestReward.GOLD_ESSENCE) - calculateChest() - display = formatDisplay(drawDisplay()) - } - private fun formatDisplay(map: List>) = buildList { if (map.isEmpty()) return@buildList for (index in config.textFormat.get()) { add(map[index]) } - - tracker.addSessionResetButton(this) } - private fun drawDisplay() = buildList> { + private fun drawDisplay(data: Data): List> = buildList { + calculate(data, gemstoneInfo, PowderChestReward.GEMSTONE_POWDER) + calculate(data, mithrilInfo, PowderChestReward.MITHRIL_POWDER) + calculate(data, diamondEssenceInfo, PowderChestReward.DIAMOND_ESSENCE) + calculate(data, goldEssenceInfo, PowderChestReward.GOLD_ESSENCE) + calculateChest(data) + addAsSingletonList("§b§lPowder Tracker") - tracker.addDisplayModeToggle(this) if (!tracker.isInventoryOpen()) { addAsSingletonList("") } - val display = tracker.currentDisplay() ?: return@buildList - val chestPerHour = format(chestInfo.perHour) - addAsSingletonList("§d${display.totalChestPicked.addSeparators()} Total Chests Picked §7($chestPerHour/h)") + addAsSingletonList("§d${data.totalChestPicked.addSeparators()} Total Chests Picked §7($chestPerHour/h)") addAsSingletonList("§bDouble Powder: ${if (doublePowder) "§aActive! §7($powderTimer)" else "§cInactive!"}") val entries = PowderChestReward.entries - val rewards = display.rewards + val rewards = data.rewards addPerHour(rewards, entries[0], mithrilInfo) addPerHour(rewards, entries[1], gemstoneInfo) addAsSingletonList("") @@ -296,15 +290,12 @@ object PowderTracker { resourceInfo.stoppedChecks = 0 } - private fun calculate(info: ResourceInfo, reward: PowderChestReward) { - val display = tracker.currentDisplay() ?: return - val rewards = display.rewards - info.estimated = rewards.getOrDefault(reward, 0) + private fun calculate(display: Data, info: ResourceInfo, reward: PowderChestReward) { + info.estimated = display.rewards.getOrDefault(reward, 0) } - private fun calculateChest() { - val display = tracker.currentDisplay() ?: return - chestInfo.estimated = display.totalChestPicked.toLong() + private fun calculateChest(data: Data) { + chestInfo.estimated = data.totalChestPicked.toLong() } private fun convert(roughCount: Long): Gem { -- cgit