Skip to content

Commit

Permalink
some formatting changes and optimizations
Browse files Browse the repository at this point in the history
  • Loading branch information
ItsEmpa committed Oct 11, 2024
1 parent 8269be3 commit 133b009
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import at.hannibal2.skyhanni.features.commands.PartyChatCommands
import at.hannibal2.skyhanni.features.commands.PartyCommands
import at.hannibal2.skyhanni.features.commands.WikiManager
import at.hannibal2.skyhanni.features.dungeon.CroesusChestTracker
import at.hannibal2.skyhanni.features.dungeon.floor7.TerminalInfo
import at.hannibal2.skyhanni.features.event.diana.AllBurrowsList
import at.hannibal2.skyhanni.features.event.diana.BurrowWarpHelper
import at.hannibal2.skyhanni.features.event.diana.DianaProfitTracker
Expand Down Expand Up @@ -501,6 +502,10 @@ object Commands {
"shdebugscoreboard",
"Monitors the scoreboard changes: Prints the raw scoreboard lines in the console after each update, with time since last update.",
) { ScoreboardData.toggleMonitor() }
registerCommand(
"shresetterminal",
"Resets terminal highlights in F7.",
) { TerminalInfo.resetTerminals() }
}

@Suppress("LongMethod")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ public class DungeonConfig {
public boolean shadowAssassinJumpNotifier = false;

@Expose
@ConfigOption(name = "Terminal Waypoints", desc = "Displays Waypoints in the F7/M7 Goldor Phase")
@ConfigOption(name = "Terminal Waypoints", desc = "Displays Waypoints in the F7/M7 Goldor Phase.")
@ConfigEditorBoolean
@FeatureToggle
public boolean terminalWaypoints = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ object DungeonBossAPI {
F7_GOLDOR_5,
F7_NECRON,
M7_WITHER_KING,
;

fun isCurrent(): Boolean = bossPhase == this
}

private val patternGroup = RepoPattern.group("dungeon.boss.message")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,46 +3,50 @@ package at.hannibal2.skyhanni.features.dungeon.floor7
import at.hannibal2.skyhanni.features.dungeon.DungeonBossAPI
import at.hannibal2.skyhanni.utils.LorenzVec

enum class TerminalInfo(val location: LorenzVec, val phase: DungeonBossAPI.DungeonBossPhase, val text: String, var highlight: Boolean = true) {
P1_TERMINAL1(LorenzVec(111, 113, 73), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_1, "Terminal"),
P1_TERMINAL2(LorenzVec(111, 119, 79), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_1, "Terminal"),
P1_TERMINAL3(LorenzVec(89, 112, 92), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_1, "Terminal"),
P1_TERMINAL4(LorenzVec(89, 122, 101), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_1, "Terminal"),
P1_LEVER1(LorenzVec(106, 124, 113), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_1, "Lever"),
P1_LEVER2(LorenzVec(94, 124, 113), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_1, "Lever"),
P1_DEVICE(LorenzVec(110, 119, 93), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_1, "Device"),

P2_TERMINAL1(LorenzVec(68, 109, 121), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_2, "Terminal"),
P2_TERMINAL2(LorenzVec(59, 120, 122), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_2, "Terminal"),
P2_TERMINAL3(LorenzVec(47, 109, 121), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_2, "Terminal"),
P2_TERMINAL4(LorenzVec(40, 124, 122), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_2, "Terminal"),
P2_TERMINAL5(LorenzVec(39, 108, 143), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_2, "Terminal"),
P2_LEVER1(LorenzVec(23, 132, 138), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_2, "Lever"),
P2_LEVER2(LorenzVec(27, 124, 127), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_2, "Lever"),
P2_DEVICE(LorenzVec(60, 131, 142), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_2, "Device"),

P3_TERMINAL1(LorenzVec(-3, 109, 112), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_3, "Terminal"),
P3_TERMINAL2(LorenzVec(-3, 119, 93), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_3, "Terminal"),
P3_TERMINAL3(LorenzVec(19, 123, 93), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_3, "Terminal"),
P3_TERMINAL4(LorenzVec(-3, 109, 77), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_3, "Terminal"),
P3_LEVER1(LorenzVec(14, 122, 55), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_3, "Lever"),
P3_LEVER2(LorenzVec(2, 122, 55), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_3, "Lever"),
P3_DEVICE(LorenzVec(-2, 119, 77), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_3, "Device"),

P4_TERMINAL1(LorenzVec(41, 109, 29), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_4, "Terminal"),
P4_TERMINAL2(LorenzVec(44, 121, 29), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_4, "Terminal"),
P4_TERMINAL3(LorenzVec(67, 109, 29), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_4, "Terminal"),
P4_TERMINAL4(LorenzVec(72, 115, 48), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_4, "Terminal"),
P4_LEVER1(LorenzVec(84, 121, 34), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_4, "Lever"),
P4_LEVER2(LorenzVec(86, 128, 46), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_4, "Lever"),
P4_DEVICE(LorenzVec(63, 126, 35), DungeonBossAPI.DungeonBossPhase.F7_GOLDOR_4, "Device"),
private typealias BossPhase = DungeonBossAPI.DungeonBossPhase

enum class TerminalInfo(val location: LorenzVec, val phase: BossPhase, val text: String) {
P1_TERMINAL_1(LorenzVec(111, 113, 73), BossPhase.F7_GOLDOR_1, "Terminal"),
P1_TERMINAL_2(LorenzVec(111, 119, 79), BossPhase.F7_GOLDOR_1, "Terminal"),
P1_TERMINAL_3(LorenzVec(89, 112, 92), BossPhase.F7_GOLDOR_1, "Terminal"),
P1_TERMINAL_4(LorenzVec(89, 122, 101), BossPhase.F7_GOLDOR_1, "Terminal"),
P1_LEVER_1(LorenzVec(106, 124, 113), BossPhase.F7_GOLDOR_1, "Lever"),
P1_LEVER_2(LorenzVec(94, 124, 113), BossPhase.F7_GOLDOR_1, "Lever"),
P1_DEVICE(LorenzVec(110, 119, 93), BossPhase.F7_GOLDOR_1, "Device"),

P2_TERMINAL_1(LorenzVec(68, 109, 121), BossPhase.F7_GOLDOR_2, "Terminal"),
P2_TERMINAL_2(LorenzVec(59, 120, 122), BossPhase.F7_GOLDOR_2, "Terminal"),
P2_TERMINAL_3(LorenzVec(47, 109, 121), BossPhase.F7_GOLDOR_2, "Terminal"),
P2_TERMINAL_4(LorenzVec(40, 124, 122), BossPhase.F7_GOLDOR_2, "Terminal"),
P2_TERMINAL_5(LorenzVec(39, 108, 143), BossPhase.F7_GOLDOR_2, "Terminal"),
P2_LEVER_1(LorenzVec(23, 132, 138), BossPhase.F7_GOLDOR_2, "Lever"),
P2_LEVER_2(LorenzVec(27, 124, 127), BossPhase.F7_GOLDOR_2, "Lever"),
P2_DEVICE(LorenzVec(60, 131, 142), BossPhase.F7_GOLDOR_2, "Device"),

P3_TERMINAL_1(LorenzVec(-3, 109, 112), BossPhase.F7_GOLDOR_3, "Terminal"),
P3_TERMINAL_2(LorenzVec(-3, 119, 93), BossPhase.F7_GOLDOR_3, "Terminal"),
P3_TERMINAL_3(LorenzVec(19, 123, 93), BossPhase.F7_GOLDOR_3, "Terminal"),
P3_TERMINAL_4(LorenzVec(-3, 109, 77), BossPhase.F7_GOLDOR_3, "Terminal"),
P3_LEVER_1(LorenzVec(14, 122, 55), BossPhase.F7_GOLDOR_3, "Lever"),
P3_LEVER_2(LorenzVec(2, 122, 55), BossPhase.F7_GOLDOR_3, "Lever"),
P3_DEVICE(LorenzVec(-2, 119, 77), BossPhase.F7_GOLDOR_3, "Device"),

P4_TERMINAL_1(LorenzVec(41, 109, 29), BossPhase.F7_GOLDOR_4, "Terminal"),
P4_TERMINAL_2(LorenzVec(44, 121, 29), BossPhase.F7_GOLDOR_4, "Terminal"),
P4_TERMINAL_3(LorenzVec(67, 109, 29), BossPhase.F7_GOLDOR_4, "Terminal"),
P4_TERMINAL_4(LorenzVec(72, 115, 48), BossPhase.F7_GOLDOR_4, "Terminal"),
P4_LEVER_1(LorenzVec(84, 121, 34), BossPhase.F7_GOLDOR_4, "Lever"),
P4_LEVER_2(LorenzVec(86, 128, 46), BossPhase.F7_GOLDOR_4, "Lever"),
P4_DEVICE(LorenzVec(63, 126, 35), BossPhase.F7_GOLDOR_4, "Device"),
;

var highlight: Boolean = true

companion object {
fun resetTerminals() = entries.forEach { it.highlight = true }

fun getClosestTerminal(input: LorenzVec): TerminalInfo? {
return entries.filter { it.highlight }.minByOrNull { it.location.distance(input) }
return entries.filter { it.highlight && it.phase.isCurrent() }.minByOrNull { it.location.distance(input) }
}
}
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
package at.hannibal2.skyhanni.features.dungeon.floor7

import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.events.DungeonStartEvent
import at.hannibal2.skyhanni.events.LorenzChatEvent
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.features.dungeon.DungeonAPI
import at.hannibal2.skyhanni.features.dungeon.DungeonAPI.dungeonFloor
import at.hannibal2.skyhanni.features.dungeon.DungeonBossAPI
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.EntityUtils
import at.hannibal2.skyhanni.utils.LorenzColor
import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
import at.hannibal2.skyhanni.utils.RenderUtils.drawDynamicText
import at.hannibal2.skyhanni.utils.RenderUtils.drawWaypointFilled
import at.hannibal2.skyhanni.utils.toLorenzVec
import net.minecraft.entity.player.EntityPlayer
import at.hannibal2.skyhanni.utils.getLorenzVec
import net.minecraft.entity.player.EntityPlayerMP
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent

@SkyHanniModule
Expand All @@ -23,32 +22,33 @@ object TerminalWaypoints {
private val config get() = SkyHanniMod.feature.dungeon

@SubscribeEvent
fun onWorld(event: LorenzRenderWorldEvent) {
fun onRenderWorld(event: LorenzRenderWorldEvent) {
if (!isEnabled()) return

TerminalInfo.entries.filter { it.highlight && DungeonBossAPI.bossPhase == it.phase }.forEach {
event.drawWaypointFilled(it.location, LorenzColor.GREEN.toColor(), seeThroughBlocks = true)
event.drawDynamicText(it.location, it.text, 1.0)
for (term in TerminalInfo.entries) {
if (!term.highlight || !term.phase.isCurrent()) continue
event.drawWaypointFilled(term.location, LorenzColor.GREEN.toColor(), seeThroughBlocks = true)
event.drawDynamicText(term.location, term.text, 1.0)
}
}

@SubscribeEvent
fun dungeonStart(event: DungeonStartEvent) {
fun onWorldChange(event: LorenzWorldChangeEvent) {
TerminalInfo.resetTerminals()
}

@SubscribeEvent
fun onChat(event: LorenzChatEvent) {
if (!inBoss()) return
DungeonBossAPI.goldorTerminalPattern.matchMatcher(event.message) {
val playerName = group("playerName")
val playerEntity =
EntityUtils.getAllEntities().filter { it is EntityPlayer }.firstOrNull { it.name == playerName }
?: return
val terminal = TerminalInfo.getClosestTerminal(playerEntity.position.toLorenzVec())
val playerEntity = EntityUtils.getEntities<EntityPlayerMP>().find { it.name == playerName } ?: return
val terminal = TerminalInfo.getClosestTerminal(playerEntity.getLorenzVec())
terminal?.highlight = false
}
}

private fun isEnabled() =
DungeonAPI.inBossRoom && (dungeonFloor == "F7" || dungeonFloor == "M7") && config.terminalWaypoints
private fun inBoss() = DungeonAPI.inBossRoom && DungeonAPI.isOneOf("F7", "M7")

private fun isEnabled() = inBoss() && config.terminalWaypoints
}

0 comments on commit 133b009

Please sign in to comment.