summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal002@users.noreply.github.com>2023-11-22 14:26:49 +0100
committerGitHub <noreply@github.com>2023-11-22 14:26:49 +0100
commitdd2a77f37504f81e09806e1c277451957ea455ac (patch)
tree9453880145ce14e14ccc2a9adcb09f7fbcf6b332 /src/main/java/at/hannibal2/skyhanni/utils
parentcebe991e0f997035e9e0be0f49fd460be20c5a20 (diff)
downloadskyhanni-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')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt11
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/FishingProfitItemsJson.java12
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/tracker/SkyHanniTracker.kt39
3 files changed, 54 insertions, 8 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt
index dd114d8fd..d5365703a 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt
@@ -36,14 +36,18 @@ object StringUtils {
return first + lowercase.substring(1)
}
- fun String.removeColor(): String {
+ private val formattingChars by lazy { "kmolnr".toCharArray() + "kmolnr".uppercase().toCharArray() }
+
+ fun String.removeColor(keepFormatting: Boolean = false): String {
val builder = StringBuilder(this.length)
var counter = 0
while (counter < this.length) {
if (this[counter] == '§') {
- counter += 2
- continue
+ if (!keepFormatting || this[counter + 1] !in formattingChars) {
+ counter += 2
+ continue
+ }
}
builder.append(this[counter])
counter++
@@ -132,7 +136,6 @@ object StringUtils {
}
}
-
fun String.removeWordsAtEnd(i: Int) = split(" ").dropLast(i).joinToString(" ")
fun String.splitLines(width: Int): String {
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/FishingProfitItemsJson.java b/src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/FishingProfitItemsJson.java
new file mode 100644
index 000000000..d17fd7d30
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/utils/jsonobjects/FishingProfitItemsJson.java
@@ -0,0 +1,12 @@
+package at.hannibal2.skyhanni.utils.jsonobjects;
+
+import at.hannibal2.skyhanni.utils.NEUInternalName;
+import com.google.gson.annotations.Expose;
+
+import java.util.List;
+import java.util.Map;
+
+public class FishingProfitItemsJson {
+ @Expose
+ public Map<String, List<NEUInternalName>> categories;
+}
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
+ }
}