From 00e3503cfe62e381810f271575218ae29c664da6 Mon Sep 17 00:00:00 2001 From: Kamiel Date: Sat, 3 Feb 2018 01:50:11 +0100 Subject: [PATCH] Fix several issues with indicators - Fix issue with indicators showing up multiple times - Fix issue with disabling skill boosts not removing indicators --- .../client/plugins/boosts/BoostIndicator.java | 3 ++ .../client/plugins/boosts/BoostsOverlay.java | 20 +++++++++---- .../client/plugins/boosts/BoostsPlugin.java | 29 +++++++------------ 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostIndicator.java b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostIndicator.java index d461917b02..2f6ca2f17c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostIndicator.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostIndicator.java @@ -26,6 +26,7 @@ package net.runelite.client.plugins.boosts; import java.awt.Color; import java.awt.image.BufferedImage; +import lombok.Getter; import net.runelite.api.Client; import net.runelite.api.Skill; import net.runelite.client.ui.overlay.infobox.InfoBox; @@ -34,6 +35,8 @@ public class BoostIndicator extends InfoBox { private final BoostsConfig config; private final Client client; + + @Getter private final Skill skill; public BoostIndicator(Skill skill, BufferedImage image, Client client, BoostsConfig config) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsOverlay.java index 2e4cfaf005..92d9b0e756 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsOverlay.java @@ -84,12 +84,13 @@ class BoostsOverlay extends Overlay int boosted = client.getBoostedSkillLevel(skill), base = client.getRealSkillLevel(skill); + BoostIndicator indicator = indicators[skill.ordinal()]; + if (boosted == base) { - if (indicators[skill.ordinal()] != null) + if (indicator != null && infoBoxManager.getInfoBoxes().contains(indicator)) { - infoBoxManager.removeInfoBox(indicators[skill.ordinal()]); - indicators[skill.ordinal()] = null; + infoBoxManager.removeInfoBox(indicator); } continue; @@ -97,15 +98,24 @@ class BoostsOverlay extends Overlay if (config.displayIndicators()) { - if (indicators[skill.ordinal()] == null) + if (indicator == null) { - BoostIndicator indicator = new BoostIndicator(skill, iconManager.getSkillImage(skill), client, config); + indicator = new BoostIndicator(skill, iconManager.getSkillImage(skill), client, config); indicators[skill.ordinal()] = indicator; + } + + if (!infoBoxManager.getInfoBoxes().contains(indicator)) + { infoBoxManager.addInfoBox(indicator); } } else { + if (indicator != null && infoBoxManager.getInfoBoxes().contains(indicator)) + { + infoBoxManager.removeInfoBox(indicator); + } + String str; Color strColor = Color.WHITE; if (!config.useRelativeBoost()) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java index ac544830c8..98855dee30 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java @@ -28,6 +28,7 @@ import com.google.common.collect.ObjectArrays; import com.google.common.eventbus.Subscribe; import com.google.inject.Binder; import com.google.inject.Provides; +import java.util.Arrays; import javax.inject.Inject; import lombok.Getter; import net.runelite.api.Skill; @@ -93,35 +94,25 @@ public class BoostsPlugin extends Plugin } } + @Override + protected void shutDown() throws Exception + { + infoBoxManager.removeIf(t -> t instanceof BoostIndicator); + } + @Subscribe public void onConfigChanged(ConfigChanged event) { if (!config.enabled()) { + infoBoxManager.removeIf(t -> t instanceof BoostIndicator); return; } updateShownSkills(config.enableSkill()); - if (event.getKey().equals("displayIndicators")) - { - for (BoostIndicator indicator : boostsOverlay.getIndicators()) - { - if (indicator == null) - { - continue; - } - - if (config.displayIndicators()) - { - infoBoxManager.addInfoBox(indicator); - } - else - { - infoBoxManager.removeInfoBox(indicator); - } - } - } + infoBoxManager.removeIf(t -> t instanceof BoostIndicator + && !Arrays.asList(shownSkills).contains(((BoostIndicator) t).getSkill())); } private void updateShownSkills(boolean showSkillingSkills)