From e129f6227bf121c68e9dfced3c640261886ce4e8 Mon Sep 17 00:00:00 2001 From: PKLite Date: Mon, 9 Sep 2019 14:36:58 -0400 Subject: [PATCH] hiscore plugin: add config caching Signed-off-by: PKLite --- .../client/plugins/hiscore/HiscoreConfig.java | 2 +- .../client/plugins/hiscore/HiscorePanel.java | 8 ++-- .../client/plugins/hiscore/HiscorePlugin.java | 40 +++++++++++++++---- .../plugins/hiscore/HiscorePanelTest.java | 2 +- 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscoreConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscoreConfig.java index 8ba792f5e6..848ded03e7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscoreConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscoreConfig.java @@ -81,7 +81,7 @@ public interface HiscoreConfig extends Config name = "Bounty lookup", description = "Automatically lookup the stats of your bounty hunter target" ) - default boolean bountylookup() + default boolean bountyLookup() { return false; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java index eb95a47ad8..74183220d1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java @@ -123,7 +123,7 @@ public class HiscorePanel extends PluginPanel @Nullable private Client client; - private final HiscoreConfig config; + private final HiscorePlugin plugin; private final IconTextField searchBar; @@ -141,10 +141,10 @@ public class HiscorePanel extends PluginPanel private boolean loading = false; @Inject - public HiscorePanel(HiscoreConfig config) + public HiscorePanel(HiscorePlugin plugin) { super(); - this.config = config; + this.plugin = plugin; // The layout seems to be ignoring the top margin and only gives it // a 2-3 pixel margin, so I set the value to 18 to compensate @@ -423,7 +423,7 @@ public class HiscorePanel extends PluginPanel final long exp = s.getExperience(); final boolean isSkill = SKILLS.contains(skill); int level = -1; - if (config.virtualLevels() && isSkill && exp > -1L) + if (plugin.isVirtualLevels() && isSkill && exp > -1L) { level = Experience.getLevelForXp((int) exp); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java index b9e2fcb3d4..39fc61e9dc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java @@ -37,6 +37,8 @@ import javax.inject.Inject; import javax.inject.Provider; import javax.inject.Singleton; import javax.swing.SwingUtilities; +import lombok.AccessLevel; +import lombok.Getter; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; import net.runelite.api.MenuOpcode; @@ -71,6 +73,14 @@ public class HiscorePlugin extends Plugin private static final ImmutableList AFTER_OPTIONS = ImmutableList.of("Message", "Add ignore", "Remove friend", KICK_OPTION); private static final Pattern BOUNTY_PATTERN = Pattern.compile("You've been assigned a target: (.*)"); + // config + private boolean playerOption; + private boolean menuOption; + @Getter(AccessLevel.PACKAGE) + private boolean virtualLevels; + private boolean autocomplete; + private boolean bountyLookup; + @Inject @Nullable private Client client; @@ -106,6 +116,7 @@ public class HiscorePlugin extends Plugin protected void startUp() throws Exception { addSubscriptions(); + updateConfig(); hiscorePanel = injector.getInstance(HiscorePanel.class); @@ -120,11 +131,11 @@ public class HiscorePlugin extends Plugin clientToolbar.addNavigation(navButton); - if (config.playerOption() && client != null) + if (this.playerOption && client != null) { menuManager.get().addPlayerMenuItem(LOOKUP); } - if (config.autocomplete()) + if (this.autocomplete) { hiscorePanel.addInputKeyListener(autocompleter); } @@ -154,13 +165,17 @@ public class HiscorePlugin extends Plugin private void onConfigChanged(ConfigChanged event) { - if (event.getGroup().equals("hiscore")) + + if (!event.getGroup().equals("hiscore")) { + return; + } + updateConfig(); if (client != null) { menuManager.get().removePlayerMenuItem(LOOKUP); - if (config.playerOption()) + if (this.playerOption) { menuManager.get().addPlayerMenuItem(LOOKUP); } @@ -168,7 +183,7 @@ public class HiscorePlugin extends Plugin if (event.getKey().equals("autocomplete")) { - if (config.autocomplete()) + if (this.autocomplete) { hiscorePanel.addInputKeyListener(autocompleter); } @@ -178,11 +193,11 @@ public class HiscorePlugin extends Plugin } } } - } + private void onMenuEntryAdded(MenuEntryAdded event) { - if (!config.menuOption()) + if (!this.menuOption) { return; } @@ -224,7 +239,7 @@ public class HiscorePlugin extends Plugin private void onChatMessage(ChatMessage event) { - if (!config.bountylookup() || !event.getType().equals(ChatMessageType.GAMEMESSAGE)) + if (!this.bountyLookup || !event.getType().equals(ChatMessageType.GAMEMESSAGE)) { return; } @@ -237,6 +252,15 @@ public class HiscorePlugin extends Plugin } } + private void updateConfig() + { + this.playerOption = config.playerOption(); + this.menuOption = config.menuOption(); + this.virtualLevels = config.virtualLevels(); + this.autocomplete = config.autocomplete(); + this.bountyLookup = config.bountyLookup(); + } + private void insertMenuEntry(MenuEntry newEntry, MenuEntry[] entries) { MenuEntry[] newMenu = ObjectArrays.concat(entries, newEntry); diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/hiscore/HiscorePanelTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/hiscore/HiscorePanelTest.java index 058877dd85..e496268ac1 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/hiscore/HiscorePanelTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/hiscore/HiscorePanelTest.java @@ -31,7 +31,7 @@ public class HiscorePanelTest @Test public void testConstructor() { - new HiscorePanel(new HiscoreConfig() + new HiscorePanel(new HiscorePlugin() { }); }