Skip to content

Commit

Permalink
Feature: Highlight rabbits with requirement (#1874)
Browse files Browse the repository at this point in the history
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
  • Loading branch information
superhize and hannibal002 authored May 30, 2024
1 parent 5d89d56 commit a6133f8
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,20 @@ public class ChocolateFactoryConfig {
@FeatureToggle
public boolean hoppityMenuShortcut = true;

@Expose
@ConfigOption(name = "Highlight Requirement Rabbits", desc = "Highlight rabbits that have requirements.\n" +
"§cRed: Requirement not met.\n" +
"§aGreen: Requirement met.")
@ConfigEditorBoolean
@FeatureToggle
public boolean highlightRabbitsWithRequirement = false;

@Expose
@ConfigOption(name = "Only Requirement Not Met", desc = "Only highlight the rabbits you don't have the requirement for.")
@ConfigEditorBoolean
@FeatureToggle
public boolean onlyHighlightRequirementNotMet = true;

@Expose
@ConfigOption(name = "Chocolate Shop Price", desc = "")
@Accordion
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
package at.hannibal2.skyhanni.features.event.hoppity

import at.hannibal2.skyhanni.data.ProfileStorageData
import at.hannibal2.skyhanni.events.GuiContainerEvent
import at.hannibal2.skyhanni.events.GuiRenderEvent
import at.hannibal2.skyhanni.events.InventoryCloseEvent
import at.hannibal2.skyhanni.events.InventoryFullyOpenedEvent
import at.hannibal2.skyhanni.features.inventory.chocolatefactory.ChocolateFactoryAPI
import at.hannibal2.skyhanni.utils.ChatUtils
import at.hannibal2.skyhanni.utils.DisplayTableEntry
import at.hannibal2.skyhanni.utils.InventoryUtils
import at.hannibal2.skyhanni.utils.ItemUtils.getLore
import at.hannibal2.skyhanni.utils.LorenzColor
import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.round
import at.hannibal2.skyhanni.utils.NEUInternalName
import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.NumberUtil.formatInt
import at.hannibal2.skyhanni.utils.RegexUtils.anyMatches
import at.hannibal2.skyhanni.utils.RegexUtils.find
import at.hannibal2.skyhanni.utils.RegexUtils.matchFirst
import at.hannibal2.skyhanni.utils.RegexUtils.matches
import at.hannibal2.skyhanni.utils.RenderUtils.highlight
import at.hannibal2.skyhanni.utils.RenderUtils.renderRenderables
import at.hannibal2.skyhanni.utils.StringUtils.removeColor
import at.hannibal2.skyhanni.utils.renderables.Renderable
Expand Down Expand Up @@ -49,6 +54,22 @@ object HoppityCollectionStats {
"rabbits.found",
"§.§l§m[ §a-z]+§r §.(?<current>[0-9]+)§./§.(?<total>[0-9]+)"
)
/**
* REGEX-TEST: §a✔ §7Requirement
*/
private val requirementMet by patternGroup.pattern(
"rabbit.requirement.met",
"§a✔ §7Requirement"
)
/**
* REGEX-TEST: §c✖ §7Requirement §e0§7/§a15
* REGEX-TEST: §c✖ §7Requirement §e6§7/§a20
* REGEX-TEST: §c✖ §7Requirement §e651§7/§a1,000
*/
private val requirementNotMet by patternGroup.pattern(
"rabbit.requirement.notmet",
"§c✖ §7Requirement.*",
)

private var display = emptyList<Renderable>()
private val loggedRabbits
Expand Down Expand Up @@ -82,6 +103,21 @@ object HoppityCollectionStats {
)
}

// TODO cache with inventory update event
@SubscribeEvent
fun onBackgroundDrawn(event: GuiContainerEvent.BackgroundDrawnEvent) {
if (!config.highlightRabbitsWithRequirement) return
if (!inInventory) return

for (slot in InventoryUtils.getItemsInOpenChest()) {
val lore = slot.stack.getLore()
if (lore.any { requirementMet.find(it) } && !config.onlyHighlightRequirementNotMet)
slot highlight LorenzColor.GREEN
if (lore.any { requirementNotMet.find(it) })
slot highlight LorenzColor.RED
}
}

private fun buildDisplay(event: InventoryFullyOpenedEvent): MutableList<Renderable> {
logRabbits(event)

Expand Down

0 comments on commit a6133f8

Please sign in to comment.