From e8cf7132c6c2f76cdde91d4816d9c6093e3d0aef Mon Sep 17 00:00:00 2001 From: James Munson Date: Sun, 9 Jun 2019 23:26:50 -0700 Subject: [PATCH 1/2] Add impling overlay --- .../implings/ImplingCounterOverlay.java | 53 +++++++++++++++++++ .../plugins/implings/ImplingsConfig.java | 11 ++++ .../plugins/implings/ImplingsPlugin.java | 31 ++++++++++- 3 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingCounterOverlay.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingCounterOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingCounterOverlay.java new file mode 100644 index 0000000000..c88d433254 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingCounterOverlay.java @@ -0,0 +1,53 @@ +package net.runelite.client.plugins.implings; + +import java.awt.Dimension; +import java.awt.Graphics2D; +import java.util.Map; +import javax.inject.Inject; +import net.runelite.api.Client; +import net.runelite.client.ui.overlay.Overlay; +import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.table.TableAlignment; +import net.runelite.client.ui.overlay.components.table.TableComponent; +import net.runelite.client.ui.overlay.components.PanelComponent; + +public class ImplingCounterOverlay extends Overlay +{ + private final Client client; + private final ImplingsPlugin plugin; + private final ImplingsConfig config; + + private final PanelComponent panelComponent = new PanelComponent(); + + @Inject + public ImplingCounterOverlay(Client client, ImplingsConfig config, ImplingsPlugin plugin) + { + this.client = client; + this.config = config; + this.plugin = plugin; + setPosition(OverlayPosition.TOP_LEFT); + } + + @Override + public Dimension render(Graphics2D graphics) + { + if (!config.showCounter() || plugin.getImplings().isEmpty()) + return null; + + panelComponent.getChildren().clear(); + + TableComponent tableComponent = new TableComponent(); + tableComponent.setColumnAlignments(TableAlignment.LEFT, TableAlignment.RIGHT); + + for (Map.Entry entry : plugin.getImplingCounterMap().entrySet()) + { + if (plugin.showImplingType(entry.getKey()) && entry.getValue() != 0) + { + tableComponent.addRow(entry.getKey().getName(), entry.getValue().toString()); + } + } + + panelComponent.getChildren().add(tableComponent); + return panelComponent.render(graphics); + } +} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsConfig.java index 386284a874..d55be9f962 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsConfig.java @@ -320,4 +320,15 @@ public interface ImplingsConfig extends Config { return Color.WHITE; } + + @ConfigItem( + position = 26, + keyName = "showCounter", + name = "Show impling counter overlay", + description = "Shows how many of each impling there is nearby" + ) + default boolean showCounter() + { + return false; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java index f768cad97d..f08c0ba4e9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java @@ -30,6 +30,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.HashMap; import javax.inject.Inject; import lombok.AccessLevel; import lombok.Getter; @@ -58,6 +59,9 @@ public class ImplingsPlugin extends Plugin private static final int DYNAMIC_SPAWN_ECLECTIC = 1633; private static final int DYNAMIC_SPAWN_BABY_ESSENCE = 1634; + @Getter + private Map implingCounterMap = new HashMap<>(); + @Getter(AccessLevel.PACKAGE) private final List implings = new ArrayList<>(); @@ -67,6 +71,10 @@ public class ImplingsPlugin extends Plugin @Inject private ImplingsOverlay overlay; + @Inject + private ImplingCounterOverlay implingCounterOverlay; + + @Inject private OverlayManager overlayManager; @@ -91,6 +99,7 @@ public class ImplingsPlugin extends Plugin overlayManager.add(overlay); overlayManager.add(minimapOverlay); + overlayManager.add(implingCounterOverlay); } @Override @@ -98,6 +107,7 @@ public class ImplingsPlugin extends Plugin { overlayManager.remove(overlay); overlayManager.remove(minimapOverlay); + overlayManager.remove(implingCounterOverlay); } @Subscribe @@ -109,6 +119,16 @@ public class ImplingsPlugin extends Plugin if (impling != null) { implings.add(npc); + + ImplingType type = impling.getImplingType(); + if (implingCounterMap.containsKey(type)) + { + implingCounterMap.put(type, implingCounterMap.get(type) + 1); + } + else + { + implingCounterMap.put(type, 1); + } } } @@ -118,6 +138,7 @@ public class ImplingsPlugin extends Plugin if (event.getGameState() == GameState.LOGIN_SCREEN || event.getGameState() == GameState.HOPPING) { implings.clear(); + implingCounterMap.clear(); } } @@ -131,6 +152,9 @@ public class ImplingsPlugin extends Plugin NPC npc = npcDespawned.getNpc(); implings.remove(npc); + + Impling impling = Impling.findImpling(npc.getId()); + if (impling != null) implingCounterMap.put(impling.getImplingType(), implingCounterMap.get(impling.getImplingType()) - 1); } boolean showNpc(NPC npc) @@ -183,7 +207,12 @@ public class ImplingsPlugin extends Plugin return null; } - switch (impling.getImplingType()) + return typeToColor(impling.getImplingType()); + } + + Color typeToColor(ImplingType type) + { + switch (type) { case BABY: From 71103190b54987d4f113467ae9aa1f9f30883eca Mon Sep 17 00:00:00 2001 From: James Munson Date: Sun, 9 Jun 2019 23:31:19 -0700 Subject: [PATCH 2/2] Fix --- .../plugins/implings/ImplingsPlugin.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java index f08c0ba4e9..f0709535f4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java @@ -36,6 +36,7 @@ import lombok.AccessLevel; import lombok.Getter; import net.runelite.api.GameState; import net.runelite.api.NPC; +import net.runelite.api.events.GameTick; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcSpawned; @@ -111,14 +112,12 @@ public class ImplingsPlugin extends Plugin } @Subscribe - public void onNpcSpawned(NpcSpawned npcSpawned) + public void onGameTick(GameTick event) { - NPC npc = npcSpawned.getNpc(); - Impling impling = Impling.findImpling(npc.getId()); - - if (impling != null) + implingCounterMap.clear(); + for (NPC npc : implings) { - implings.add(npc); + Impling impling = Impling.findImpling(npc.getId()); ImplingType type = impling.getImplingType(); if (implingCounterMap.containsKey(type)) @@ -132,6 +131,18 @@ public class ImplingsPlugin extends Plugin } } + @Subscribe + public void onNpcSpawned(NpcSpawned npcSpawned) + { + NPC npc = npcSpawned.getNpc(); + Impling impling = Impling.findImpling(npc.getId()); + + if (impling != null) + { + implings.add(npc); + } + } + @Subscribe public void onGameStateChanged(GameStateChanged event) { @@ -153,8 +164,6 @@ public class ImplingsPlugin extends Plugin NPC npc = npcDespawned.getNpc(); implings.remove(npc); - Impling impling = Impling.findImpling(npc.getId()); - if (impling != null) implingCounterMap.put(impling.getImplingType(), implingCounterMap.get(impling.getImplingType()) - 1); } boolean showNpc(NPC npc)