diff options
| author | hannibal2 <24389977+hannibal002@users.noreply.github.com> | 2023-11-22 14:26:49 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-11-22 14:26:49 +0100 |
| commit | dd2a77f37504f81e09806e1c277451957ea455ac (patch) | |
| tree | 9453880145ce14e14ccc2a9adcb09f7fbcf6b332 /src/main/java/at/hannibal2/skyhanni/utils/tracker | |
| parent | cebe991e0f997035e9e0be0f49fd460be20c5a20 (diff) | |
| download | skyhanni-dd2a77f37504f81e09806e1c277451957ea455ac.tar.gz skyhanni-dd2a77f37504f81e09806e1c277451957ea455ac.tar.bz2 skyhanni-dd2a77f37504f81e09806e1c277451957ea455ac.zip | |
fishing profit tracker (#703)
Fishing Tracker #703
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils/tracker')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt index f882a268e..29b61faee 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt @@ -1,8 +1,10 @@ package at.hannibal2.skyhanni.utils.tracker +import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.config.Storage import at.hannibal2.skyhanni.config.core.config.Position import at.hannibal2.skyhanni.data.ProfileStorageData +import at.hannibal2.skyhanni.features.misc.items.EstimatedItemValue import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.LorenzUtils.addAsSingletonList import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems @@ -19,12 +21,17 @@ class SkyHanniTracker<Data : TrackerData>( private val drawDisplay: (Data) -> List<List<Any>>, ) { private var inventoryOpen = false - private var displayMode = DisplayMode.TOTAL + private var displayMode: DisplayMode? = null private val currentSessions = mutableMapOf<Storage.ProfileSpecific, Data>() private var display = emptyList<List<Any>>() private var sessionResetTime = SimpleTimeMark.farPast() private var dirty = false + companion object { + private val config get() = SkyHanniMod.feature.misc.tracker + private val storedTrackers get() = SkyHanniMod.feature.storage.trackerDisplayModes + } + fun isInventoryOpen() = inventoryOpen fun resetCommand(args: Array<String>, command: String) { @@ -47,6 +54,8 @@ class SkyHanniTracker<Data : TrackerData>( } fun renderDisplay(position: Position) { + if (config.hideInEstimatedItemValue && EstimatedItemValue.currentlyShowing) return + val currentlyOpen = Minecraft.getMinecraft().currentScreen is GuiInventory if (inventoryOpen != currentlyOpen) { inventoryOpen = currentlyOpen @@ -55,7 +64,7 @@ class SkyHanniTracker<Data : TrackerData>( if (dirty) { display = getSharedTracker()?.let { - buildFinalDisplay(drawDisplay(it.get(displayMode))) + buildFinalDisplay(drawDisplay(it.get(getDisplayMode()))) } ?: emptyList() dirty = false } @@ -72,7 +81,7 @@ class SkyHanniTracker<Data : TrackerData>( if (inventoryOpen) { it.add(1, buildDisplayModeView()) } - if (inventoryOpen && displayMode == DisplayMode.SESSION) { + if (inventoryOpen && getDisplayMode() == DisplayMode.SESSION) { it.addAsSingletonList(buildSessionResetButton()) } } @@ -94,9 +103,10 @@ class SkyHanniTracker<Data : TrackerData>( private fun buildDisplayModeView() = LorenzUtils.buildSelector<DisplayMode>( "ยง7Display Mode: ", getName = { type -> type.displayName }, - isCurrent = { it == displayMode }, + isCurrent = { it == getDisplayMode() }, onChange = { displayMode = it + storedTrackers[name] = it update() } ) @@ -113,6 +123,18 @@ class SkyHanniTracker<Data : TrackerData>( } } + private fun getDisplayMode() = displayMode ?: run { + val newValue = config.defaultDisplayMode.get().mode ?: storedTrackers[name] ?: DisplayMode.TOTAL + displayMode = newValue + newValue + } + + fun firstUpdate() { + if (display.isEmpty()) { + update() + } + } + class SharedTracker<Data : TrackerData>(private val total: Data, private val currentSession: Data) { fun modify(modifyFunction: (Data) -> Unit) { modifyFunction(total) @@ -130,4 +152,13 @@ class SkyHanniTracker<Data : TrackerData>( SESSION("This Session"), ; } + + enum class DefaultDisplayMode(val display: String, val mode: DisplayMode?) { + TOTAL("Total", DisplayMode.TOTAL), + SESSION("This Session", DisplayMode.SESSION), + REMEMBER_LAST("Remember Last", null), + ; + + override fun toString() = display + } } |
