Merge pull request #3140 from deathbeam/split-overlay-renderer-and-manager

Split overlay renderer and manager
This commit is contained in:
Adam
2018-06-12 18:03:16 -04:00
committed by GitHub
61 changed files with 1007 additions and 779 deletions

View File

@@ -27,9 +27,6 @@ package net.runelite.client.plugins;
import com.google.inject.Binder; import com.google.inject.Binder;
import com.google.inject.Injector; import com.google.inject.Injector;
import com.google.inject.Module; import com.google.inject.Module;
import java.util.Collection;
import java.util.Collections;
import net.runelite.client.ui.overlay.Overlay;
public abstract class Plugin implements Module public abstract class Plugin implements Module
{ {
@@ -52,15 +49,4 @@ public abstract class Plugin implements Module
{ {
return injector; return injector;
} }
public Overlay getOverlay()
{
return null;
}
public Collection<Overlay> getOverlays()
{
Overlay overlay = getOverlay();
return overlay != null ? Collections.singletonList(overlay) : Collections.EMPTY_LIST;
}
} }

View File

@@ -26,8 +26,6 @@ package net.runelite.client.plugins.agility;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@@ -65,7 +63,7 @@ import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor( @PluginDescriptor(
@@ -83,11 +81,13 @@ public class AgilityPlugin extends Plugin
private Tile markOfGrace; private Tile markOfGrace;
@Inject @Inject
@Getter private OverlayManager overlayManager;
private AgilityOverlay overlay;
@Inject @Inject
private LapCounterOverlay lapOverlay; private AgilityOverlay agilityOverlay;
@Inject
private LapCounterOverlay lapCounterOverlay;
@Inject @Inject
private Notifier notifier; private Notifier notifier;
@@ -114,14 +114,17 @@ public class AgilityPlugin extends Plugin
} }
@Override @Override
public Collection<Overlay> getOverlays() protected void startUp() throws Exception
{ {
return Arrays.asList(overlay, lapOverlay); overlayManager.add(agilityOverlay);
overlayManager.add(lapCounterOverlay);
} }
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(agilityOverlay);
overlayManager.remove(lapCounterOverlay);
markOfGrace = null; markOfGrace = null;
obstacles.clear(); obstacles.clear();
session = null; session = null;

View File

@@ -52,6 +52,7 @@ import net.runelite.client.plugins.PluginDescriptor;
import static net.runelite.client.plugins.attackstyles.AttackStyle.CASTING; import static net.runelite.client.plugins.attackstyles.AttackStyle.CASTING;
import static net.runelite.client.plugins.attackstyles.AttackStyle.DEFENSIVE_CASTING; import static net.runelite.client.plugins.attackstyles.AttackStyle.DEFENSIVE_CASTING;
import static net.runelite.client.plugins.attackstyles.AttackStyle.OTHER; import static net.runelite.client.plugins.attackstyles.AttackStyle.OTHER;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Attack Styles" name = "Attack Styles"
@@ -73,6 +74,9 @@ public class AttackStylesPlugin extends Plugin
@Inject @Inject
private AttackStylesConfig config; private AttackStylesConfig config;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private AttackStylesOverlay overlay; private AttackStylesOverlay overlay;
@@ -82,16 +86,11 @@ public class AttackStylesPlugin extends Plugin
return configManager.getConfig(AttackStylesConfig.class); return configManager.getConfig(AttackStylesConfig.class);
} }
@Override
public AttackStylesOverlay getOverlay()
{
return overlay;
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
if (client.getGameState() == GameState.LOGGED_IN) if (client.getGameState() == GameState.LOGGED_IN)
{ {
updateWarnedSkills(config.warnForAttack(), Skill.ATTACK); updateWarnedSkills(config.warnForAttack(), Skill.ATTACK);
@@ -111,6 +110,7 @@ public class AttackStylesPlugin extends Plugin
@Override @Override
protected void shutDown() protected void shutDown()
{ {
overlayManager.remove(overlay);
hideWarnedStyles(false); hideWarnedStyles(false);
processWidgets(); processWidgets();
} }

View File

@@ -45,7 +45,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.FontManager; import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Barbarian Assault" name = "Barbarian Assault"
@@ -63,6 +63,9 @@ public class BarbarianAssaultPlugin extends Plugin
@Inject @Inject
private Client client; private Client client;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private BarbarianAssaultConfig config; private BarbarianAssaultConfig config;
@@ -78,6 +81,7 @@ public class BarbarianAssaultPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
font = FontManager.getRunescapeFont() font = FontManager.getRunescapeFont()
.deriveFont(Font.BOLD, 24); .deriveFont(Font.BOLD, 24);
@@ -87,6 +91,12 @@ public class BarbarianAssaultPlugin extends Plugin
} }
} }
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
}
@Subscribe @Subscribe
public void onGameTick(GameTick event) public void onGameTick(GameTick event)
{ {
@@ -155,12 +165,6 @@ public class BarbarianAssaultPlugin extends Plugin
} }
} }
@Override
public Overlay getOverlay()
{
return overlay;
}
public Font getFont() public Font getFont()
{ {
return font; return font;

View File

@@ -28,7 +28,6 @@ import com.google.common.collect.Sets;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@@ -64,7 +63,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.StackFormatter; import net.runelite.client.util.StackFormatter;
import net.runelite.http.api.item.ItemPrice; import net.runelite.http.api.item.ItemPrice;
@@ -88,26 +87,19 @@ public class BarrowsPlugin extends Plugin
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private final Set<WallObject> walls = new HashSet<>(); private final Set<WallObject> walls = new HashSet<>();
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private final Set<GameObject> ladders = new HashSet<>(); private final Set<GameObject> ladders = new HashSet<>();
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private BarrowsOverlay barrowsOverlay; private BarrowsOverlay barrowsOverlay;
@Inject @Inject
private BarrowsBrotherSlainOverlay brotherOverlay; private BarrowsBrotherSlainOverlay brotherOverlay;
@Provides
BarrowsConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(BarrowsConfig.class);
}
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(barrowsOverlay, brotherOverlay);
}
@Inject @Inject
private Client client; private Client client;
@@ -122,9 +114,24 @@ public class BarrowsPlugin extends Plugin
private long chestPrice; private long chestPrice;
@Provides
BarrowsConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(BarrowsConfig.class);
}
@Override
protected void startUp() throws Exception
{
overlayManager.add(barrowsOverlay);
overlayManager.add(brotherOverlay);
}
@Override @Override
protected void shutDown() protected void shutDown()
{ {
overlayManager.remove(barrowsOverlay);
overlayManager.remove(brotherOverlay);
walls.clear(); walls.clear();
ladders.clear(); ladders.clear();
} }

View File

@@ -26,8 +26,6 @@ package net.runelite.client.plugins.blastfurnace;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.Arrays;
import java.util.Collection;
import javax.inject.Inject; import javax.inject.Inject;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;
@@ -41,7 +39,7 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Blast Furnace" name = "Blast Furnace"
@@ -56,6 +54,9 @@ public class BlastFurnacePlugin extends Plugin
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private GameObject barDispenser; private GameObject barDispenser;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private BlastFurnaceOverlay overlay; private BlastFurnaceOverlay overlay;
@@ -65,9 +66,20 @@ public class BlastFurnacePlugin extends Plugin
@Inject @Inject
private BlastFurnaceClickBoxOverlay clickBoxOverlay; private BlastFurnaceClickBoxOverlay clickBoxOverlay;
@Override
protected void startUp() throws Exception
{
overlayManager.add(overlay);
overlayManager.add(cofferOverlay);
overlayManager.add(clickBoxOverlay);
}
@Override @Override
protected void shutDown() protected void shutDown()
{ {
overlayManager.remove(overlay);
overlayManager.remove(cofferOverlay);
overlayManager.remove(clickBoxOverlay);
conveyorBelt = null; conveyorBelt = null;
barDispenser = null; barDispenser = null;
} }
@@ -78,12 +90,6 @@ public class BlastFurnacePlugin extends Plugin
return configManager.getConfig(BlastFurnaceConfig.class); return configManager.getConfig(BlastFurnaceConfig.class);
} }
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(overlay, cofferOverlay, clickBoxOverlay);
}
@Subscribe @Subscribe
public void onGameObjectSpawn(GameObjectSpawned event) public void onGameObjectSpawn(GameObjectSpawned event)
{ {

View File

@@ -26,8 +26,6 @@ package net.runelite.client.plugins.blastmine;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.inject.Inject; import javax.inject.Inject;
@@ -44,7 +42,7 @@ import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(name = "Blast Mine") @PluginDescriptor(name = "Blast Mine")
public class BlastMinePlugin extends Plugin public class BlastMinePlugin extends Plugin
@@ -52,6 +50,9 @@ public class BlastMinePlugin extends Plugin
@Getter @Getter
private final Map<WorldPoint, BlastMineRock> rocks = new HashMap<>(); private final Map<WorldPoint, BlastMineRock> rocks = new HashMap<>();
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private Client client; private Client client;
@@ -68,14 +69,17 @@ public class BlastMinePlugin extends Plugin
} }
@Override @Override
public Collection<Overlay> getOverlays() protected void startUp() throws Exception
{ {
return Arrays.asList(blastMineRockOverlay, blastMineOreCountOverlay); overlayManager.add(blastMineRockOverlay);
overlayManager.add(blastMineOreCountOverlay);
} }
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(blastMineRockOverlay);
overlayManager.remove(blastMineOreCountOverlay);
final Widget blastMineWidget = client.getWidget(WidgetInfo.BLAST_MINE); final Widget blastMineWidget = client.getWidget(WidgetInfo.BLAST_MINE);
if (blastMineWidget != null) if (blastMineWidget != null)

View File

@@ -44,7 +44,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.game.SkillIconManager; import net.runelite.client.game.SkillIconManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor( @PluginDescriptor(
@@ -78,6 +78,9 @@ public class BoostsPlugin extends Plugin
@Inject @Inject
private InfoBoxManager infoBoxManager; private InfoBoxManager infoBoxManager;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private BoostsOverlay boostsOverlay; private BoostsOverlay boostsOverlay;
@@ -100,15 +103,10 @@ public class BoostsPlugin extends Plugin
return configManager.getConfig(BoostsConfig.class); return configManager.getConfig(BoostsConfig.class);
} }
@Override
public Overlay getOverlay()
{
return boostsOverlay;
}
@Override @Override
protected void startUp() protected void startUp()
{ {
overlayManager.add(boostsOverlay);
updateShownSkills(config.enableSkill()); updateShownSkills(config.enableSkill());
Arrays.fill(lastSkillLevels, -1); Arrays.fill(lastSkillLevels, -1);
overallIcon = skillIconManager.getSkillImage(Skill.OVERALL); overallIcon = skillIconManager.getSkillImage(Skill.OVERALL);
@@ -117,6 +115,7 @@ public class BoostsPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(boostsOverlay);
infoBoxManager.removeIf(t -> t instanceof BoostIndicator || t instanceof StatChangeIndicator); infoBoxManager.removeIf(t -> t instanceof BoostIndicator || t instanceof StatChangeIndicator);
} }

View File

@@ -29,8 +29,6 @@ import com.google.inject.Provides;
import java.awt.Color; import java.awt.Color;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -59,7 +57,7 @@ import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor( @PluginDescriptor(
@@ -97,6 +95,9 @@ public class CannonPlugin extends Plugin
@Inject @Inject
private Notifier notifier; private Notifier notifier;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private CannonOverlay cannonOverlay; private CannonOverlay cannonOverlay;
@@ -119,14 +120,17 @@ public class CannonPlugin extends Plugin
} }
@Override @Override
public Collection<Overlay> getOverlays() protected void startUp() throws Exception
{ {
return Arrays.asList(cannonOverlay, cannonSpotOverlay); overlayManager.add(cannonOverlay);
overlayManager.add(cannonSpotOverlay);
} }
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(cannonOverlay);
overlayManager.remove(cannonSpotOverlay);
cannonPlaced = false; cannonPlaced = false;
cannonPosition = null; cannonPosition = null;
cballsLeft = 0; cballsLeft = 0;

View File

