From 7333b83660bcd27fda2e3b83dffa28f55c1a9558 Mon Sep 17 00:00:00 2001 From: Lorenz Date: Sat, 30 Jul 2022 17:56:23 +0200 Subject: add support for profile switching --- .../moulberry/notenoughupdates/NEUManager.java | 6 +++-- .../miscgui/minionhelper/MinionHelperManager.java | 18 ++++++++++++--- .../loaders/MinionHelperApiLoader.java | 27 ++++++++++++++++++---- .../loaders/MinionHelperChatLoader.java | 6 ++++- .../loaders/MinionHelperRepoLoader.java | 1 - 5 files changed, 47 insertions(+), 11 deletions(-) (limited to 'src/main') diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java index cd0d08b5..3dd13d49 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java @@ -29,6 +29,7 @@ import io.github.moulberry.notenoughupdates.auction.APIManager; import io.github.moulberry.notenoughupdates.events.RepositoryReloadEvent; import io.github.moulberry.notenoughupdates.miscgui.GuiItemRecipe; import io.github.moulberry.notenoughupdates.miscgui.KatSitterOverlay; +import io.github.moulberry.notenoughupdates.miscgui.minionhelper.MinionHelperManager; import io.github.moulberry.notenoughupdates.recipes.CraftingOverlay; import io.github.moulberry.notenoughupdates.recipes.CraftingRecipe; import io.github.moulberry.notenoughupdates.recipes.Ingredient; @@ -158,6 +159,7 @@ public class NEUManager { public void setCurrentProfile(String currentProfile) { SBInfo.getInstance().currentProfile = currentProfile; + MinionHelperManager.getInstance().onProfileSwitch(); } public String getCurrentProfile() { @@ -207,7 +209,7 @@ public class NEUManager { } public CompletableFuture fetchRepository() { - return CompletableFuture.supplyAsync(() -> { + return CompletableFuture.supplyAsync(() -> { try { JsonObject currentCommitJSON = getJsonFromFile(new File(configLocation, "currentCommit.json")); @@ -1519,7 +1521,7 @@ public class NEUManager { return NotEnoughUpdates.INSTANCE.manager .fetchRepository() .thenCompose(ignored -> NotEnoughUpdates.INSTANCE.manager.reloadRepository()) - .>thenApply(ignored -> { + .thenApply(ignored -> { String newCommitHash = NotEnoughUpdates.INSTANCE.manager.latestRepoCommit; String newCommitShortHash = (newCommitHash == null ? "MISSING" : newCommitHash.substring(0, 7)); return Arrays.asList( 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 0a6c4a99..20917103 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 @@ -92,7 +92,8 @@ public class MinionHelperManager { } public boolean isReadyToUse() { - return MinionHelperRepoLoader.getInstance().isRepoReadyToUse(); + return MinionHelperRepoLoader.getInstance().isRepoReadyToUse() && + MinionHelperApiLoader.getInstance().isApiReadyToUse(); } public Minion getMinionById(String internalName) { @@ -356,15 +357,26 @@ public class MinionHelperManager { Utils.addChatMessage(""); } - public List getChilds(Minion minion) { + public List getChildren(Minion minion) { List list = new ArrayList<>(); for (Minion other : minions.values()) { if (minion == other.getParent()) { list.add(other); - list.addAll(getChilds(other)); + list.addAll(getChildren(other)); break; } } return list; } + + public void onProfileSwitch() { + //TODO check if the feature is enabled + for (Minion minion : minions.values()) { + minion.setCrafted(false); + minion.setMeetRequirements(false); + } + apiData = null; + + MinionHelperApiLoader.getInstance().onProfileSwitch(); + } } 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 03c7e271..2f6b21f9 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 @@ -26,7 +26,6 @@ import io.github.moulberry.notenoughupdates.NotEnoughUpdates; import io.github.moulberry.notenoughupdates.core.util.StringUtils; import io.github.moulberry.notenoughupdates.miscgui.minionhelper.ApiData; import io.github.moulberry.notenoughupdates.miscgui.minionhelper.MinionHelperManager; -import io.github.moulberry.notenoughupdates.miscgui.minionhelper.MinionHelperOverlay; import io.github.moulberry.notenoughupdates.profileviewer.ProfileViewer; import io.github.moulberry.notenoughupdates.util.Constants; import io.github.moulberry.notenoughupdates.util.SBInfo; @@ -48,6 +47,8 @@ public class MinionHelperApiLoader { private boolean dirty = true; private int ticks = 0; private boolean collectionApiEnabled = true; + private boolean ignoreWorldSwitches = false; + private boolean apiReadyToUse = false; public static MinionHelperApiLoader getInstance() { if (instance == null) { @@ -58,7 +59,9 @@ public class MinionHelperApiLoader { @SubscribeEvent public void onWorldLoad(WorldEvent.Load event) { - dirty = true; + if (ignoreWorldSwitches) return; + + setDirty(); } @SubscribeEvent @@ -192,10 +195,26 @@ public class MinionHelperApiLoader { !collectionApiEnabled )); manager.reloadRequirements(); - MinionHelperOverlay.getInstance().resetCache(); + apiReadyToUse = true; } public void setDirty() { - this.dirty = true; + dirty = true; + apiReadyToUse = false; + } + + public void prepareProfileSwitch() { + ignoreWorldSwitches = true; + apiReadyToUse = false; + } + + public void onProfileSwitch() { + setDirty(); + ignoreWorldSwitches = false; + collectionApiEnabled = true; + } + + public boolean isApiReadyToUse() { + return apiReadyToUse; } } diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperChatLoader.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperChatLoader.java index d4e0f3f4..6d6b3bda 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperChatLoader.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperChatLoader.java @@ -64,6 +64,10 @@ public class MinionHelperChatLoader { MinionHelperOverlay.getInstance().resetCache(); } + if (message.startsWith("§r§7Switching to profile ")) { + MinionHelperApiLoader.getInstance().prepareProfileSwitch(); + } + } catch (Exception e) { Utils.addChatMessage( "[NEU] §cMinion Helper failed reading the minion upgrade message. See the logs for more info!"); @@ -77,7 +81,7 @@ public class MinionHelperChatLoader { if (!minion.doesMeetRequirements()) { minion.setMeetRequirements(true); - for (Minion child : manager.getChilds(minion)) { + for (Minion child : manager.getChildren(minion)) { child.setMeetRequirements(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 7fecea6b..fca1bcb1 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 @@ -249,7 +249,6 @@ public class MinionHelperRepoLoader { if (minion.getTier() != 1) break; if (value.isEmpty()) break; - //Requires: Red Sand I String rawCollection = value.split(Pattern.quote(": "))[1]; String cleanCollection = StringUtils.removeLastWord(rawCollection, " "); String rawTier = rawCollection.substring(cleanCollection.length() + 1); -- cgit