diff options
Diffstat (limited to 'src')
5 files changed, 135 insertions, 92 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java index 72987d54..84eedd98 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java @@ -22,11 +22,6 @@ package io.github.moulberry.notenoughupdates.miscgui.minionhelper; import io.github.moulberry.notenoughupdates.NotEnoughUpdates; import io.github.moulberry.notenoughupdates.miscgui.minionhelper.loaders.MinionHelperApiLoader; import io.github.moulberry.notenoughupdates.miscgui.minionhelper.loaders.MinionHelperRepoLoader; -import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.CollectionRequirement; -import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.CustomRequirement; -import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.MinionRequirement; -import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.ReputationRequirement; -import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.SlayerRequirement; import io.github.moulberry.notenoughupdates.util.Utils; import net.minecraft.client.Minecraft; import net.minecraft.inventory.Container; @@ -34,7 +29,6 @@ import net.minecraft.inventory.ContainerChest; import net.minecraftforge.common.MinecraftForge; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -46,6 +40,7 @@ public class MinionHelperManager { private boolean shouldNotifyNoCollectionApi = false; private final MinionHelperPriceCalculation priceCalculation = new MinionHelperPriceCalculation(this); + private final MinionHelperRequirementsManager requirementsManager = new MinionHelperRequirementsManager(this); public static MinionHelperManager getInstance() { if (instance == null) { @@ -105,76 +100,6 @@ public class MinionHelperManager { return minions; } - public List<MinionRequirement> getRequirements(Minion minion) { - if (!minion.getRequirements().isEmpty()) { - return minion.getRequirements(); - } - - Minion parent = minion.getParent(); - if (parent != null) { - return getRequirements(parent); - } - - return Collections.emptyList(); - } - - public boolean meetAllRequirements(Minion minion) { - List<MinionRequirement> list = getRequirements(minion); - for (MinionRequirement requirement : list) { - if (!meetRequirement(minion, requirement)) { - return false; - } - } - - return true; - } - - public boolean meetRequirement(Minion minion, MinionRequirement requirement) { - if (apiData == null) return false; - - if (requirement instanceof CollectionRequirement) { - if (apiData.isCollectionApiDisabled()) return true; - - CollectionRequirement collectionRequirement = (CollectionRequirement) requirement; - String collection = collectionRequirement.getCollection(); - String internalName = formatInternalName(collection); - - int need = collectionRequirement.getLevel(); - Map<String, Integer> highestCollectionTier = apiData.getHighestCollectionTier(); - if (highestCollectionTier.containsKey(internalName)) { - int has = highestCollectionTier.get(internalName); - - return has >= need; - } - - } else if (requirement instanceof SlayerRequirement) { - SlayerRequirement slayerRequirement = (SlayerRequirement) requirement; - String slayer = slayerRequirement.getSlayer(); - int need = slayerRequirement.getLevel(); - Map<String, Integer> slayerTiers = apiData.getSlayerTiers(); - if (slayerTiers.containsKey(slayer)) { - return slayerTiers.get(slayer) >= need; - } - - } else if (requirement instanceof ReputationRequirement) { - ReputationRequirement reputationRequirement = (ReputationRequirement) requirement; - int need = reputationRequirement.getReputation(); - String reputationType = reputationRequirement.getReputationType(); - if (reputationType.equals("BARBARIAN")) { - return apiData.getBarbariansReputation() >= need; - } else if (reputationType.equals("MAGE")) { - return apiData.getMagesReputation() >= need; - } else { - Utils.addChatMessage("§c[NEU] Minion Helper: Unknown reputation type: '" + reputationType + "'"); - return false; - } - } else if (requirement instanceof CustomRequirement) { - return minion.isCrafted(); - } - - return false; - } - public String formatInternalName(String text) { return text.toUpperCase().replace(" ", "_"); } @@ -183,12 +108,6 @@ public class MinionHelperManager { this.apiData = apiData; } - public void reloadRequirements() { - for (Minion minion : minions.values()) { - minion.setMeetRequirements(meetAllRequirements(minion)); - } - } - public boolean isCollectionApiDisabled() { return apiData != null && apiData.isCollectionApiDisabled(); } @@ -259,7 +178,17 @@ public class MinionHelperManager { MinionHelperApiLoader.getInstance().onProfileSwitch(); } - public void reloadCraftedMinions() { + public MinionHelperPriceCalculation getPriceCalculation() { + return priceCalculation; + } + + public ApiData getApiData() { + return apiData; + } + + public void reloadData() { + requirementsManager.reloadRequirements(); + if (apiData != null) { for (String minion : apiData.getCraftedMinions()) { getMinionById(minion).setCrafted(true); @@ -267,7 +196,7 @@ public class MinionHelperManager { } } - public MinionHelperPriceCalculation getPriceCalculation() { - return priceCalculation; + public MinionHelperRequirementsManager getRequirementsManager() { + return requirementsManager; } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperOverlay.java index a9a54d10..c521ab40 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperOverlay.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperOverlay.java @@ -192,11 +192,11 @@ public class MinionHelperOverlay { lastHovered = minion; String displayName = minion.getDisplayName(); lines.add("§9" + displayName + " " + minion.getTier()); - List<MinionRequirement> requirements = manager.getRequirements(minionSource.getMinion()); + List<MinionRequirement> requirements = manager.getRequirementsManager().getRequirements(minionSource.getMinion()); if (!requirements.isEmpty()) { for (MinionRequirement requirement : requirements) { //TODO maybe change the §7 color - String color = manager.meetRequirement(minion, requirement) ? "§a" : "§7"; + String color = manager.getRequirementsManager().meetRequirement(minion, requirement) ? "§a" : "§7"; if (requirement instanceof CollectionRequirement && manager.isCollectionApiDisabled()) { color = "§cAPI DISABLED! §7"; } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperRequirementsManager.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperRequirementsManager.java new file mode 100644 index 00000000..ae2e6b22 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperRequirementsManager.java @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2022 NotEnoughUpdates contributors + * + * This file is part of NotEnoughUpdates. + * + * NotEnoughUpdates is free software: you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any later version. + * + * NotEnoughUpdates is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>. + */ + +package io.github.moulberry.notenoughupdates.miscgui.minionhelper; + +import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.CollectionRequirement; +import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.CustomRequirement; +import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.MinionRequirement; +import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.ReputationRequirement; +import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.SlayerRequirement; +import io.github.moulberry.notenoughupdates.util.Utils; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +public class MinionHelperRequirementsManager { + + private final MinionHelperManager manager; + + public MinionHelperRequirementsManager(MinionHelperManager manager) { + this.manager = manager; + } + + public List<MinionRequirement> getRequirements(Minion minion) { + if (!minion.getRequirements().isEmpty()) { + return minion.getRequirements(); + } + + Minion parent = minion.getParent(); + if (parent != null) { + return getRequirements(parent); + } + + return Collections.emptyList(); + } + + public boolean meetAllRequirements(Minion minion) { + List<MinionRequirement> list = getRequirements(minion); + for (MinionRequirement requirement : list) { + if (!meetRequirement(minion, requirement)) { + return false; + } + } + + return true; + } + + public boolean meetRequirement(Minion minion, MinionRequirement requirement) { + if (manager.getApiData() == null) return false; + + if (requirement instanceof CollectionRequirement) { + if (manager.getApiData().isCollectionApiDisabled()) return true; + + CollectionRequirement collectionRequirement = (CollectionRequirement) requirement; + String collection = collectionRequirement.getCollection(); + String internalName = manager.formatInternalName(collection); + + int need = collectionRequirement.getLevel(); + Map<String, Integer> highestCollectionTier = manager.getApiData().getHighestCollectionTier(); + if (highestCollectionTier.containsKey(internalName)) { + int has = highestCollectionTier.get(internalName); + + return has >= need; + } + + } else if (requirement instanceof SlayerRequirement) { + SlayerRequirement slayerRequirement = (SlayerRequirement) requirement; + String slayer = slayerRequirement.getSlayer(); + int need = slayerRequirement.getLevel(); + Map<String, Integer> slayerTiers = manager.getApiData().getSlayerTiers(); + if (slayerTiers.containsKey(slayer)) { + return slayerTiers.get(slayer) >= need; + } + + } else if (requirement instanceof ReputationRequirement) { + ReputationRequirement reputationRequirement = (ReputationRequirement) requirement; + int need = reputationRequirement.getReputation(); + String reputationType = reputationRequirement.getReputationType(); + if (reputationType.equals("BARBARIAN")) { + return manager.getApiData().getBarbariansReputation() >= need; + } else if (reputationType.equals("MAGE")) { + return manager.getApiData().getMagesReputation() >= need; + } else { + Utils.addChatMessage("§c[NEU] Minion Helper: Unknown reputation type: '" + reputationType + "'"); + return false; + } + } else if (requirement instanceof CustomRequirement) { + return minion.isCrafted(); + } + + return false; + } + + public void reloadRequirements() { + for (Minion minion : manager.getAllMinions().values()) { + minion.setMeetRequirements(meetAllRequirements(minion)); + } + } +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java index f225a391..16fc61a5 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java @@ -221,8 +221,7 @@ public class MinionHelperApiLoader { craftedMinions )); - manager.reloadRequirements(); - manager.reloadCraftedMinions(); + manager.reloadData(); apiReadyToUse = true; } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperRepoLoader.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperRepoLoader.java index 0973b644..2bf0d8a0 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperRepoLoader.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperRepoLoader.java @@ -97,8 +97,7 @@ public class MinionHelperRepoLoader { testForMissingData(); - manager.reloadRequirements(); - manager.reloadCraftedMinions(); + manager.reloadData(); repoReadyToUse = true; if (error) { @@ -193,7 +192,7 @@ public class MinionHelperRepoLoader { Utils.addChatMessage("§c[NEU] The Minion '" + minion.getInternalName() + " has no display name!"); } } - if (manager.getRequirements(minion).isEmpty()) { + if (manager.getRequirementsManager().getRequirements(minion).isEmpty()) { error = true; if (NotEnoughUpdates.INSTANCE.config.hidden.dev) { Utils.addChatMessage("§c[NEU] The Minion '" + minion.getInternalName() + " has no requirements!"); |