@@ -41,7 +41,7 @@ import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.NpcSpawned;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(name = "Cerberus") @PluginDescriptor(name = "Cerberus")
@Singleton @Singleton
@@ -50,21 +50,25 @@ public class CerberusPlugin extends Plugin
@Getter @Getter
private final List<NPC> ghosts = new ArrayList<>(); private final List<NPC> ghosts = new ArrayList<>();
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private CerberusOverlay overlay; private CerberusOverlay overlay;
@Override
protected void startUp() throws Exception
{
overlayManager.add(overlay);
}
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
ghosts.clear(); ghosts.clear();
} }
@Override
public Overlay getOverlay()
{
return overlay;
}
@Subscribe @Subscribe
public void onGameStateChange(GameStateChanged event) public void onGameStateChange(GameStateChanged event)
{ {

View File

@@ -33,7 +33,6 @@ import java.io.IOException;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Stream; import java.util.stream.Stream;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
@@ -82,7 +81,7 @@ import net.runelite.client.plugins.cluescrolls.clues.MapClue;
import net.runelite.client.plugins.cluescrolls.clues.NpcClueScroll; import net.runelite.client.plugins.cluescrolls.clues.NpcClueScroll;
import net.runelite.client.plugins.cluescrolls.clues.ObjectClueScroll; import net.runelite.client.plugins.cluescrolls.clues.ObjectClueScroll;
import net.runelite.client.plugins.cluescrolls.clues.TextClueScroll; import net.runelite.client.plugins.cluescrolls.clues.TextClueScroll;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager; import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager;
import net.runelite.client.util.QueryRunner; import net.runelite.client.util.QueryRunner;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@@ -128,6 +127,9 @@ public class ClueScrollPlugin extends Plugin
@Inject @Inject
private QueryRunner queryRunner; private QueryRunner queryRunner;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private ClueScrollOverlay clueScrollOverlay; private ClueScrollOverlay clueScrollOverlay;
@@ -172,15 +174,20 @@ public class ClueScrollPlugin extends Plugin
} }
@Override @Override
protected void shutDown() throws Exception protected void startUp() throws Exception
{ {
resetClue(); overlayManager.add(clueScrollOverlay);
overlayManager.add(clueScrollEmoteOverlay);
overlayManager.add(clueScrollWorldOverlay);
} }
@Override @Override
public Collection<Overlay> getOverlays() protected void shutDown() throws Exception
{ {
return Arrays.asList(clueScrollOverlay, clueScrollEmoteOverlay, clueScrollWorldOverlay); overlayManager.remove(clueScrollOverlay);
overlayManager.remove(clueScrollEmoteOverlay);
overlayManager.remove(clueScrollWorldOverlay);
resetClue();
} }
@Subscribe @Subscribe

View File

