diff options
author | J10a1n15 <45315647+j10a1n15@users.noreply.github.com> | 2024-04-07 10:30:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-07 10:30:03 +0200 |
commit | 31bfd8a1d3437f4bdbefa7bcba75143e37c4ac90 (patch) | |
tree | cc443ddafd6ed278991ae6e4814debff9734a704 /src/main/java/at/hannibal2/skyhanni/data | |
parent | 290ec20019977dfb1dbd3a8e6c152693c3337918 (diff) | |
download | skyhanni-31bfd8a1d3437f4bdbefa7bcba75143e37c4ac90.tar.gz skyhanni-31bfd8a1d3437f4bdbefa7bcba75143e37c4ac90.tar.bz2 skyhanni-31bfd8a1d3437f4bdbefa7bcba75143e37c4ac90.zip |
Backend: Mayor Overwrite (#1302)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/data')
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt | 29 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/data/Mayors.kt | 54 |
2 files changed, 62 insertions, 21 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt b/src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt index 2a5fcb0c9..faddae346 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/MayorAPI.kt @@ -2,12 +2,15 @@ package at.hannibal2.skyhanni.data import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.config.ConfigManager -import at.hannibal2.skyhanni.data.Mayor.Companion.setMayorWithActivePerks +import at.hannibal2.skyhanni.data.Mayor.Companion.setAssumeMayor +import at.hannibal2.skyhanni.data.Mayor.Companion.setAssumeMayorJson import at.hannibal2.skyhanni.data.jsonobjects.local.MayorJson +import at.hannibal2.skyhanni.events.ConfigLoadEvent import at.hannibal2.skyhanni.events.DebugDataCollectEvent import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.utils.APIUtil import at.hannibal2.skyhanni.utils.CollectionUtils.put +import at.hannibal2.skyhanni.utils.ConditionalUtils.onToggle import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.SimpleTimeMark import at.hannibal2.skyhanni.utils.SimpleTimeMark.Companion.asTimeMark @@ -43,15 +46,13 @@ object MayorAPI { /** * @param input: The name of the mayor - * @return: The neu color of the mayor; If no mayor was found, it will return "§cUnknown: §7" + * @return: The neu color of the mayor; If no mayor was found, it will return "§c" */ - fun mayorNameToColorCode(input: String): String { - return Mayor.getMayorFromName(input).color - } + fun mayorNameToColorCode(input: String): String = Mayor.getMayorFromName(input)?.color ?: "§c" /** * @param input: The name of the mayor - * @return: The neu color of the mayor + the name of the mayor; If no mayor was found, it will return "§cUnknown: §7[input]" + * @return: The neu color of the mayor + the name of the mayor; If no mayor was found, it will return "§c[input]" */ fun mayorNameWithColorCode(input: String) = mayorNameToColorCode(input) + input @@ -88,7 +89,7 @@ object MayorAPI { // Check if it is still the mayor from the old SkyBlock year currentMayor = candidates[nextMayorTime.toSkyBlockTime().year - 1]?.let { // TODO: Once Jerry is active, add the sub mayor perks in here - setMayorWithActivePerks(it.name, it.perks) + setAssumeMayorJson(it.name, it.perks) } } @@ -116,6 +117,20 @@ object MayorAPI { private fun List<MayorJson.Candidate>.bestCandidate() = maxBy { it.votes } @SubscribeEvent + fun onConfigReload(event: ConfigLoadEvent) { + SkyHanniMod.feature.dev.debug.assumeMayor.onToggle { + val mayor = SkyHanniMod.feature.dev.debug.assumeMayor.get() + + if (mayor == Mayor.DISABLED) { + checkCurrentMayor() + } else { + mayor.setAssumeMayor(mayor.perks.toList()) + currentMayor = mayor + } + } + } + + @SubscribeEvent fun onDebugDataCollect(event: DebugDataCollectEvent) { event.title("Mayor") event.addIrrelevant { diff --git a/src/main/java/at/hannibal2/skyhanni/data/Mayors.kt b/src/main/java/at/hannibal2/skyhanni/data/Mayors.kt index b956da0fd..f431f7928 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/Mayors.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/Mayors.kt @@ -2,19 +2,28 @@ package at.hannibal2.skyhanni.data import at.hannibal2.skyhanni.data.MayorAPI.foxyExtraEventPattern import at.hannibal2.skyhanni.data.jsonobjects.local.MayorJson +import at.hannibal2.skyhanni.test.command.ErrorManager import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher enum class Mayor( val mayorName: String, val color: String, - private vararg val perks: Perk, + vararg val perks: Perk, ) { AATROX("Aatrox", "§3", Perk.SLASHED_PRICING, Perk.SLAYER_XP_BUFF, Perk.PATHFINDER), COLE("Cole", "§e", Perk.PROSPECTION, Perk.MINING_XP_BUFF, Perk.MINING_FIESTA), DIANA("Diana", "§2", Perk.LUCKY, Perk.MYTHOLOGICAL_RITUAL, Perk.PET_XP_BUFF), DIAZ("Diaz", "§6", Perk.BARRIER_STREET, Perk.SHOPPING_SPREE), FINNEGAN("Finnegan", "§c", Perk.FARMING_SIMULATOR, Perk.PELT_POCALYPSE, Perk.GOATED), - FOXY("Foxy", "§d", Perk.SWEET_TOOTH, Perk.BENEVOLENCE, Perk.EXTRA_EVENT_MINING, Perk.EXTRA_EVENT_FISHING, Perk.EXTRA_EVENT_SPOOKY), + FOXY( + "Foxy", + "§d", + Perk.SWEET_TOOTH, + Perk.BENEVOLENCE, + Perk.EXTRA_EVENT_MINING, + Perk.EXTRA_EVENT_FISHING, + Perk.EXTRA_EVENT_SPOOKY + ), MARINA("Marina", "§b", Perk.FISHING_XP_BUFF, Perk.LUCK_OF_THE_SEA, Perk.FISHING_FESTIVAL), PAUL("Paul", "§c", Perk.MARAUDER, Perk.EZPZ, Perk.BENEDICTION), @@ -22,28 +31,46 @@ enum class Mayor( JERRY("Jerry", "§d", Perk.PERKPOCALYPSE, Perk.STATSPOCALYPSE, Perk.JERRYPOCALYPSE), DERPY("Derpy", "§d", Perk.TURBO_MINIONS, Perk.AH_CLOSED, Perk.DOUBLE_MOBS_HP, Perk.MOAR_SKILLZ), - UNKNOWN("Unknown", "§c"), + DISABLED("§cDisabled", "§7"), ; val activePerks: MutableList<Perk> = mutableListOf() + override fun toString() = mayorName + companion object { - fun getMayorFromName(name: String) = entries.firstOrNull { it.mayorName == name } ?: UNKNOWN - fun setMayorWithActivePerks(name: String, perks: ArrayList<MayorJson.Perk>): Mayor { - val mayor = getMayorFromName(name) + fun getMayorFromName(name: String): Mayor? = entries.firstOrNull { it.mayorName == name } - mayor.perks.forEach { it.isActive = false } - mayor.activePerks.clear() - perks.mapNotNull { perk -> Perk.entries.firstOrNull { it.perkName == perk.renameIfFoxyExtraEventPerkFound() } } - .filter { mayor.perks.contains(it) }.forEach { - it.isActive = true - mayor.activePerks.add(it) - } + fun setAssumeMayorJson(name: String, perksJson: ArrayList<MayorJson.Perk>): Mayor? { + val mayor = getMayorFromName(name) + if (mayor == null) { + ErrorManager.logErrorStateWithData( + "Unknown mayor found", + "mayor name not in Mayor enum", + "name" to name, + "perksJson" to perksJson, + betaOnly = true + ) + return null + } + val perks = perksJson.mapNotNull { perk -> + Perk.entries.firstOrNull { it.perkName == perk.renameIfFoxyExtraEventPerkFound() } + } + mayor.setAssumeMayor(perks) return mayor } + fun Mayor.setAssumeMayor(perks: List<Perk>) { + perks.forEach { it.isActive = false } + activePerks.clear() + perks.filter { perks.contains(it) }.forEach { + it.isActive = true + activePerks.add(it) + } + } + private fun MayorJson.Perk.renameIfFoxyExtraEventPerkFound(): String? { val foxyExtraEventPairs = mapOf( "Spooky Festival" to "Extra Event (Spooky)", @@ -101,7 +128,6 @@ enum class Perk(val perkName: String) { EZPZ("EZPZ"), BENEDICTION("Benediction"), - // Scorpius BRIBE("Bribe"), DARKER_AUCTIONS("Darker Auctions"), |