From 02c9ce15e053d5d0751c32ea3ef481c9eef7a904 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal002@users.noreply.github.com> Date: Sat, 7 Sep 2024 07:05:45 +0200 Subject: Feature: /shedittracker (#2448) Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- .../skyhanni/utils/tracker/ItemTrackerData.kt | 11 +++++-- .../skyhanni/utils/tracker/SkyHanniItemTracker.kt | 38 +++++++++++++++------- 2 files changed, 34 insertions(+), 15 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/utils/tracker') diff --git a/src/main/java/at/hannibal2/skyhanni/utils/tracker/ItemTrackerData.kt b/src/main/java/at/hannibal2/skyhanni/utils/tracker/ItemTrackerData.kt index 4b871377b..bce63e2d1 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/tracker/ItemTrackerData.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/tracker/ItemTrackerData.kt @@ -24,12 +24,17 @@ abstract class ItemTrackerData : TrackerData() { resetItems() } - fun addItem(internalName: NEUInternalName, stackSize: Int) { + fun addItem(internalName: NEUInternalName, amount: Int, command: Boolean) { val item = items.getOrPut(internalName) { TrackedItem() } - item.timesGained++ - item.totalAmount += stackSize + if (!command) { + item.timesGained++ + } + item.totalAmount += amount item.lastTimeUpdated = SimpleTimeMark.now() + if (command && item.totalAmount <= 0) { + items.remove(internalName) + } } @Expose 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 684a7eb00..e7af81cea 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniItemTracker.kt @@ -3,11 +3,13 @@ package at.hannibal2.skyhanni.utils.tracker import at.hannibal2.skyhanni.SkyHanniMod 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.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 @@ -26,23 +28,29 @@ class SkyHanniItemTracker( ) : SkyHanniTracker(name, createNewSession, getStorage, drawDisplay) { companion object { - val SKYBLOCK_COIN = NEUInternalName.SKYBLOCK_COIN } - fun addCoins(coins: Int) { - addItem(SKYBLOCK_COIN, coins) - } - - fun addItem(internalName: NEUInternalName, amount: Int) { + fun addItem(internalName: NEUInternalName, amount: Int, command: Boolean) { modify { - it.addItem(internalName, amount) + it.addItem(internalName, amount, command) } - getSharedTracker()?.let { - val hidden = it.get(DisplayMode.TOTAL).items[internalName]!!.hidden - it.get(DisplayMode.SESSION).items[internalName]!!.hidden = hidden + getSharedTracker()?.let { sharedData -> + sharedData.get(DisplayMode.TOTAL).items[internalName]?.let { data -> + sharedData.get(DisplayMode.SESSION).items[internalName]!!.hidden = data.hidden + } } + if (command) { + TrackerManager.commandEditTrackerSuccess = true + val displayName = internalName.itemName + if (amount > 0) { + ChatUtils.chat("Manually added to $name: §r$displayName §7(${amount}x§7)") + } else { + ChatUtils.chat("Manually removed from $name: §r$displayName §7(${-amount}x§7)") + } + return + } // TODO move the function to common val (itemName, price) = SlayerAPI.getItemNameAndPrice(internalName, amount) if (config.warnings.chat && price >= config.warnings.minimumChat) { @@ -62,7 +70,7 @@ class SkyHanniItemTracker( onChange = { config.priceSource = ItemPriceSource.entries[it.ordinal] // todo avoid ordinal update() - } + }, ) } } @@ -140,7 +148,7 @@ class SkyHanniItemTracker( } update() - } + }, ) else Renderable.string(displayName) lists.addAsSingletonList(renderable) @@ -172,6 +180,12 @@ class SkyHanniItemTracker( } add("§eClick to " + (if (hidden) "show" else "hide") + "!") add("§eControl + Click to remove this item!") + + add("") + add("§7Use §e/shedittracker ${internalName.readableInternalName} ") + add("§7to edit the number.") + add("§7Use negative numbers to remove items.") + if (SkyHanniMod.feature.dev.debug.enabled) { add("") add("§7${internalName}") -- cgit