@@ -58,7 +58,7 @@ import net.runelite.api.events.ProjectileMoved;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Demonic Gorillas" name = "Demonic Gorillas"
@@ -69,6 +69,9 @@ public class DemonicGorillaPlugin extends Plugin
@Inject @Inject
private Client client; private Client client;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private DemonicGorillaOverlay overlay; private DemonicGorillaOverlay overlay;
@@ -87,6 +90,7 @@ public class DemonicGorillaPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
gorillas = new HashMap<>(); gorillas = new HashMap<>();
recentBoulders = new ArrayList<>(); recentBoulders = new ArrayList<>();
pendingAttacks = new ArrayList<>(); pendingAttacks = new ArrayList<>();
@@ -97,18 +101,13 @@ public class DemonicGorillaPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
gorillas = null; gorillas = null;
recentBoulders = null; recentBoulders = null;
pendingAttacks = null; pendingAttacks = null;
memorizedPlayers = null; memorizedPlayers = null;
} }
@Override
public Overlay getOverlay()
{
return overlay;
}
private void clear() private void clear()
{ {
recentBoulders.clear(); recentBoulders.clear();

View File

@@ -32,8 +32,6 @@ import com.google.inject.Provides;
import java.awt.Font; import java.awt.Font;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import static java.lang.Math.min; import static java.lang.Math.min;
import java.util.Arrays;
import java.util.Collection;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject; import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -52,7 +50,7 @@ import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.FontManager; import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.NavigationButton; import net.runelite.client.ui.NavigationButton;
import net.runelite.client.ui.PluginToolbar; import net.runelite.client.ui.PluginToolbar;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@PluginDescriptor( @PluginDescriptor(
@@ -68,6 +66,9 @@ public class DevToolsPlugin extends Plugin
@Inject @Inject
private PluginToolbar pluginToolbar; private PluginToolbar pluginToolbar;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private DevToolsOverlay overlay; private DevToolsOverlay overlay;
@@ -120,6 +121,12 @@ public class DevToolsPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
overlayManager.add(locationOverlay);
overlayManager.add(sceneOverlay);
overlayManager.add(cameraOverlay);
overlayManager.add(worldMapLocationOverlay);
final DevToolsPanel panel = injector.getInstance(DevToolsPanel.class); final DevToolsPanel panel = injector.getInstance(DevToolsPanel.class);
BufferedImage icon; BufferedImage icon;
@@ -144,15 +151,14 @@ public class DevToolsPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
overlayManager.remove(locationOverlay);
overlayManager.remove(sceneOverlay);
overlayManager.remove(cameraOverlay);
overlayManager.remove(worldMapLocationOverlay);
pluginToolbar.removeNavigation(navButton); pluginToolbar.removeNavigation(navButton);
} }
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(overlay, locationOverlay, sceneOverlay, cameraOverlay, worldMapLocationOverlay);
}
@Subscribe @Subscribe
public void onCommand(CommandExecuted commandExecuted) public void onCommand(CommandExecuted commandExecuted)
{ {

View File

@@ -34,7 +34,7 @@ import net.runelite.api.queries.NPCQuery;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.QueryRunner; import net.runelite.client.util.QueryRunner;
@PluginDescriptor( @PluginDescriptor(
@@ -48,15 +48,24 @@ public class FightCavePlugin extends Plugin
@Inject @Inject
private QueryRunner queryRunner; private QueryRunner queryRunner;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private FightCaveOverlay overlay; private FightCaveOverlay overlay;
private JadAttack attack; private JadAttack attack;
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return overlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
@Schedule( @Schedule(

View File

@@ -30,7 +30,6 @@ import com.google.common.primitives.Ints;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
@@ -50,7 +49,7 @@ import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency; import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.xptracker.XpTrackerPlugin; import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.QueryRunner; import net.runelite.client.util.QueryRunner;
@PluginDescriptor( @PluginDescriptor(
@@ -71,6 +70,9 @@ public class FishingPlugin extends Plugin
@Inject @Inject
private QueryRunner queryRunner; private QueryRunner queryRunner;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private FishingConfig config; private FishingConfig config;
@@ -94,14 +96,18 @@ public class FishingPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
// Initialize overlay config overlayManager.add(overlay);
overlayManager.add(spotOverlay);
overlayManager.add(fishingSpotMinimapOverlay);
updateConfig(); updateConfig();
} }
@Override @Override
public Collection<Overlay> getOverlays() protected void shutDown() throws Exception
{ {
return Arrays.asList(overlay, spotOverlay, fishingSpotMinimapOverlay); overlayManager.remove(overlay);
overlayManager.remove(spotOverlay);
overlayManager.remove(fishingSpotMinimapOverlay);
} }
public FishingSession getSession() public FishingSession getSession()

View File

@@ -33,7 +33,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.DrawManager; import net.runelite.client.ui.DrawManager;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
/** /**
* FPS Control has two primary areas, this plugin class just keeps those areas up to date and handles setup / teardown. * FPS Control has two primary areas, this plugin class just keeps those areas up to date and handles setup / teardown.
@@ -53,6 +53,9 @@ public class FpsPlugin extends Plugin
{ {
static final String CONFIG_GROUP_KEY = "fpscontrol"; static final String CONFIG_GROUP_KEY = "fpscontrol";
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private FpsOverlay overlay; private FpsOverlay overlay;
@@ -68,12 +71,6 @@ public class FpsPlugin extends Plugin
return configManager.getConfig(FpsConfig.class); return configManager.getConfig(FpsConfig.class);
} }
@Override
public Overlay getOverlay()
{
return overlay;
}
@Subscribe @Subscribe
public void onConfigChanged(ConfigChanged event) public void onConfigChanged(ConfigChanged event)
{ {
@@ -93,6 +90,7 @@ public class FpsPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
drawManager.registerEveryFrameListener(drawListener); drawManager.registerEveryFrameListener(drawListener);
drawListener.reloadConfig(); drawListener.reloadConfig();
} }
@@ -100,6 +98,7 @@ public class FpsPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
drawManager.unregisterEveryFrameListener(drawListener); drawManager.unregisterEveryFrameListener(drawListener);
} }
} }

View File

@@ -48,7 +48,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.game.ChatboxInputManager; import net.runelite.client.game.ChatboxInputManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@Slf4j @Slf4j
@@ -69,6 +69,9 @@ public class FriendNotesPlugin extends Plugin
@Inject @Inject
private ConfigManager configManager; private ConfigManager configManager;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private FriendNoteOverlay overlay; private FriendNoteOverlay overlay;
@@ -79,9 +82,15 @@ public class FriendNotesPlugin extends Plugin
private HoveredFriend hoveredFriend = null; private HoveredFriend hoveredFriend = null;
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return overlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
/** /**

View File

@@ -81,7 +81,7 @@ import net.runelite.client.plugins.grounditems.config.MenuHighlightMode;
import static net.runelite.client.plugins.grounditems.config.MenuHighlightMode.BOTH; import static net.runelite.client.plugins.grounditems.config.MenuHighlightMode.BOTH;
import static net.runelite.client.plugins.grounditems.config.MenuHighlightMode.NAME; import static net.runelite.client.plugins.grounditems.config.MenuHighlightMode.NAME;
import static net.runelite.client.plugins.grounditems.config.MenuHighlightMode.OPTION; import static net.runelite.client.plugins.grounditems.config.MenuHighlightMode.OPTION;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.http.api.item.ItemPrice; import net.runelite.http.api.item.ItemPrice;
@PluginDescriptor( @PluginDescriptor(
@@ -140,6 +140,9 @@ public class GroundItemsPlugin extends Plugin
@Inject @Inject
private ItemManager itemManager; private ItemManager itemManager;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private GroundItemsConfig config; private GroundItemsConfig config;
@@ -171,15 +174,10 @@ public class GroundItemsPlugin extends Plugin
return configManager.getConfig(GroundItemsConfig.class); return configManager.getConfig(GroundItemsConfig.class);
} }
@Override
public Overlay getOverlay()
{
return overlay;
}
@Override @Override
protected void startUp() protected void startUp()
{ {
overlayManager.add(overlay);
reset(); reset();
mouseManager.registerMouseListener(inputListener); mouseManager.registerMouseListener(inputListener);
keyManager.registerKeyListener(inputListener); keyManager.registerKeyListener(inputListener);
@@ -188,6 +186,7 @@ public class GroundItemsPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
mouseManager.unregisterMouseListener(inputListener); mouseManager.unregisterMouseListener(inputListener);
keyManager.unregisterKeyListener(inputListener); keyManager.unregisterKeyListener(inputListener);
groundItems.clear(); groundItems.clear();

View File

@@ -56,6 +56,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@Slf4j @Slf4j
@PluginDescriptor( @PluginDescriptor(
@@ -85,6 +86,9 @@ public class GroundMarkerPlugin extends Plugin
@Inject @Inject
private ConfigManager configManager; private ConfigManager configManager;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private GroundMarkerOverlay overlay; private GroundMarkerOverlay overlay;
@@ -286,20 +290,17 @@ public class GroundMarkerPlugin extends Plugin
@Override @Override
protected void startUp() protected void startUp()
{ {
overlayManager.add(overlay);
keyManager.registerKeyListener(inputListener); keyManager.registerKeyListener(inputListener);
} }
@Override @Override
protected void shutDown() protected void shutDown()
{ {
overlayManager.remove(overlay);
keyManager.unregisterKeyListener(inputListener); keyManager.unregisterKeyListener(inputListener);
} }
@Override
public GroundMarkerOverlay getOverlay()
{
return overlay;
}
protected void markTile(LocalPoint localPoint) protected void markTile(LocalPoint localPoint)
{ {

View File

@@ -27,7 +27,6 @@ package net.runelite.client.plugins.herbiboars;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@@ -58,7 +57,7 @@ import net.runelite.api.events.VarbitChanged;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@Slf4j @Slf4j
@PluginDescriptor( @PluginDescriptor(
@@ -96,24 +95,15 @@ public class HerbiboarPlugin extends Plugin
@Inject @Inject
private Client client; private Client client;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private HerbiboarOverlay overlay; private HerbiboarOverlay overlay;
@Inject @Inject
private HerbiboarMinimapOverlay minimapOverlay; private HerbiboarMinimapOverlay minimapOverlay;
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(overlay, minimapOverlay);
}
@Provides
HerbiboarConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(HerbiboarConfig.class);
}
@Getter @Getter
private boolean inHerbiboarArea; private boolean inHerbiboarArea;
@@ -145,12 +135,27 @@ public class HerbiboarPlugin extends Plugin
@Setter @Setter
private int finishId; private int finishId;
@Provides
HerbiboarConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(HerbiboarConfig.class);
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
overlayManager.add(minimapOverlay);
inHerbiboarArea = checkArea(); inHerbiboarArea = checkArea();
} }
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
overlayManager.remove(minimapOverlay);
}
private void updateTrailData() private void updateTrailData()
{ {
currentTrail = null; currentTrail = null;

View File

@@ -48,7 +48,7 @@ import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.util.QueryRunner; import net.runelite.client.ui.overlay.OverlayManager;
@Slf4j @Slf4j
@PluginDescriptor( @PluginDescriptor(
@@ -60,10 +60,9 @@ public class HunterPlugin extends Plugin
private Client client; private Client client;
@Inject @Inject
private QueryRunner queryRunner; private OverlayManager overlayManager;
@Inject @Inject
@Getter
private TrapOverlay overlay; private TrapOverlay overlay;
@Inject @Inject
@@ -89,12 +88,14 @@ public class HunterPlugin extends Plugin
@Override @Override
protected void startUp() protected void startUp()
{ {
overlayManager.add(overlay);
overlay.updateConfig(); overlay.updateConfig();
} }
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
lastActionTime = Instant.ofEpochMilli(0); lastActionTime = Instant.ofEpochMilli(0);
traps.clear(); traps.clear();
} }

View File

@@ -28,8 +28,6 @@ import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.awt.Color; import java.awt.Color;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List; import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import lombok.AccessLevel; import lombok.AccessLevel;
@@ -42,8 +40,7 @@ import net.runelite.api.events.NpcSpawned;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.QueryRunner;
/** /**
* @author robin * @author robin
@@ -56,6 +53,9 @@ public class ImplingsPlugin extends Plugin
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private final List<NPC> implings = new ArrayList<>(); private final List<NPC> implings = new ArrayList<>();
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private ImplingsOverlay overlay; private ImplingsOverlay overlay;
@@ -65,19 +65,25 @@ public class ImplingsPlugin extends Plugin
@Inject @Inject
private ImplingsConfig config; private ImplingsConfig config;
@Inject
private QueryRunner queryRunner;
@Provides @Provides
ImplingsConfig getConfig(ConfigManager configManager) ImplingsConfig getConfig(ConfigManager configManager)
{ {
return configManager.getConfig(ImplingsConfig.class); return configManager.getConfig(ImplingsConfig.class);
} }
@Override @Override
public Collection<Overlay> getOverlays() protected void startUp() throws Exception
{ {
return Arrays.asList(overlay, minimapOverlay); overlayManager.add(overlay);
overlayManager.add(minimapOverlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
overlayManager.remove(minimapOverlay);
} }
@Subscribe @Subscribe

View File

@@ -37,7 +37,7 @@ import net.runelite.client.menus.MenuManager;
import net.runelite.client.menus.WidgetMenuOption; import net.runelite.client.menus.WidgetMenuOption;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Instance Map" name = "Instance Map"
@@ -49,6 +49,9 @@ public class InstanceMapPlugin extends Plugin
@Inject @Inject
private InstanceMapInputListener inputListener; private InstanceMapInputListener inputListener;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private InstanceMapOverlay overlay; private InstanceMapOverlay overlay;
@@ -80,6 +83,7 @@ public class InstanceMapPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
addCustomOptions(); addCustomOptions();
keyManager.registerKeyListener(inputListener); keyManager.registerKeyListener(inputListener);
mouseManager.registerMouseListener(inputListener); mouseManager.registerMouseListener(inputListener);
@@ -89,6 +93,7 @@ public class InstanceMapPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
removeCustomOptions(); removeCustomOptions();
keyManager.unregisterKeyListener(inputListener); keyManager.unregisterKeyListener(inputListener);
mouseManager.registerMouseListener(inputListener); mouseManager.registerMouseListener(inputListener);
@@ -127,12 +132,6 @@ public class InstanceMapPlugin extends Plugin
} }
} }
@Override
public Overlay getOverlay()
{
return overlay;
}
public void showMap() public void showMap()
{ {
overlay.setShowMap(true); overlay.setShowMap(true);

View File

@@ -24,22 +24,25 @@
*/ */
package net.runelite.client.plugins.itemcharges; package net.runelite.client.plugins.itemcharges;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.ui.overlay.Overlay;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Item Charges" name = "Item Charges"
) )
public class ItemChargePlugin extends Plugin public class ItemChargePlugin extends Plugin
{ {
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private ItemChargeOverlay overlay; private ItemChargeOverlay overlay;
@@ -49,18 +52,24 @@ public class ItemChargePlugin extends Plugin
@Inject @Inject
private ItemChargeConfig config; private ItemChargeConfig config;
@Override
public Overlay getOverlay()
{
return overlay;
}
@Provides @Provides
ItemChargeConfig getConfig(ConfigManager configManager) ItemChargeConfig getConfig(ConfigManager configManager)
{ {
return configManager.getConfig(ItemChargeConfig.class); return configManager.getConfig(ItemChargeConfig.class);
} }
@Override
protected void startUp() throws Exception
{
overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
}
@Subscribe @Subscribe
public void onChatMessage(ChatMessage event) public void onChatMessage(ChatMessage event)
{ {

View File

@@ -29,7 +29,7 @@ import javax.inject.Inject;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Item Prices", name = "Item Prices",
@@ -38,7 +38,8 @@ import net.runelite.client.ui.overlay.Overlay;
public class ItemPricesPlugin extends Plugin public class ItemPricesPlugin extends Plugin
{ {
@Inject @Inject
private ItemPricesConfig config; private OverlayManager overlayManager;
@Inject @Inject
private ItemPricesOverlay overlay; private ItemPricesOverlay overlay;
@@ -49,8 +50,14 @@ public class ItemPricesPlugin extends Plugin
} }
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return overlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
} }

View File

@@ -29,13 +29,16 @@ import com.google.inject.Provides;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Item Stats" name = "Item Stats"
) )
public class ItemStatPlugin extends Plugin public class ItemStatPlugin extends Plugin
{ {
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private ItemStatOverlay overlay; private ItemStatOverlay overlay;
@@ -46,8 +49,14 @@ public class ItemStatPlugin extends Plugin
} }
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return overlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
} }

View File

@@ -47,7 +47,7 @@ import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.NavigationButton; import net.runelite.client.ui.NavigationButton;
import net.runelite.client.ui.PluginToolbar; import net.runelite.client.ui.PluginToolbar;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Kourend Library" name = "Kourend Library"
@@ -66,6 +66,9 @@ public class KourendLibraryPlugin extends Plugin
@Inject @Inject
private Library library; private Library library;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private KourendLibraryOverlay overlay; private KourendLibraryOverlay overlay;
@@ -81,6 +84,7 @@ public class KourendLibraryPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
Book.fillImages(itemManager); Book.fillImages(itemManager);
panel = injector.getInstance(KourendLibraryPanel.class); panel = injector.getInstance(KourendLibraryPanel.class);
@@ -105,15 +109,10 @@ public class KourendLibraryPlugin extends Plugin
@Override @Override
protected void shutDown() protected void shutDown()
{ {
overlayManager.remove(overlay);
pluginToolbar.removeNavigation(navButton); pluginToolbar.removeNavigation(navButton);
} }
@Override
public Overlay getOverlay()
{
return overlay;
}
@Subscribe @Subscribe
private void onMenuOptionClicked(MenuOptionClicked menuOpt) private void onMenuOptionClicked(MenuOptionClicked menuOpt)
{ {

View File

@@ -32,8 +32,6 @@ import com.google.inject.Provides;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import javax.inject.Inject; import javax.inject.Inject;
@@ -72,7 +70,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Motherlode Mine", name = "Motherlode Mine",
@@ -91,6 +89,9 @@ public class MotherlodePlugin extends Plugin
private static final int UPPER_FLOOR_HEIGHT = -500; private static final int UPPER_FLOOR_HEIGHT = -500;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private MotherlodeOverlay overlay; private MotherlodeOverlay overlay;
@@ -132,15 +133,14 @@ public class MotherlodePlugin extends Plugin
return configManager.getConfig(MotherlodeConfig.class); return configManager.getConfig(MotherlodeConfig.class);
} }
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(overlay, rocksOverlay, motherlodeSackOverlay, motherlodeGemOverlay);
}
@Override @Override
protected void startUp() protected void startUp()
{ {
overlayManager.add(overlay);
overlayManager.add(rocksOverlay);
overlayManager.add(motherlodeGemOverlay);
overlayManager.add(motherlodeSackOverlay);
session = new MotherlodeSession(); session = new MotherlodeSession();
inMlm = checkInMlm(); inMlm = checkInMlm();
@@ -153,6 +153,10 @@ public class MotherlodePlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
overlayManager.remove(rocksOverlay);
overlayManager.remove(motherlodeGemOverlay);
overlayManager.remove(motherlodeSackOverlay);
session = null; session = null;
veins.clear(); veins.clear();
rocks.clear(); rocks.clear();

View File

@@ -29,13 +29,16 @@ import javax.inject.Inject;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Mouse Tooltips" name = "Mouse Tooltips"
) )
public class MouseHighlightPlugin extends Plugin public class MouseHighlightPlugin extends Plugin
{ {
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private MouseHighlightOverlay overlay; private MouseHighlightOverlay overlay;
@@ -46,8 +49,14 @@ public class MouseHighlightPlugin extends Plugin
} }
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return overlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
} }

View File

