diff options
author | hannibal2 <24389977+hannibal002@users.noreply.github.com> | 2024-09-09 15:26:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-09 15:26:16 +0200 |
commit | 18da4a7c13d215fb6cd7969654986d9072dd24fa (patch) | |
tree | 493b5f4aed0e6511cac67cfdd7815d4eb7852b31 /src/main/java/at/hannibal2/skyhanni/utils/tracker | |
parent | e17e70b6933982ca417577f441928f77cbbf9ef1 (diff) | |
download | skyhanni-18da4a7c13d215fb6cd7969654986d9072dd24fa.tar.gz skyhanni-18da4a7c13d215fb6cd7969654986d9072dd24fa.tar.bz2 skyhanni-18da4a7c13d215fb6cd7969654986d9072dd24fa.zip |
Improvement: SH Tracker Search (#2477)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils/tracker')
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt | 23 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt | 20 |
2 files changed, 24 insertions, 19 deletions
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 8806f3bdb..8d6f98d69 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt @@ -5,7 +5,7 @@ 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.addSelector +import at.hannibal2.skyhanni.utils.CollectionUtils.addSearchableSelector import at.hannibal2.skyhanni.utils.CollectionUtils.sortedDesc import at.hannibal2.skyhanni.utils.ItemPriceSource import at.hannibal2.skyhanni.utils.ItemUtils.itemName @@ -17,13 +17,15 @@ import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.NumberUtil.shortFormat import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.renderables.Renderable +import at.hannibal2.skyhanni.utils.renderables.Searchable +import at.hannibal2.skyhanni.utils.renderables.toSearchable import kotlin.time.Duration.Companion.seconds class SkyHanniItemTracker<Data : ItemTrackerData>( name: String, createNewSession: () -> Data, getStorage: (ProfileSpecificStorage) -> Data, - drawDisplay: (Data) -> List<Renderable>, + drawDisplay: (Data) -> List<Searchable>, ) : SkyHanniTracker<Data>(name, createNewSession, getStorage, drawDisplay) { companion object { @@ -60,9 +62,9 @@ class SkyHanniItemTracker<Data : ItemTrackerData>( } } - fun addPriceFromButton(lists: MutableList<Renderable>) { + fun addPriceFromButton(lists: MutableList<Searchable>) { if (isInventoryOpen()) { - lists.addSelector<ItemPriceSource>( + lists.addSearchableSelector<ItemPriceSource>( "", getName = { type -> type.sellName }, isCurrent = { it.ordinal == config.priceSource.ordinal }, // todo avoid ordinal @@ -77,7 +79,7 @@ class SkyHanniItemTracker<Data : ItemTrackerData>( fun drawItems( data: Data, filter: (NEUInternalName) -> Boolean, - lists: MutableList<Renderable>, + lists: MutableList<Searchable>, ): Double { var profit = 0.0 val items = mutableMapOf<NEUInternalName, Long>() @@ -117,8 +119,9 @@ class SkyHanniItemTracker<Data : ItemTrackerData>( val newDrop = itemProfit.lastTimeUpdated.passedSince() < 10.seconds && config.showRecentDrops val numberColor = if (newDrop) "§a§l" else "§7" + val name = cleanName.removeColor(keepFormatting = true).replace("§r", "") var displayName = if (hidden) { - "§8§m" + cleanName.removeColor(keepFormatting = true).replace("§r", "") + "§8§m$name" } else cleanName displayName = " $numberColor${displayAmount.addSeparators()}x $displayName§7: §6$priceFormat" @@ -149,10 +152,10 @@ class SkyHanniItemTracker<Data : ItemTrackerData>( }, ) else Renderable.string(displayName) - lists.add(renderable) + lists.add(renderable.toSearchable(name)) } if (hiddenItemTexts.size > 0) { - val text = Renderable.hoverTips(" §7${hiddenItemTexts.size} cheap items are hidden.", hiddenItemTexts) + val text = Renderable.hoverTips(" §7${hiddenItemTexts.size} cheap items are hidden.", hiddenItemTexts).toSearchable() lists.add(text) } @@ -190,7 +193,7 @@ class SkyHanniItemTracker<Data : ItemTrackerData>( } } - fun addTotalProfit(profit: Double, totalAmount: Long, action: String): Renderable { + fun addTotalProfit(profit: Double, totalAmount: Long, action: String): Searchable { val profitFormat = profit.toLong().addSeparators() val profitPrefix = if (profit < 0) "§c" else "§6" @@ -201,6 +204,6 @@ class SkyHanniItemTracker<Data : ItemTrackerData>( } else emptyList() val text = "§eTotal Profit: $profitPrefix$profitFormat coins" - return Renderable.hoverTips(text, tips) + return Renderable.hoverTips(text, tips).toSearchable() } } 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 9d77d4668..5b07c9906 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt @@ -13,6 +13,8 @@ import at.hannibal2.skyhanni.utils.NEUItems.getPrice import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.renderables.Renderable +import at.hannibal2.skyhanni.utils.renderables.Searchable +import at.hannibal2.skyhanni.utils.renderables.buildSearchBox import net.minecraft.client.Minecraft import net.minecraft.client.gui.inventory.GuiChest import net.minecraft.client.gui.inventory.GuiInventory @@ -22,8 +24,7 @@ open class SkyHanniTracker<Data : TrackerData>( val name: String, private val createNewSession: () -> Data, private val getStorage: (ProfileSpecificStorage) -> Data, - // TODO change to renderable - private val drawDisplay: (Data) -> List<Renderable>, + private val drawDisplay: (Data) -> List<Searchable>, ) { private var inventoryOpen = false @@ -83,9 +84,9 @@ open class SkyHanniTracker<Data : TrackerData>( if (dirty || TrackerManager.dirty) { display = getSharedTracker()?.let { - val get = it.get(getDisplayMode()) - val rawList = drawDisplay(get) - buildFinalDisplay(rawList) + val data = it.get(getDisplayMode()) + val searchables = drawDisplay(data) + buildFinalDisplay(searchables.buildSearchBox()) } ?: emptyList() dirty = false } @@ -97,13 +98,14 @@ open class SkyHanniTracker<Data : TrackerData>( dirty = true } - private fun buildFinalDisplay(rawList: List<Renderable>) = rawList.toMutableList().also { - if (it.isEmpty()) return@also + private fun buildFinalDisplay(searchBox: Renderable) = buildList { + add(searchBox) + if (isEmpty()) return@buildList if (inventoryOpen) { - it.add(1, buildDisplayModeView()) + add(buildDisplayModeView()) } if (inventoryOpen && getDisplayMode() == DisplayMode.SESSION) { - it.add(buildSessionResetButton()) + add(buildSessionResetButton()) } } |