From 796ef7ca4139669f15e323c112378125760b5292 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal002@users.noreply.github.com> Date: Sun, 8 Sep 2024 13:36:19 +0200 Subject: Backend: No List in Trackers (#2474) Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Co-authored-by: Cal --- .../skyhanni/utils/tracker/SkyHanniItemTracker.kt | 16 ++++----- .../skyhanni/utils/tracker/SkyHanniTracker.kt | 39 ++++++++++++---------- 2 files changed, 28 insertions(+), 27 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/utils/tracker') diff --git a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt index e7af81cea..8806f3bdb 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt @@ -5,14 +5,13 @@ import at.hannibal2.skyhanni.config.storage.ProfileSpecificStorage import at.hannibal2.skyhanni.data.SlayerAPI import at.hannibal2.skyhanni.data.TrackerManager import at.hannibal2.skyhanni.utils.ChatUtils -import at.hannibal2.skyhanni.utils.CollectionUtils.addAsSingletonList +import at.hannibal2.skyhanni.utils.CollectionUtils.addSelector import at.hannibal2.skyhanni.utils.CollectionUtils.sortedDesc import at.hannibal2.skyhanni.utils.ItemPriceSource import at.hannibal2.skyhanni.utils.ItemUtils.itemName import at.hannibal2.skyhanni.utils.ItemUtils.readableInternalName import at.hannibal2.skyhanni.utils.KeyboardManager import at.hannibal2.skyhanni.utils.LorenzUtils -import at.hannibal2.skyhanni.utils.LorenzUtils.addSelector import at.hannibal2.skyhanni.utils.NEUInternalName import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.NumberUtil.shortFormat @@ -24,7 +23,7 @@ class SkyHanniItemTracker( name: String, createNewSession: () -> Data, getStorage: (ProfileSpecificStorage) -> Data, - drawDisplay: (Data) -> List>, + drawDisplay: (Data) -> List, ) : SkyHanniTracker(name, createNewSession, getStorage, drawDisplay) { companion object { @@ -61,7 +60,7 @@ class SkyHanniItemTracker( } } - fun addPriceFromButton(lists: MutableList>) { + fun addPriceFromButton(lists: MutableList) { if (isInventoryOpen()) { lists.addSelector( "", @@ -78,7 +77,7 @@ class SkyHanniItemTracker( fun drawItems( data: Data, filter: (NEUInternalName) -> Boolean, - lists: MutableList>, + lists: MutableList, ): Double { var profit = 0.0 val items = mutableMapOf() @@ -86,8 +85,7 @@ class SkyHanniItemTracker( if (!filter(internalName)) continue val amount = itemProfit.totalAmount - val pricePer = - if (internalName == SKYBLOCK_COIN) 1.0 else data.getCustomPricePer(internalName) + val pricePer = if (internalName == SKYBLOCK_COIN) 1.0 else data.getCustomPricePer(internalName) val price = (pricePer * amount).toLong() val hidden = itemProfit.hidden @@ -151,11 +149,11 @@ class SkyHanniItemTracker( }, ) else Renderable.string(displayName) - lists.addAsSingletonList(renderable) + lists.add(renderable) } if (hiddenItemTexts.size > 0) { val text = Renderable.hoverTips(" §7${hiddenItemTexts.size} cheap items are hidden.", hiddenItemTexts) - lists.addAsSingletonList(text) + lists.add(text) } return profit 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 345767b05..9d77d4668 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt @@ -7,11 +7,10 @@ import at.hannibal2.skyhanni.data.ProfileStorageData import at.hannibal2.skyhanni.data.TrackerManager import at.hannibal2.skyhanni.features.misc.items.EstimatedItemValue import at.hannibal2.skyhanni.utils.ChatUtils -import at.hannibal2.skyhanni.utils.CollectionUtils.addAsSingletonList -import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.CollectionUtils import at.hannibal2.skyhanni.utils.NEUInternalName import at.hannibal2.skyhanni.utils.NEUItems.getPrice -import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems +import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.renderables.Renderable import net.minecraft.client.Minecraft @@ -24,13 +23,13 @@ open class SkyHanniTracker( private val createNewSession: () -> Data, private val getStorage: (ProfileSpecificStorage) -> Data, // TODO change to renderable - private val drawDisplay: (Data) -> List>, + private val drawDisplay: (Data) -> List, ) { private var inventoryOpen = false private var displayMode: DisplayMode? = null private val currentSessions = mutableMapOf() - private var display = emptyList>() + private var display = emptyList() private var sessionResetTime = SimpleTimeMark.farPast() private var dirty = false @@ -84,25 +83,27 @@ open class SkyHanniTracker( if (dirty || TrackerManager.dirty) { display = getSharedTracker()?.let { - buildFinalDisplay(drawDisplay(it.get(getDisplayMode()))) + val get = it.get(getDisplayMode()) + val rawList = drawDisplay(get) + buildFinalDisplay(rawList) } ?: emptyList() dirty = false } - position.renderStringsAndItems(display, posLabel = name) + position.renderRenderables(display, posLabel = name) } fun update() { dirty = true } - private fun buildFinalDisplay(rawList: List>) = rawList.toMutableList().also { + private fun buildFinalDisplay(rawList: List) = rawList.toMutableList().also { if (it.isEmpty()) return@also if (inventoryOpen) { it.add(1, buildDisplayModeView()) } if (inventoryOpen && getDisplayMode() == DisplayMode.SESSION) { - it.addAsSingletonList(buildSessionResetButton()) + it.add(buildSessionResetButton()) } } @@ -121,15 +122,17 @@ open class SkyHanniTracker( }, ) - private fun buildDisplayModeView() = LorenzUtils.buildSelector( - "§7Display Mode: ", - getName = { type -> type.displayName }, - isCurrent = { it == getDisplayMode() }, - onChange = { - displayMode = it - storedTrackers[name] = it - update() - }, + private fun buildDisplayModeView() = Renderable.horizontalContainer( + CollectionUtils.buildSelector( + "§7Display Mode: ", + getName = { type -> type.displayName }, + isCurrent = { it == getDisplayMode() }, + onChange = { + displayMode = it + storedTrackers[name] = it + update() + }, + ), ) protected fun getSharedTracker() = ProfileStorageData.profileSpecific?.let { -- cgit