@@ -39,7 +39,7 @@ import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@PluginDescriptor( @PluginDescriptor(
@@ -53,6 +53,9 @@ public class NightmareZonePlugin extends Plugin
@Inject @Inject
private Client client; private Client client;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private NightmareZoneConfig config; private NightmareZoneConfig config;
@@ -64,8 +67,16 @@ public class NightmareZonePlugin extends Plugin
private boolean absorptionNotificationSend = true; private boolean absorptionNotificationSend = true;
@Override @Override
protected void shutDown() protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
overlay.removeAbsorptionCounter();
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
overlay.removeAbsorptionCounter(); overlay.removeAbsorptionCounter();
} }
@@ -81,12 +92,6 @@ public class NightmareZonePlugin extends Plugin
return configManager.getConfig(NightmareZoneConfig.class); return configManager.getConfig(NightmareZoneConfig.class);
} }
@Override
public Overlay getOverlay()
{
return overlay;
}
@Subscribe @Subscribe
public void onGameTick(GameTick event) public void onGameTick(GameTick event)
{ {

View File

@@ -30,8 +30,6 @@ import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
@@ -62,7 +60,7 @@ import net.runelite.client.input.KeyManager;
import net.runelite.client.menus.MenuManager; import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.WildcardMatcher; import net.runelite.client.util.WildcardMatcher;
@PluginDescriptor(name = "NPC Indicators") @PluginDescriptor(name = "NPC Indicators")
@@ -85,6 +83,9 @@ public class NpcIndicatorsPlugin extends Plugin
@Inject @Inject
private NpcIndicatorsConfig config; private NpcIndicatorsConfig config;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private NpcSceneOverlay npcSceneOverlay; private NpcSceneOverlay npcSceneOverlay;
@@ -174,6 +175,8 @@ public class NpcIndicatorsPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(npcSceneOverlay);
overlayManager.add(npcMinimapOverlay);
keyManager.registerKeyListener(inputListener); keyManager.registerKeyListener(inputListener);
highlights = getHighlights(); highlights = getHighlights();
clientThread.invokeLater(() -> clientThread.invokeLater(() ->
@@ -186,6 +189,8 @@ public class NpcIndicatorsPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(npcSceneOverlay);
overlayManager.remove(npcMinimapOverlay);
deadNpcsToDisplay.clear(); deadNpcsToDisplay.clear();
memorizedNpcs.clear(); memorizedNpcs.clear();
spawnedNpcsThisTick.clear(); spawnedNpcsThisTick.clear();
@@ -321,12 +326,6 @@ public class NpcIndicatorsPlugin extends Plugin
lastPlayerLocation = client.getLocalPlayer().getWorldLocation(); lastPlayerLocation = client.getLocalPlayer().getWorldLocation();
} }
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(npcSceneOverlay, npcMinimapOverlay);
}
private static boolean isInViewRange(WorldPoint wp1, WorldPoint wp2) private static boolean isInViewRange(WorldPoint wp1, WorldPoint wp2)
{ {
int distance = wp1.distanceTo(wp2); int distance = wp1.distanceTo(wp2);

View File

@@ -41,7 +41,7 @@ import net.runelite.api.WorldType;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.http.api.hiscore.HiscoreEndpoint; import net.runelite.http.api.hiscore.HiscoreEndpoint;
@PluginDescriptor( @PluginDescriptor(
@@ -52,6 +52,9 @@ public class OpponentInfoPlugin extends Plugin
@Inject @Inject
private Client client; private Client client;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private OpponentInfoOverlay overlay; private OpponentInfoOverlay overlay;
@@ -59,9 +62,15 @@ public class OpponentInfoPlugin extends Plugin
private HiscoreEndpoint hiscoreEndpoint = HiscoreEndpoint.NORMAL; private HiscoreEndpoint hiscoreEndpoint = HiscoreEndpoint.NORMAL;
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return overlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
@Subscribe @Subscribe

View File

@@ -27,19 +27,28 @@ package net.runelite.client.plugins.pestcontrol;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Pest Control" name = "Pest Control"
) )
public class PestControlPlugin extends Plugin public class PestControlPlugin extends Plugin
{ {
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private PestControlOverlay overlay; private PestControlOverlay overlay;
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return overlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
} }

View File

@@ -24,27 +24,14 @@
*/ */
package net.runelite.client.plugins.playerindicators; package net.runelite.client.plugins.playerindicators;
import com.google.common.collect.Sets;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.awt.Color; import java.awt.Color;
import java.util.Collection;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.ClanMemberRank; import net.runelite.api.ClanMemberRank;
import static net.runelite.api.ClanMemberRank.UNRANKED; import static net.runelite.api.ClanMemberRank.UNRANKED;
import net.runelite.api.Client; import net.runelite.api.Client;
import static net.runelite.api.MenuAction.FOLLOW; import static net.runelite.api.MenuAction.*;
import static net.runelite.api.MenuAction.ITEM_USE_ON_PLAYER;
import static net.runelite.api.MenuAction.PLAYER_EIGTH_OPTION;
import static net.runelite.api.MenuAction.PLAYER_FIFTH_OPTION;
import static net.runelite.api.MenuAction.PLAYER_FIRST_OPTION;
import static net.runelite.api.MenuAction.PLAYER_FOURTH_OPTION;
import static net.runelite.api.MenuAction.PLAYER_SECOND_OPTION;
import static net.runelite.api.MenuAction.PLAYER_SEVENTH_OPTION;
import static net.runelite.api.MenuAction.PLAYER_SIXTH_OPTION;
import static net.runelite.api.MenuAction.PLAYER_THIRD_OPTION;
import static net.runelite.api.MenuAction.SPELL_CAST_ON_PLAYER;
import static net.runelite.api.MenuAction.TRADE;
import net.runelite.api.MenuEntry; import net.runelite.api.MenuEntry;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuEntryAdded;
@@ -52,13 +39,16 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.game.ClanManager; import net.runelite.client.game.ClanManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Player Indicators" name = "Player Indicators"
) )
public class PlayerIndicatorsPlugin extends Plugin public class PlayerIndicatorsPlugin extends Plugin
{ {
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private PlayerIndicatorsConfig config; private PlayerIndicatorsConfig config;
@@ -81,9 +71,17 @@ public class PlayerIndicatorsPlugin extends Plugin
} }
@Override @Override
public Collection<Overlay> getOverlays() protected void startUp() throws Exception
{ {
return Sets.newHashSet(playerIndicatorsOverlay, playerIndicatorsMinimapOverlay); overlayManager.add(playerIndicatorsOverlay);
overlayManager.add(playerIndicatorsMinimapOverlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(playerIndicatorsOverlay);
overlayManager.remove(playerIndicatorsMinimapOverlay);
} }
@Subscribe @Subscribe

View File

@@ -27,8 +27,6 @@ package net.runelite.client.plugins.poh;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@@ -55,7 +53,7 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Player-owned House" name = "Player-owned House"
@@ -68,6 +66,9 @@ public class PohPlugin extends Plugin
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private final Map<TileObject, Tile> pohObjects = new HashMap<>(); private final Map<TileObject, Tile> pohObjects = new HashMap<>();
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private PohOverlay overlay; private PohOverlay overlay;
@@ -80,21 +81,19 @@ public class PohPlugin extends Plugin
return configManager.getConfig(PohConfig.class); return configManager.getConfig(PohConfig.class);
} }
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(overlay, burnerOverlay);
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
overlayManager.add(burnerOverlay);
overlay.updateConfig(); overlay.updateConfig();
} }
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
overlayManager.remove(burnerOverlay);
pohObjects.clear(); pohObjects.clear();
} }

View File

@@ -36,7 +36,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.game.SpriteManager; import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor( @PluginDescriptor(
@@ -55,6 +55,9 @@ public class PrayerPlugin extends Plugin
@Inject @Inject
private SpriteManager spriteManager; private SpriteManager spriteManager;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private PrayerFlickOverlay overlay; private PrayerFlickOverlay overlay;
@@ -68,15 +71,16 @@ public class PrayerPlugin extends Plugin
} }
@Override @Override
protected void shutDown() protected void startUp()
{ {
removeIndicators(); overlayManager.add(overlay);
} }
@Override @Override
public Overlay getOverlay() protected void shutDown()
{ {
return overlay; overlayManager.remove(overlay);
removeIndicators();
} }
@Subscribe @Subscribe

View File

@@ -26,11 +26,11 @@
package net.runelite.client.plugins.puzzlesolver; package net.runelite.client.plugins.puzzlesolver;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Puzzle Solver" name = "Puzzle Solver"
@@ -38,10 +38,10 @@ import net.runelite.client.plugins.PluginDescriptor;
public class PuzzleSolverPlugin extends Plugin public class PuzzleSolverPlugin extends Plugin
{ {
@Inject @Inject
private PuzzleSolverOverlay puzzleSolverOverlay; private OverlayManager overlayManager;
@Inject @Inject
private ScheduledExecutorService executorService; private PuzzleSolverOverlay overlay;
@Provides @Provides
PuzzleSolverConfig provideConfig(ConfigManager configManager) PuzzleSolverConfig provideConfig(ConfigManager configManager)
@@ -50,8 +50,14 @@ public class PuzzleSolverPlugin extends Plugin
} }
@Override @Override
public PuzzleSolverOverlay getOverlay() protected void startUp() throws Exception
{ {
return puzzleSolverOverlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
} }

View File

