aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/data
diff options
context:
space:
mode:
authorJ10a1n15 <45315647+j10a1n15@users.noreply.github.com>2024-04-07 10:30:03 +0200
committerGitHub <noreply@github.com>2024-04-07 10:30:03 +0200
commit31bfd8a1d3437f4bdbefa7bcba75143e37c4ac90 (patch)
treecc443ddafd6ed278991ae6e4814debff9734a704 /src/main/java/at/hannibal2/skyhanni/data
parent290ec20019977dfb1dbd3a8e6c152693c3337918 (diff)
downloadskyhanni-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.kt29
-rw-r--r--src/main/java/at/hannibal2/skyhanni/data/Mayors.kt54
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"),