summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/gui
diff options
context:
space:
mode:
authorThunderblade73 <85900443+Thunderblade73@users.noreply.github.com>2024-09-07 19:59:58 +0200
committerGitHub <noreply@github.com>2024-09-07 19:59:58 +0200
commit83d48c6aeee1656c5a6966839a1951e67fccbc53 (patch)
treea2c94427ba09763f36cb495ea91ffc4111ab322b /src/main/java/at/hannibal2/skyhanni/features/gui
parent4663ebc4c9d5ef6ed890eced49d90dd8e3589fb5 (diff)
downloadskyhanni-83d48c6aeee1656c5a6966839a1951e67fccbc53.tar.gz
skyhanni-83d48c6aeee1656c5a6966839a1951e67fccbc53.tar.bz2
skyhanni-83d48c6aeee1656c5a6966839a1951e67fccbc53.zip
Feature: Display Tab Widgets (#1276)
Co-authored-by: Cal <cwolfson58@gmail.com> Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/gui')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/gui/TabWidgetDisplay.kt79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/gui/TabWidgetDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/gui/TabWidgetDisplay.kt
new file mode 100644
index 000000000..2e598923d
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/gui/TabWidgetDisplay.kt
@@ -0,0 +1,79 @@
+package at.hannibal2.skyhanni.features.gui
+
+import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.config.core.config.Position
+import at.hannibal2.skyhanni.data.model.TabWidget
+import at.hannibal2.skyhanni.events.GuiRenderEvent
+import at.hannibal2.skyhanni.events.ProfileJoinEvent
+import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
+import at.hannibal2.skyhanni.test.command.ErrorManager
+import at.hannibal2.skyhanni.utils.LorenzUtils
+import at.hannibal2.skyhanni.utils.RenderUtils.renderStrings
+import at.hannibal2.skyhanni.utils.StringUtils.allLettersFirstUppercase
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+
+enum class TabWidgetDisplay(private val configName: String?, vararg val widgets: TabWidget) {
+ SOULFLOW(null, TabWidget.SOULFLOW),
+ COINS("Bank and Interest", TabWidget.BANK, TabWidget.INTEREST),
+ SB_LEVEL("Skyblock Level", TabWidget.SB_LEVEL),
+ PROFILE(null, TabWidget.PROFILE),
+ PLAYER_LIST("Players", TabWidget.PLAYER_LIST),
+ PET(null, TabWidget.PET),
+ PET_TRAINING("Pet Upgrade Info", TabWidget.PET_SITTER, TabWidget.PET_TRAINING),
+ STATS(null, TabWidget.STATS, TabWidget.DUNGEON_SKILLS_AND_STATS),
+ DUNGEON_TEAM("Dungeon Info about every person", TabWidget.DUNGEON_PARTY),
+ DUNGEON_PUZZLE("Dungeon Info about puzzles", TabWidget.DUNGEON_PUZZLE),
+ DUNGEON_OVERALL("Dungeon General Info (very long)", TabWidget.DUNGEON_STATS),
+ BESTIARY(null, TabWidget.BESTIARY),
+ DRAGON("Dragon Fight Info", TabWidget.DRAGON),
+ PROTECTOR("Protector State", TabWidget.PROTECTOR),
+ SHEN_RIFT("Shen's Auction inside the Rift", TabWidget.RIFT_SHEN),
+ MINION("Minion Info", TabWidget.MINION),
+ COLLECTION(null, TabWidget.COLLECTION),
+ TIMERS(null, TabWidget.TIMERS),
+ FIRE_SALE(null, TabWidget.FIRE_SALE),
+ RAIN("Park Rain", TabWidget.RAIN),
+ ;
+
+ val position get() = config.displayPositions[ordinal]
+
+ override fun toString(): String {
+ return configName ?: name.lowercase().allLettersFirstUppercase()
+ }
+
+ @SkyHanniModule
+ companion object {
+
+ private val config get() = SkyHanniMod.feature.gui.tabWidget
+
+ private fun isEnabled() = LorenzUtils.inSkyBlock && config.enabled
+
+ @SubscribeEvent
+ fun onRenderOverlay(event: GuiRenderEvent.GuiOverlayRenderEvent) {
+ if (!isEnabled()) return
+ if (config?.displayPositions == null) return
+ config.display.forEach { widget ->
+ widget.position.renderStrings(
+ widget.widgets.flatMap { it.lines },
+ posLabel = "Display Widget: ${widget.name}",
+ )
+ }
+ }
+
+ @SubscribeEvent
+ fun onJoin(event: ProfileJoinEvent) {
+ // Validation that the displayPositions in the config is correct
+ val sizeDiff = TabWidgetDisplay.entries.size - config.displayPositions.size
+ if (sizeDiff == 0) return
+ if (sizeDiff < 0) {
+ ErrorManager.skyHanniError(
+ "Invalid State of config.displayPositions",
+ "Display" to TabWidgetDisplay.entries,
+ "Positions" to config.displayPositions,
+ )
+ } else {
+ config.displayPositions.addAll(generateSequence { Position() }.take(sizeDiff))
+ }
+ }
+ }
+}