@@ -33,7 +33,6 @@ import java.text.DecimalFormat;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
@@ -66,7 +65,7 @@ import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.raids.solver.Layout; import net.runelite.client.plugins.raids.solver.Layout;
import net.runelite.client.plugins.raids.solver.LayoutSolver; import net.runelite.client.plugins.raids.solver.LayoutSolver;
import net.runelite.client.plugins.raids.solver.RotationSolver; import net.runelite.client.plugins.raids.solver.RotationSolver;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@@ -81,7 +80,7 @@ public class RaidsPlugin extends Plugin
private static final String LEVEL_COMPLETE_MESSAGE = "level complete!"; private static final String LEVEL_COMPLETE_MESSAGE = "level complete!";
private static final String RAID_COMPLETE_MESSAGE = "Congratulations - your raid is complete!"; private static final String RAID_COMPLETE_MESSAGE = "Congratulations - your raid is complete!";
private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("###.##"); private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("###.##");
public static final DecimalFormat POINTS_FORMAT = new DecimalFormat("#,###"); static final DecimalFormat POINTS_FORMAT = new DecimalFormat("#,###");
private static final String SPLIT_REGEX = "\\s*,\\s*"; private static final String SPLIT_REGEX = "\\s*,\\s*";
private static final Pattern ROTATION_REGEX = Pattern.compile("\\[(.*?)\\]"); private static final Pattern ROTATION_REGEX = Pattern.compile("\\[(.*?)\\]");
@@ -103,6 +102,9 @@ public class RaidsPlugin extends Plugin
@Inject @Inject
private RaidsConfig config; private RaidsConfig config;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private RaidsOverlay overlay; private RaidsOverlay overlay;
@@ -139,15 +141,12 @@ public class RaidsPlugin extends Plugin
binder.bind(RaidsOverlay.class); binder.bind(RaidsOverlay.class);
} }
@Override
public List<Overlay> getOverlays()
{
return Arrays.asList(overlay, pointsOverlay);
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
overlayManager.add(pointsOverlay);
if (client.getGameState() == GameState.LOGGED_IN) if (client.getGameState() == GameState.LOGGED_IN)
{ {
inRaidChambers = client.getVar(Varbits.IN_RAID) == 1; inRaidChambers = client.getVar(Varbits.IN_RAID) == 1;
@@ -160,6 +159,9 @@ public class RaidsPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
overlayManager.remove(pointsOverlay);
if (timer != null) if (timer != null)
{ {
infoBoxManager.removeInfoBox(timer); infoBoxManager.removeInfoBox(timer);

View File

@@ -33,15 +33,15 @@ import lombok.Getter;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Prayer; import net.runelite.api.Prayer;
import net.runelite.api.VarPlayer;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.api.VarPlayer;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(name = "Regeneration Meter") @PluginDescriptor(name = "Regeneration Meter")
public class RegenMeterPlugin extends Plugin public class RegenMeterPlugin extends Plugin
@@ -49,34 +49,27 @@ public class RegenMeterPlugin extends Plugin
private static final int SPEC_REGEN_TICKS = 50; private static final int SPEC_REGEN_TICKS = 50;
private static final int NORMAL_HP_REGEN_TICKS = 100; private static final int NORMAL_HP_REGEN_TICKS = 100;
@Inject
private RegenMeterOverlay overlay;
@Inject @Inject
private Client client; private Client client;
@Inject @Inject
RegenMeterConfig config; private OverlayManager overlayManager;
@Inject
private RegenMeterOverlay overlay;
private int ticksSinceHPRegen; @Inject
private RegenMeterConfig config;
private boolean wasRapidHeal;
@Getter @Getter
private double hitpointsPercentage; private double hitpointsPercentage;
private int ticksSinceSpecRegen;
@Getter @Getter
private double specialPercentage; private double specialPercentage;
@Override private int ticksSinceSpecRegen;
public Overlay getOverlay() private int ticksSinceHPRegen;
{ private boolean wasRapidHeal;
return overlay;
}
@Provides @Provides
RegenMeterConfig provideConfig(ConfigManager configManager) RegenMeterConfig provideConfig(ConfigManager configManager)
@@ -84,6 +77,18 @@ public class RegenMeterPlugin extends Plugin
return configManager.getConfig(RegenMeterConfig.class); return configManager.getConfig(RegenMeterConfig.class);
} }
@Override
protected void startUp() throws Exception
{
overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
}
@Subscribe @Subscribe
private void onGameStateChanged(GameStateChanged ev) private void onGameStateChanged(GameStateChanged ev)
{ {

View File

@@ -49,6 +49,7 @@ import net.runelite.api.events.GroundObjectSpawned;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Rogues' Den" name = "Rogues' Den"
@@ -69,12 +70,21 @@ public class RoguesDenPlugin extends Plugin
private Client client; private Client client;
@Inject @Inject
@Getter private OverlayManager overlayManager;
@Inject
private RoguesDenOverlay overlay; private RoguesDenOverlay overlay;
@Override @Override
protected void shutDown() protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
obstaclesHull.clear(); obstaclesHull.clear();
obstaclesTile.clear(); obstaclesTile.clear();
hasGem = false; hasGem = false;

View File

@@ -26,8 +26,6 @@ package net.runelite.client.plugins.runecraft;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@@ -35,7 +33,15 @@ import java.util.regex.Pattern;
import javax.inject.Inject; import javax.inject.Inject;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;
import net.runelite.api.*; import net.runelite.api.ChatMessageType;
import net.runelite.api.DecorativeObject;
import net.runelite.api.GameState;
import net.runelite.api.InventoryID;
import net.runelite.api.Item;
import net.runelite.api.ItemID;
import net.runelite.api.NPC;
import net.runelite.api.NpcID;
import net.runelite.api.Query;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.DecorativeObjectDespawned; import net.runelite.api.events.DecorativeObjectDespawned;
@@ -47,7 +53,7 @@ import net.runelite.api.queries.NPCQuery;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.QueryRunner; import net.runelite.client.util.QueryRunner;
@PluginDescriptor( @PluginDescriptor(
@@ -66,6 +72,9 @@ public class RunecraftPlugin extends Plugin
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private NPC darkMage; private NPC darkMage;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private RunecraftOverlay overlay; private RunecraftOverlay overlay;
@@ -87,21 +96,21 @@ public class RunecraftPlugin extends Plugin
return configManager.getConfig(RunecraftConfig.class); return configManager.getConfig(RunecraftConfig.class);
} }
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(overlay, bindNeckOverlay, abyssOverlay);
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
overlayManager.add(bindNeckOverlay);
overlayManager.add(abyssOverlay);
abyssOverlay.updateConfig(); abyssOverlay.updateConfig();
} }
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
overlayManager.remove(bindNeckOverlay);
overlayManager.remove(abyssOverlay);
abyssObjects.clear(); abyssObjects.clear();
darkMage = null; darkMage = null;
degradedPouchInInventory = false; degradedPouchInInventory = false;

View File

@@ -29,7 +29,7 @@ import javax.inject.Inject;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Rune Pouch" name = "Rune Pouch"
@@ -37,7 +37,7 @@ import net.runelite.client.ui.overlay.Overlay;
public class RunepouchPlugin extends Plugin public class RunepouchPlugin extends Plugin
{ {
@Inject @Inject
private ConfigManager configManager; private OverlayManager overlayManager;
@Inject @Inject
private RunepouchOverlay overlay; private RunepouchOverlay overlay;
@@ -49,8 +49,14 @@ public class RunepouchPlugin extends Plugin
} }
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return overlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
} }

View File

@@ -36,7 +36,6 @@ import java.awt.Rectangle;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -53,8 +52,7 @@ import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.screenmarkers.ui.ScreenMarkerPluginPanel; import net.runelite.client.plugins.screenmarkers.ui.ScreenMarkerPluginPanel;
import net.runelite.client.ui.NavigationButton; import net.runelite.client.ui.NavigationButton;
import net.runelite.client.ui.PluginToolbar; import net.runelite.client.ui.PluginToolbar;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.OverlayRenderer;
@PluginDescriptor( @PluginDescriptor(
name = "Screen Markers" name = "Screen Markers"
@@ -82,10 +80,10 @@ public class ScreenMarkerPlugin extends Plugin
private PluginToolbar pluginToolbar; private PluginToolbar pluginToolbar;
@Inject @Inject
private ScreenMarkerCreationOverlay overlay; private OverlayManager overlayManager;
@Inject @Inject
private OverlayRenderer overlayRenderer; private ScreenMarkerCreationOverlay overlay;
private ScreenMarkerMouseListener mouseListener; private ScreenMarkerMouseListener mouseListener;
private ScreenMarkerPluginPanel pluginPanel; private ScreenMarkerPluginPanel pluginPanel;
@@ -98,20 +96,12 @@ public class ScreenMarkerPlugin extends Plugin
private boolean creatingScreenMarker = false; private boolean creatingScreenMarker = false;
private Point startLocation = null; private Point startLocation = null;
@Override
public Collection<Overlay> getOverlays()
{
final List<Overlay> overlays = new ArrayList<>();
overlays.add(overlay);
overlays.addAll(screenMarkers);
return overlays;
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
loadConfig(configManager.getConfiguration(CONFIG_GROUP, CONFIG_KEY)).forEach(screenMarkers::add); loadConfig(configManager.getConfiguration(CONFIG_GROUP, CONFIG_KEY)).forEach(screenMarkers::add);
overlayRenderer.rebuildOverlays(); screenMarkers.forEach(overlayManager::add);
pluginPanel = injector.getInstance(ScreenMarkerPluginPanel.class); pluginPanel = injector.getInstance(ScreenMarkerPluginPanel.class);
pluginPanel.init(); pluginPanel.init();
@@ -137,10 +127,12 @@ public class ScreenMarkerPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
overlayManager.removeIf(ScreenMarkerOverlay.class::isInstance);
screenMarkers.clear();;
pluginToolbar.removeNavigation(navigationButton); pluginToolbar.removeNavigation(navigationButton);
setMouseListenerEnabled(false); setMouseListenerEnabled(false);
creatingScreenMarker = false; creatingScreenMarker = false;
screenMarkers.clear();
pluginPanel = null; pluginPanel = null;
currentMarker = null; currentMarker = null;
@@ -154,7 +146,8 @@ public class ScreenMarkerPlugin extends Plugin
if (screenMarkers.isEmpty() && event.getGroup().equals(CONFIG_GROUP) && event.getKey().equals(CONFIG_KEY)) if (screenMarkers.isEmpty() && event.getGroup().equals(CONFIG_GROUP) && event.getKey().equals(CONFIG_KEY))
{ {
loadConfig(event.getNewValue()).forEach(screenMarkers::add); loadConfig(event.getNewValue()).forEach(screenMarkers::add);
overlayRenderer.rebuildOverlays(); overlayManager.removeIf(ScreenMarkerOverlay.class::isInstance);
screenMarkers.forEach(overlayManager::add);
} }
} }
@@ -197,10 +190,10 @@ public class ScreenMarkerPlugin extends Plugin
screenMarkerOverlay.setPreferredSize(overlay.getBounds().getSize()); screenMarkerOverlay.setPreferredSize(overlay.getBounds().getSize());
screenMarkers.add(screenMarkerOverlay); screenMarkers.add(screenMarkerOverlay);
overlayManager.add(screenMarkerOverlay);
overlayManager.saveOverlay(screenMarkerOverlay);
pluginPanel.rebuild(); pluginPanel.rebuild();
updateConfig(); updateConfig();
overlayRenderer.saveOverlay(screenMarkerOverlay);
overlayRenderer.rebuildOverlays();
} }
creatingScreenMarker = false; creatingScreenMarker = false;
@@ -219,11 +212,11 @@ public class ScreenMarkerPlugin extends Plugin
public void deleteMarker(final ScreenMarkerOverlay marker) public void deleteMarker(final ScreenMarkerOverlay marker)
{ {
overlayRenderer.resetOverlay(marker);
screenMarkers.remove(marker); screenMarkers.remove(marker);
overlayManager.remove(marker);
overlayManager.resetOverlay(marker);
pluginPanel.rebuild(); pluginPanel.rebuild();
updateConfig(); updateConfig();
overlayRenderer.rebuildOverlays();
} }
void resizeMarker(Point point) void resizeMarker(Point point)

View File

@@ -81,7 +81,7 @@ import net.runelite.client.ui.ClientUI;
import net.runelite.client.ui.DrawManager; import net.runelite.client.ui.DrawManager;
import net.runelite.client.ui.NavigationButton; import net.runelite.client.ui.NavigationButton;
import net.runelite.client.ui.TitleToolbar; import net.runelite.client.ui.TitleToolbar;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
import net.runelite.http.api.RuneLiteAPI; import net.runelite.http.api.RuneLiteAPI;
import okhttp3.Call; import okhttp3.Call;
@@ -126,6 +126,9 @@ public class ScreenshotPlugin extends Plugin
@Inject @Inject
private ScreenshotConfig config; private ScreenshotConfig config;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private ScreenshotOverlay screenshotOverlay; private ScreenshotOverlay screenshotOverlay;
@@ -161,15 +164,10 @@ public class ScreenshotPlugin extends Plugin
return configManager.getConfig(ScreenshotConfig.class); return configManager.getConfig(ScreenshotConfig.class);
} }
@Override
public Overlay getOverlay()
{
return screenshotOverlay;
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(screenshotOverlay);
SCREENSHOT_DIR.mkdirs(); SCREENSHOT_DIR.mkdirs();
keyManager.registerKeyListener(inputListener); keyManager.registerKeyListener(inputListener);
@@ -213,6 +211,7 @@ public class ScreenshotPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(screenshotOverlay);
titleToolbar.removeNavigation(titleBarButton); titleToolbar.removeNavigation(titleBarButton);
keyManager.unregisterKeyListener(inputListener); keyManager.unregisterKeyListener(inputListener);
} }

View File

@@ -69,7 +69,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.util.QueryRunner; import net.runelite.client.util.QueryRunner;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@@ -112,6 +112,9 @@ public class SlayerPlugin extends Plugin
@Inject @Inject
private SlayerConfig config; private SlayerConfig config;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private SlayerOverlay overlay; private SlayerOverlay overlay;
@@ -142,30 +145,46 @@ public class SlayerPlugin extends Plugin
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private Collection<WidgetItem> slayerItems = Collections.emptyList(); private Collection<WidgetItem> slayerItems = Collections.emptyList();
private String taskName; @Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
private int amount; private int amount;
private TaskCounter counter;
private int streak;
private int points;
private int cachedXp;
private Instant infoTimer;
private boolean loginFlag;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE) @Setter(AccessLevel.PACKAGE)
private int expeditiousChargeCount; private int expeditiousChargeCount;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE) @Setter(AccessLevel.PACKAGE)
private int slaughterChargeCount; private int slaughterChargeCount;
@Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
private String taskName;
@Getter(AccessLevel.PACKAGE)
private int streak;
@Getter(AccessLevel.PACKAGE)
private int points;
private TaskCounter counter;
private int cachedXp;
private Instant infoTimer;
private boolean loginFlag;
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
overlayManager.add(overlay);
overlayManager.add(targetClickboxOverlay);
overlayManager.add(targetMinimapOverlay);
if (client.getGameState() == GameState.LOGGED_IN if (client.getGameState() == GameState.LOGGED_IN
&& config.amount() != -1 && config.amount() != -1
&& !config.taskName().isEmpty()) && !config.taskName().isEmpty())
{ {
setPoints(config.points()); points = config.points();
setStreak(config.streak()); streak = config.streak();
setExpeditiousChargeCount(config.expeditious()); setExpeditiousChargeCount(config.expeditious());
setSlaughterChargeCount(config.slaughter()); setSlaughterChargeCount(config.slaughter());
clientThread.invokeLater(() -> setTask(config.taskName(), config.amount())); clientThread.invokeLater(() -> setTask(config.taskName(), config.amount()));
@@ -175,6 +194,9 @@ public class SlayerPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
overlayManager.remove(targetClickboxOverlay);
overlayManager.remove(targetMinimapOverlay);
removeCounter(); removeCounter();
} }
@@ -199,10 +221,10 @@ public class SlayerPlugin extends Plugin
case LOGGED_IN: case LOGGED_IN:
if (config.amount() != -1 if (config.amount() != -1
&& !config.taskName().isEmpty() && !config.taskName().isEmpty()
&& loginFlag == true) && loginFlag)
{ {
setPoints(config.points()); points = config.points();
setStreak(config.streak()); streak = config.streak();
setExpeditiousChargeCount(config.expeditious()); setExpeditiousChargeCount(config.expeditious());
setSlaughterChargeCount(config.slaughter()); setSlaughterChargeCount(config.slaughter());
setTask(config.taskName(), config.amount()); setTask(config.taskName(), config.amount());
@@ -572,53 +594,6 @@ public class SlayerPlugin extends Plugin
return composition; return composition;
} }
//Getters
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(overlay, targetClickboxOverlay, targetMinimapOverlay);
}
public String getTaskName()
{
return taskName;
}
void setTaskName(String taskName)
{
this.taskName = taskName;
}
public int getAmount()
{
return amount;
}
void setAmount(int amount)
{
this.amount = amount;
}
public int getStreak()
{
return streak;
}
void setStreak(int streak)
{
this.streak = streak;
}
public int getPoints()
{
return points;
}
void setPoints(int points)
{
this.points = points;
}
//Utils //Utils
private String capsString(String str) private String capsString(String str)
{ {

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.teamcapes; package net.runelite.client.plugins.teamcapes;
import com.google.inject.Provides;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
@@ -32,7 +33,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.inject.Inject; import javax.inject.Inject;
import com.google.inject.Provides;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Player; import net.runelite.api.Player;
@@ -40,7 +40,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Team Capes", name = "Team Capes",
@@ -52,10 +52,10 @@ public class TeamCapesPlugin extends Plugin
private Client client; private Client client;
@Inject @Inject
private TeamCapesConfig config; private OverlayManager overlayManager;
@Inject @Inject
private TeamCapesOverlay teamCapesOverlay; private TeamCapesOverlay overlay;
// Hashmap of team capes: Key is the teamCape #, Value is the count of teamcapes in the area. // Hashmap of team capes: Key is the teamCape #, Value is the count of teamcapes in the area.
private Map<Integer, Integer> teams = new HashMap<>(); private Map<Integer, Integer> teams = new HashMap<>();
@@ -67,14 +67,15 @@ public class TeamCapesPlugin extends Plugin
} }
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return teamCapesOverlay; overlayManager.add(overlay);
} }
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
teams.clear(); teams.clear();
} }

