diff options
| author | Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> | 2024-09-07 19:59:58 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-07 19:59:58 +0200 |
| commit | 83d48c6aeee1656c5a6966839a1951e67fccbc53 (patch) | |
| tree | a2c94427ba09763f36cb495ea91ffc4111ab322b /src/main/java/at/hannibal2/skyhanni/features | |
| parent | 4663ebc4c9d5ef6ed890eced49d90dd8e3589fb5 (diff) | |
| download | skyhanni-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')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/gui/TabWidgetDisplay.kt | 79 |
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)) + } + } + } +} |
