aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils/tracker
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal002@users.noreply.github.com>2024-09-09 15:26:16 +0200
committerGitHub <noreply@github.com>2024-09-09 15:26:16 +0200
commit18da4a7c13d215fb6cd7969654986d9072dd24fa (patch)
tree493b5f4aed0e6511cac67cfdd7815d4eb7852b31 /src/main/java/at/hannibal2/skyhanni/utils/tracker
parente17e70b6933982ca417577f441928f77cbbf9ef1 (diff)
downloadskyhanni-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.kt23
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt20
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())
}
}