View File

@@ -27,6 +27,7 @@ package net.runelite.client.plugins.tileindicators;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Polygon; import java.awt.Polygon;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.LocalPoint;
@@ -41,7 +42,8 @@ public class TileIndicatorsOverlay extends Overlay
private final Client client; private final Client client;
private final TileIndicatorsConfig config; private final TileIndicatorsConfig config;
TileIndicatorsOverlay(Client client, TileIndicatorsConfig config) @Inject
private TileIndicatorsOverlay(Client client, TileIndicatorsConfig config)
{ {
this.client = client; this.client = client;
this.config = config; this.config = config;

View File

@@ -26,11 +26,10 @@ package net.runelite.client.plugins.tileindicators;
import com.google.inject.Provides; import com.google.inject.Provides;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Tile Indicators", name = "Tile Indicators",
@@ -39,12 +38,10 @@ import net.runelite.client.ui.overlay.Overlay;
public class TileIndicatorsPlugin extends Plugin public class TileIndicatorsPlugin extends Plugin
{ {
@Inject @Inject
private Client client; private OverlayManager overlayManager;
@Inject @Inject
private TileIndicatorsConfig config; private TileIndicatorsOverlay overlay;
private TileIndicatorsOverlay tileIndicatorsOverlay;
@Provides @Provides
TileIndicatorsConfig provideConfig(ConfigManager configManager) TileIndicatorsConfig provideConfig(ConfigManager configManager)
@@ -55,12 +52,12 @@ public class TileIndicatorsPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
tileIndicatorsOverlay = new TileIndicatorsOverlay(client, config); overlayManager.add(overlay);
} }
@Override @Override
public Overlay getOverlay() protected void shutDown() throws Exception
{ {
return tileIndicatorsOverlay; overlayManager.remove(overlay);
} }
} }

View File

@@ -26,8 +26,6 @@ package net.runelite.client.plugins.tithefarm;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import javax.inject.Inject; import javax.inject.Inject;
@@ -41,7 +39,7 @@ import net.runelite.api.events.GameTick;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@Slf4j @Slf4j
@PluginDescriptor( @PluginDescriptor(
@@ -49,6 +47,9 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class TitheFarmPlugin extends Plugin public class TitheFarmPlugin extends Plugin
{ {
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private TitheFarmPlantOverlay titheFarmOverlay; private TitheFarmPlantOverlay titheFarmOverlay;
@@ -65,15 +66,18 @@ public class TitheFarmPlugin extends Plugin
} }
@Override @Override
public Collection<Overlay> getOverlays() protected void startUp() throws Exception
{ {
return Arrays.asList(titheFarmOverlay, titheFarmSackOverlay); overlayManager.add(titheFarmOverlay);
overlayManager.add(titheFarmSackOverlay);
titheFarmOverlay.updateConfig();
} }
@Override @Override
public void startUp() throws Exception protected void shutDown() throws Exception
{ {
titheFarmOverlay.updateConfig(); overlayManager.remove(titheFarmOverlay);
overlayManager.remove(titheFarmSackOverlay);
} }
@Subscribe @Subscribe

View File

@@ -28,8 +28,6 @@ import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import javax.inject.Inject; import javax.inject.Inject;
@@ -52,7 +50,7 @@ import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency; import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.xptracker.XpTrackerPlugin; import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "Woodcutting" name = "Woodcutting"
@@ -66,6 +64,9 @@ public class WoodcuttingPlugin extends Plugin
@Inject @Inject
private Client client; private Client client;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private WoodcuttingOverlay overlay; private WoodcuttingOverlay overlay;
@@ -91,14 +92,17 @@ public class WoodcuttingPlugin extends Plugin
} }
@Override @Override
public Collection<Overlay> getOverlays() protected void startUp() throws Exception
{ {
return Arrays.asList(overlay, treesOverlay); overlayManager.add(overlay);
overlayManager.add(treesOverlay);
} }
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
overlayManager.remove(overlay);
overlayManager.remove(treesOverlay);
treeObjects.clear(); treeObjects.clear();
session = null; session = null;
axe = null; axe = null;

View File

@@ -43,7 +43,7 @@ import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.xptracker.XpTrackerPlugin; import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor( @PluginDescriptor(
name = "XP Globes" name = "XP Globes"
@@ -62,6 +62,9 @@ public class XpGlobesPlugin extends Plugin
@Inject @Inject
private XpGlobesConfig config; private XpGlobesConfig config;
@Inject
private OverlayManager overlayManager;
@Inject @Inject
private XpGlobesOverlay overlay; private XpGlobesOverlay overlay;
@@ -72,9 +75,15 @@ public class XpGlobesPlugin extends Plugin
} }
@Override @Override
public Overlay getOverlay() protected void startUp() throws Exception
{ {
return overlay; overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
} }
@Subscribe @Subscribe

View File

@@ -0,0 +1,291 @@
/*
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.ui.overlay;
import com.google.common.annotations.VisibleForTesting;
import java.awt.Dimension;
import java.awt.Point;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Predicate;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.Getter;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig;
/**
* Manages state of all game overlays
*/
@Singleton
public class OverlayManager
{
private static final String OVERLAY_CONFIG_PREFERRED_LOCATION = "_preferredLocation";
private static final String OVERLAY_CONFIG_PREFERRED_POSITION = "_preferredPosition";
private static final String OVERLAY_CONFIG_PREFERRED_SIZE = "_preferredSize";
private static final String RUNELITE_CONFIG_GROUP_NAME = RuneLiteConfig.class.getAnnotation(ConfigGroup.class).keyName();
@Getter
private final List<Overlay> overlays = new CopyOnWriteArrayList<>();
@Getter
private final Map<OverlayLayer, List<Overlay>> overlayLayers = new ConcurrentHashMap<>();
private final ConfigManager configManager;
@Inject
private OverlayManager(final ConfigManager configManager)
{
this.configManager = configManager;
}
/**
* Add overlay.
*
* @param overlay the overlay
* @return true if overlay was added
*/
public boolean add(final Overlay overlay)
{
final boolean add = overlays.add(overlay);
if (add)
{
final Point location = loadOverlayLocation(overlay);
overlay.setPreferredLocation(location);
final Dimension size = loadOverlaySize(overlay);
overlay.setPreferredSize(size);
final OverlayPosition position = loadOverlayPosition(overlay);
overlay.setPreferredPosition(position);
sortOverlays(overlays);
rebuildOverlayLayers();
}
return add;
}
/**
* Remove overlay.
*
* @param overlay the overlay
* @return true if overlay was removed
*/
public boolean remove(final Overlay overlay)
{
final boolean remove = overlays.remove(overlay);
if (remove)
{
sortOverlays(overlays);
rebuildOverlayLayers();
}
return remove;
}
/**
* Remove if overlay matches filter
*
* @param filter the filter
* @return true if any overlay was removed
*/
public boolean removeIf(Predicate<Overlay> filter)
{
final boolean removeIf = overlays.removeIf(filter);
sortOverlays(overlays);
rebuildOverlayLayers();
return removeIf;
}
/**
* Clear all overlays
*/
public void clear()
{
overlays.clear();
sortOverlays(overlays);
rebuildOverlayLayers();
}
/**
* Force save overlay data
*
* @param overlay overlay to save
*/
public void saveOverlay(final Overlay overlay)
{
saveOverlayPosition(overlay);
saveOverlaySize(overlay);
saveOverlayLocation(overlay);
sortOverlays(overlays);
rebuildOverlayLayers();
}
/**
* Resets stored overlay position data
*
* @param overlay overlay to reset
*/
public void resetOverlay(final Overlay overlay)
{
final String locationKey = overlay.getName() + OVERLAY_CONFIG_PREFERRED_LOCATION;
final String positionKey = overlay.getName() + OVERLAY_CONFIG_PREFERRED_POSITION;
final String sizeKey = overlay.getName() + OVERLAY_CONFIG_PREFERRED_SIZE;
configManager.unsetConfiguration(RUNELITE_CONFIG_GROUP_NAME, locationKey);
configManager.unsetConfiguration(RUNELITE_CONFIG_GROUP_NAME, positionKey);
configManager.unsetConfiguration(RUNELITE_CONFIG_GROUP_NAME, sizeKey);
sortOverlays(overlays);
rebuildOverlayLayers();
}
private void rebuildOverlayLayers()
{
overlayLayers.clear();
for (final Overlay overlay : overlays)
{
OverlayLayer layer = overlay.getLayer();
if (overlay.getPreferredLocation() != null && overlay.getPreferredPosition() == null)
{
// When UNDER_WIDGET overlays are in preferred locations, move to
// ABOVE_WIDGETS so that it can draw over interfaces
if (layer == OverlayLayer.UNDER_WIDGETS)
{
layer = OverlayLayer.ABOVE_WIDGETS;
}
}
overlayLayers.compute(layer, (key, value) ->
{
if (value == null)
{
value = new CopyOnWriteArrayList<>();
}
value.add(overlay);
return value;
});
}
}
private void saveOverlayLocation(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_LOCATION;
if (overlay.getPreferredLocation() != null)
{
configManager.setConfiguration(
RUNELITE_CONFIG_GROUP_NAME,
key,
overlay.getPreferredLocation());
}
else
{
configManager.unsetConfiguration(
RUNELITE_CONFIG_GROUP_NAME,
key);
}
}
private void saveOverlaySize(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_SIZE;
if (overlay.getPreferredSize() != null)
{
configManager.setConfiguration(
RUNELITE_CONFIG_GROUP_NAME,
key,
overlay.getPreferredSize());
}
else
{
configManager.unsetConfiguration(
RUNELITE_CONFIG_GROUP_NAME,
key);
}
}
private void saveOverlayPosition(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_POSITION;
if (overlay.getPreferredPosition() != null)
{
configManager.setConfiguration(
RUNELITE_CONFIG_GROUP_NAME,
key,
overlay.getPreferredPosition());
}
else
{
configManager.unsetConfiguration(
RUNELITE_CONFIG_GROUP_NAME,
key);
}
}
private Point loadOverlayLocation(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_LOCATION;
return configManager.getConfiguration(RUNELITE_CONFIG_GROUP_NAME, key, Point.class);
}
private Dimension loadOverlaySize(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_SIZE;
return configManager.getConfiguration(RUNELITE_CONFIG_GROUP_NAME, key, Dimension.class);
}
private OverlayPosition loadOverlayPosition(final Overlay overlay)
{
final String locationKey = overlay.getName() + OVERLAY_CONFIG_PREFERRED_POSITION;
return configManager.getConfiguration(RUNELITE_CONFIG_GROUP_NAME, locationKey, OverlayPosition.class);
}
@VisibleForTesting
static void sortOverlays(List<Overlay> overlays)
{
overlays.sort((a, b) ->
{
if (a.getPosition() != b.getPosition())
{
// This is so non-dynamic overlays render after dynamic
// overlays, which are generally in the scene
return a.getPosition().compareTo(b.getPosition());
}
// For dynamic overlays, higher priority means to
// draw *later* so it is on top.
// For non-dynamic overlays, higher priority means
// draw *first* so that they are closer to their
// defined position.
return a.getPosition() == OverlayPosition.DYNAMIC
? a.getPriority().compareTo(b.getPriority())
: b.getPriority().compareTo(a.getPriority());
});
}
}

View File

@@ -29,5 +29,6 @@ public enum OverlayPriority
LOW, LOW,
NONE, NONE,
MED, MED,
HIGH HIGH,
HIGHEST
} }

View File

@@ -33,14 +33,7 @@ import java.awt.Point;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.Collections;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Provider; import javax.inject.Provider;
import javax.inject.Singleton; import javax.inject.Singleton;
@@ -49,18 +42,13 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.events.FocusChanged; import net.runelite.api.events.FocusChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.events.PluginChanged;
import net.runelite.client.input.KeyListener; import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseListener; import net.runelite.client.input.MouseListener;
import net.runelite.client.input.MouseManager; import net.runelite.client.input.MouseManager;
import net.runelite.client.plugins.PluginManager;
import net.runelite.client.ui.FontManager; import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxOverlay; import net.runelite.client.ui.overlay.infobox.InfoBoxOverlay;
import net.runelite.client.ui.overlay.tooltip.TooltipOverlay; import net.runelite.client.ui.overlay.tooltip.TooltipOverlay;
@@ -83,19 +71,9 @@ public class OverlayRenderer extends MouseListener implements KeyListener
private static final Color SNAP_CORNER_ACTIVE_COLOR = new Color(0, 255, 0, 100); private static final Color SNAP_CORNER_ACTIVE_COLOR = new Color(0, 255, 0, 100);
private static final Color MOVING_OVERLAY_COLOR = new Color(255, 255, 0, 100); private static final Color MOVING_OVERLAY_COLOR = new Color(255, 255, 0, 100);
private static final Color MOVING_OVERLAY_ACTIVE_COLOR = new Color(255, 255, 0, 200); private static final Color MOVING_OVERLAY_ACTIVE_COLOR = new Color(255, 255, 0, 200);
private static final String OVERLAY_CONFIG_PREFERRED_LOCATION = "_preferredLocation";
private static final String OVERLAY_CONFIG_PREFERRED_POSITION = "_preferredPosition";
private static final String OVERLAY_CONFIG_PREFERRED_SIZE = "_preferredSize";
private final PluginManager pluginManager;
private final Provider<Client> clientProvider; private final Provider<Client> clientProvider;
private final InfoBoxOverlay infoBoxOverlay; private final OverlayManager overlayManager;
private final ConfigManager configManager;
private final RuneLiteConfig runeLiteConfig; private final RuneLiteConfig runeLiteConfig;
private final TooltipOverlay tooltipOverlay;
private final WorldMapOverlay worldMapOverlay;
private final List<Overlay> allOverlays = new CopyOnWriteArrayList<>();
private final String runeliteGroupName = RuneLiteConfig.class.getAnnotation(ConfigGroup.class).keyName();
// Overlay movement variables // Overlay movement variables
private final Point overlayOffset = new Point(); private final Point overlayOffset = new Point();
@@ -109,52 +87,28 @@ public class OverlayRenderer extends MouseListener implements KeyListener
private boolean chatboxHidden; private boolean chatboxHidden;
private boolean isResizeable; private boolean isResizeable;
private OverlayBounds snapCorners; private OverlayBounds snapCorners;
private final Map<OverlayLayer, List<Overlay>> overlayLayerOverlayMap = Collections
.synchronizedMap(new HashMap<>());
@Inject @Inject
private OverlayRenderer( private OverlayRenderer(
final Provider<Client> clientProvider, final Provider<Client> clientProvider,
final PluginManager pluginManager, final OverlayManager overlayManager,
final RuneLiteConfig runeLiteConfig,
final MouseManager mouseManager, final MouseManager mouseManager,
final KeyManager keyManager, final KeyManager keyManager,
final TooltipOverlay tooltipOverlay,
final InfoBoxOverlay infoBoxOverlay, final InfoBoxOverlay infoBoxOverlay,
final WorldMapOverlay worldMapOverlay, final TooltipOverlay tooltipOverlay,
final ConfigManager configManager, final WorldMapOverlay worldMapOverlay)
final RuneLiteConfig runeLiteConfig)
{ {
this.clientProvider = clientProvider; this.clientProvider = clientProvider;
this.pluginManager = pluginManager; this.overlayManager = overlayManager;
this.tooltipOverlay = tooltipOverlay;
this.infoBoxOverlay = infoBoxOverlay;
this.worldMapOverlay = worldMapOverlay;
this.configManager = configManager;
this.runeLiteConfig = runeLiteConfig; this.runeLiteConfig = runeLiteConfig;
keyManager.registerKeyListener(this); keyManager.registerKeyListener(this);
mouseManager.registerMouseListener(this); mouseManager.registerMouseListener(this);
}
@Subscribe // Register core overlays
public void onGameStateChanged(GameStateChanged event) overlayManager.add(infoBoxOverlay);
{ overlayManager.add(worldMapOverlay);
final Client client = clientProvider.get(); overlayManager.add(tooltipOverlay);
if (client == null)
{
return;
}
if (event.getGameState().equals(GameState.LOGGED_IN))
{
rebuildOverlays();
}
}
@Subscribe
public void onPluginChanged(PluginChanged event)
{
rebuildOverlays();
} }
@Subscribe @Subscribe
@@ -166,129 +120,10 @@ public class OverlayRenderer extends MouseListener implements KeyListener
} }
} }
/**
* Force save overlay data
* @param overlay overlay to save
*/
public void saveOverlay(final Overlay overlay)
{
saveOverlayPosition(overlay);
saveOverlaySize(overlay);
saveOverlayLocation(overlay);
}
/**
* Resets stored overlay position data
* @param overlay overlay to reset
*/
public void resetOverlay(final Overlay overlay)
{
final String locationKey = overlay.getName() + OVERLAY_CONFIG_PREFERRED_LOCATION;
final String positionKey = overlay.getName() + OVERLAY_CONFIG_PREFERRED_POSITION;
final String sizeKey = overlay.getName() + OVERLAY_CONFIG_PREFERRED_SIZE;
configManager.unsetConfiguration(runeliteGroupName, locationKey);
configManager.unsetConfiguration(runeliteGroupName, positionKey);
configManager.unsetConfiguration(runeliteGroupName, sizeKey);
}
/**
* Rebuild overlay cache for rendering
*/
public void rebuildOverlays()
{
final List<Overlay> overlays = Stream
.concat(
pluginManager.getPlugins()
.stream()
.filter(pluginManager::isPluginEnabled)
.flatMap(plugin -> plugin.getOverlays().stream()),
Stream.of(infoBoxOverlay, tooltipOverlay, worldMapOverlay))
.filter(Objects::nonNull)
.collect(Collectors.toList());
sortOverlays(overlays);
allOverlays.clear();
allOverlays.addAll(overlays);
final Client client = clientProvider.get();
if (client == null)
{
return;
}
for (final Overlay overlay : overlays)
{
final Point location = loadOverlayLocation(overlay);
overlay.setPreferredLocation(location);
final Dimension size = loadOverlaySize(overlay);
overlay.setPreferredSize(size);
final OverlayPosition position = loadOverlayPosition(overlay);
overlay.setPreferredPosition(position);
}
rebuildOverlayLayers();
}
private void rebuildOverlayLayers()
{
overlayLayerOverlayMap.clear();
for (final Overlay overlay : allOverlays)
{
OverlayLayer layer = overlay.getLayer();
if (overlay.getPreferredLocation() != null && overlay.getPreferredPosition() == null)
{
// When UNDER_WIDGET overlays are in preferred locations, move to
// ABOVE_WIDGETS so that it can draw over interfaces
if (layer == OverlayLayer.UNDER_WIDGETS)
{
layer = OverlayLayer.ABOVE_WIDGETS;
}
}
overlayLayerOverlayMap.compute(layer, (key, value) ->
{
if (value == null)
{
value = new CopyOnWriteArrayList<>();
}
value.add(overlay);
return value;
});
}
}
static void sortOverlays(List<Overlay> overlays)
{
overlays.sort((a, b) ->
{
if (a.getPosition() != b.getPosition())
{
// This is so non-dynamic overlays render after dynamic
// overlays, which are generally in the scene
return a.getPosition().compareTo(b.getPosition());
}
// For dynamic overlays, higher priority means to
// draw *later* so it is on top.
// For non-dynamic overlays, higher priority means
// draw *first* so that they are closer to their
// defined position.
return a.getPosition() == OverlayPosition.DYNAMIC
? a.getPriority().compareTo(b.getPriority())
: b.getPriority().compareTo(a.getPriority());
});
}
public void render(Graphics2D graphics, final OverlayLayer layer) public void render(Graphics2D graphics, final OverlayLayer layer)
{ {
final Client client = clientProvider.get(); final Client client = clientProvider.get();
final List<Overlay> overlays = overlayLayerOverlayMap.get(layer); final List<Overlay> overlays = overlayManager.getOverlayLayers().get(layer);
if (client == null if (client == null
|| overlays == null || overlays == null
@@ -410,7 +245,7 @@ public class OverlayRenderer extends MouseListener implements KeyListener
final Point mousePoint = mouseEvent.getPoint(); final Point mousePoint = mouseEvent.getPoint();
mousePosition.setLocation(mousePoint); mousePosition.setLocation(mousePoint);
for (Overlay overlay : allOverlays) for (Overlay overlay : overlayManager.getOverlays())
{ {
if (overlay.getBounds().contains(mousePoint)) if (overlay.getBounds().contains(mousePoint))
{ {
@@ -422,15 +257,20 @@ public class OverlayRenderer extends MouseListener implements KeyListener
overlay.setPreferredPosition(null); overlay.setPreferredPosition(null);
overlay.setPreferredSize(null); overlay.setPreferredSize(null);
overlay.setPreferredLocation(null); overlay.setPreferredLocation(null);
saveOverlay(overlay); overlayManager.resetOverlay(overlay);
rebuildOverlayLayers();
} }
} }
else else
{ {
mousePoint.translate(-overlay.getBounds().x, -overlay.getBounds().y); final Point offset = new Point(mousePoint.x, mousePoint.y);
overlayOffset.setLocation(mousePoint); offset.translate(-overlay.getBounds().x, -overlay.getBounds().y);
overlayOffset.setLocation(offset);
mousePoint.translate(-offset.x, -offset.y);
movedOverlay = overlay; movedOverlay = overlay;
movedOverlay.setPreferredPosition(null);
movedOverlay.setPreferredLocation(mousePoint);
overlayManager.saveOverlay(movedOverlay);
} }
mouseEvent.consume(); mouseEvent.consume();
@@ -470,7 +310,6 @@ public class OverlayRenderer extends MouseListener implements KeyListener
mousePoint.translate(-overlayOffset.x, -overlayOffset.y); mousePoint.translate(-overlayOffset.x, -overlayOffset.y);
movedOverlay.setPreferredPosition(null); movedOverlay.setPreferredPosition(null);
movedOverlay.setPreferredLocation(mousePoint); movedOverlay.setPreferredLocation(mousePoint);
rebuildOverlayLayers();
mouseEvent.consume(); mouseEvent.consume();
} }
@@ -494,11 +333,13 @@ public class OverlayRenderer extends MouseListener implements KeyListener
if (snapCorner.contains(mouseEvent.getPoint())) if (snapCorner.contains(mouseEvent.getPoint()))
{ {
OverlayPosition position = snapCorners.fromBounds(snapCorner); OverlayPosition position = snapCorners.fromBounds(snapCorner);
if (position == movedOverlay.getPosition()) if (position == movedOverlay.getPosition())
{ {
// overlay moves back to default position // overlay moves back to default position
position = null; position = null;
} }
movedOverlay.setPreferredPosition(position); movedOverlay.setPreferredPosition(position);
movedOverlay.setPreferredLocation(null); // from dragging movedOverlay.setPreferredLocation(null); // from dragging
break; break;
@@ -506,9 +347,7 @@ public class OverlayRenderer extends MouseListener implements KeyListener
} }
} }
saveOverlayPosition(movedOverlay); overlayManager.saveOverlay(movedOverlay);
saveOverlayLocation(movedOverlay);
rebuildOverlayLayers();
movedOverlay = null; movedOverlay = null;
mouseEvent.consume(); mouseEvent.consume();
} }
@@ -650,76 +489,4 @@ public class OverlayRenderer extends MouseListener implements KeyListener
new Rectangle(bottomRightPoint, SNAP_CORNER_SIZE), new Rectangle(bottomRightPoint, SNAP_CORNER_SIZE),
new Rectangle(rightChatboxPoint, SNAP_CORNER_SIZE)); new Rectangle(rightChatboxPoint, SNAP_CORNER_SIZE));
} }
private void saveOverlayLocation(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_LOCATION;
if (overlay.getPreferredLocation() != null)
{
configManager.setConfiguration(
runeliteGroupName,
key,
overlay.getPreferredLocation());
}
else
{
configManager.unsetConfiguration(
runeliteGroupName,
key);
}
}
private void saveOverlaySize(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_SIZE;
if (overlay.getPreferredSize() != null)
{
configManager.setConfiguration(
runeliteGroupName,
key,
overlay.getPreferredSize());
}
else
{
configManager.unsetConfiguration(
runeliteGroupName,
key);
}
}
private void saveOverlayPosition(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_POSITION;
if (overlay.getPreferredPosition() != null)
{
configManager.setConfiguration(
runeliteGroupName,
key,
overlay.getPreferredPosition());
}
else
{
configManager.unsetConfiguration(
runeliteGroupName,
key);
}
}
private Point loadOverlayLocation(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_LOCATION;
return configManager.getConfiguration(runeliteGroupName, key, Point.class);
}
private Dimension loadOverlaySize(final Overlay overlay)
{
final String key = overlay.getName() + OVERLAY_CONFIG_PREFERRED_SIZE;
return configManager.getConfiguration(runeliteGroupName, key, Dimension.class);
}
private OverlayPosition loadOverlayPosition(final Overlay overlay)
{
final String locationKey = overlay.getName() + OVERLAY_CONFIG_PREFERRED_POSITION;
return configManager.getConfiguration(runeliteGroupName, locationKey, OverlayPosition.class);
}
} }

View File

@@ -54,13 +54,17 @@ public class InfoBoxOverlay extends Overlay
private final RuneLiteConfig config; private final RuneLiteConfig config;
@Inject @Inject
public InfoBoxOverlay(InfoBoxManager infoboxManager, TooltipManager tooltipManager, Provider<Client> clientProvider, RuneLiteConfig config) private InfoBoxOverlay(
InfoBoxManager infoboxManager,
TooltipManager tooltipManager,
Provider<Client> clientProvider,
RuneLiteConfig config)
{ {
setPosition(OverlayPosition.TOP_LEFT);
this.tooltipManager = tooltipManager; this.tooltipManager = tooltipManager;
this.infoboxManager = infoboxManager; this.infoboxManager = infoboxManager;
this.clientProvider = clientProvider; this.clientProvider = clientProvider;
this.config = config; this.config = config;
setPosition(OverlayPosition.TOP_LEFT);
} }
@Override @Override

View File

@@ -50,12 +50,12 @@ public class TooltipOverlay extends Overlay
private final Provider<Client> clientProvider; private final Provider<Client> clientProvider;
@Inject @Inject
public TooltipOverlay(Provider<Client> clientProvider, TooltipManager tooltipManager) private TooltipOverlay(Provider<Client> clientProvider, TooltipManager tooltipManager)
{ {
this.clientProvider = clientProvider; this.clientProvider = clientProvider;
this.tooltipManager = tooltipManager; this.tooltipManager = tooltipManager;
setPosition(OverlayPosition.TOOLTIP); setPosition(OverlayPosition.TOOLTIP);
setPriority(OverlayPriority.HIGH); setPriority(OverlayPriority.HIGHEST);
setLayer(OverlayLayer.ALWAYS_ON_TOP); setLayer(OverlayLayer.ALWAYS_ON_TOP);
} }

View File

@@ -63,13 +63,16 @@ public class WorldMapOverlay extends Overlay
private final Provider<Client> clientProvider; private final Provider<Client> clientProvider;
@Inject @Inject
private WorldMapOverlay(Provider<Client> clientProvider, WorldMapPointManager worldMapPointManager, private WorldMapOverlay(
MouseManager mouseManager, WorldMapOverlayMouseListener worldMapOverlayMouseListener) Provider<Client> clientProvider,
WorldMapPointManager worldMapPointManager,
MouseManager mouseManager,
WorldMapOverlayMouseListener worldMapOverlayMouseListener)
{ {
this.clientProvider = clientProvider; this.clientProvider = clientProvider;
this.worldMapPointManager = worldMapPointManager; this.worldMapPointManager = worldMapPointManager;
setPosition(OverlayPosition.DYNAMIC); setPosition(OverlayPosition.DYNAMIC);
setPriority(OverlayPriority.HIGH); setPriority(OverlayPriority.HIGHEST);
setLayer(OverlayLayer.ALWAYS_ON_TOP); setLayer(OverlayLayer.ALWAYS_ON_TOP);
mouseManager.registerMouseListener(worldMapOverlayMouseListener); mouseManager.registerMouseListener(worldMapOverlayMouseListener);
} }

View File

@@ -30,13 +30,14 @@ import com.google.inject.testing.fieldbinder.BoundFieldModule;
import java.util.Set; import java.util.Set;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.VarPlayer;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.api.VarPlayer;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.ui.overlay.OverlayManager;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import org.junit.Before; import org.junit.Before;
@@ -54,6 +55,10 @@ public class AttackStylesPluginTest
@Bind @Bind
Client client; Client client;
@Mock
@Bind
OverlayManager overlayManager;
@Mock @Mock
@Bind @Bind
AttackStylesConfig attackConfig; AttackStylesConfig attackConfig;

View File

@@ -25,6 +25,7 @@
package net.runelite.client.plugins.cerberus; package net.runelite.client.plugins.cerberus;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.testing.fieldbinder.Bind;
import com.google.inject.testing.fieldbinder.BoundFieldModule; import com.google.inject.testing.fieldbinder.BoundFieldModule;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@@ -32,10 +33,12 @@ import javax.inject.Inject;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.LocalPoint;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.client.ui.overlay.OverlayManager;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import org.mockito.runners.MockitoJUnitRunner; import org.mockito.runners.MockitoJUnitRunner;
@@ -43,6 +46,10 @@ import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class) @RunWith(MockitoJUnitRunner.class)
public class CerberusPluginTest public class CerberusPluginTest
{ {
@Mock
@Bind
OverlayManager overlayManager;
@Inject @Inject
CerberusPlugin cerberusPlugin; CerberusPlugin cerberusPlugin;

View File

@@ -36,6 +36,7 @@ import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import org.junit.Before; import org.junit.Before;
@@ -92,6 +93,10 @@ public class SlayerPluginTest
@Bind @Bind
SlayerConfig slayerConfig; SlayerConfig slayerConfig;
@Mock
@Bind
OverlayManager overlayManager;
@Mock @Mock
@Bind @Bind
SlayerOverlay overlay; SlayerOverlay overlay;

View File

@@ -1,89 +1,89 @@
/* /*
* Copyright (c) 2016-2017, Adam <Adam@sigterm.info> * Copyright (c) 2016-2017, Adam <Adam@sigterm.info>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met: * modification, are permitted provided that the following conditions are met:
* *
* 1. Redistributions of source code must retain the above copyright notice, this * 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer. * list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice, * 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation * this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution. * and/or other materials provided with the distribution.
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package net.runelite.client.ui.overlay; package net.runelite.client.ui.overlay;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import org.junit.Test; import org.junit.Test;
class TestOverlay extends Overlay public class OverlayManagerTest
{ {
public TestOverlay(OverlayPosition position, OverlayPriority priority) class TestOverlay extends Overlay
{ {
setPosition(position); TestOverlay(OverlayPosition position, OverlayPriority priority)
setPriority(priority); {
} setPosition(position);
setPriority(priority);
@Override }
public Dimension render(Graphics2D graphics)
{ @Override
throw new UnsupportedOperationException("Not supported yet."); public Dimension render(Graphics2D graphics)
} {
} throw new UnsupportedOperationException("Not supported yet.");
}
public class OverlayRendererTest }
{
@Test @Test
public void testSort() public void testSort()
{ {
// High priorities overlays render first // High priorities overlays render first
Overlay tlh = new TestOverlay(OverlayPosition.TOP_LEFT, OverlayPriority.HIGH); Overlay tlh = new TestOverlay(OverlayPosition.TOP_LEFT, OverlayPriority.HIGH);
Overlay tll = new TestOverlay(OverlayPosition.TOP_LEFT, OverlayPriority.LOW); Overlay tll = new TestOverlay(OverlayPosition.TOP_LEFT, OverlayPriority.LOW);
List<Overlay> overlays = Arrays.asList(tlh, tll); List<Overlay> overlays = Arrays.asList(tlh, tll);
OverlayRenderer.sortOverlays(overlays); OverlayManager.sortOverlays(overlays);
assertEquals(tlh, overlays.get(0)); assertEquals(tlh, overlays.get(0));
assertEquals(tll, overlays.get(1)); assertEquals(tll, overlays.get(1));
} }
@Test @Test
public void testSortDynamic() public void testSortDynamic()
{ {
// Dynamic overlays render before static overlays // Dynamic overlays render before static overlays
Overlay tlh = new TestOverlay(OverlayPosition.TOP_LEFT, OverlayPriority.HIGH); Overlay tlh = new TestOverlay(OverlayPosition.TOP_LEFT, OverlayPriority.HIGH);
Overlay dyn = new TestOverlay(OverlayPosition.DYNAMIC, OverlayPriority.HIGH); Overlay dyn = new TestOverlay(OverlayPosition.DYNAMIC, OverlayPriority.HIGH);
List<Overlay> overlays = Arrays.asList(tlh, dyn); List<Overlay> overlays = Arrays.asList(tlh, dyn);
OverlayRenderer.sortOverlays(overlays); OverlayManager.sortOverlays(overlays);
assertEquals(dyn, overlays.get(0)); assertEquals(dyn, overlays.get(0));
assertEquals(tlh, overlays.get(1)); assertEquals(tlh, overlays.get(1));
} }
@Test @Test
public void testTooltips() public void testTooltips()
{ {
// Tooltip overlay renders after everything // Tooltip overlay renders after everything
Overlay t = new TestOverlay(OverlayPosition.TOOLTIP, OverlayPriority.HIGH); Overlay t = new TestOverlay(OverlayPosition.TOOLTIP, OverlayPriority.HIGH);
Overlay dyn = new TestOverlay(OverlayPosition.DYNAMIC, OverlayPriority.HIGH); Overlay dyn = new TestOverlay(OverlayPosition.DYNAMIC, OverlayPriority.HIGH);
Overlay tlh = new TestOverlay(OverlayPosition.TOP_LEFT, OverlayPriority.HIGH); Overlay tlh = new TestOverlay(OverlayPosition.TOP_LEFT, OverlayPriority.HIGH);
List<Overlay> overlays = Arrays.asList(t, dyn, tlh); List<Overlay> overlays = Arrays.asList(t, dyn, tlh);
OverlayRenderer.sortOverlays(overlays); OverlayManager.sortOverlays(overlays);
assertEquals(dyn, overlays.get(0)); assertEquals(dyn, overlays.get(0));
assertEquals(tlh, overlays.get(1)); assertEquals(tlh, overlays.get(1));
assertEquals(t, overlays.get(2)); assertEquals(t, overlays.get(2));
} }
} }