From bed1bfcd79922bb01a475975b52b91a96a9acfea Mon Sep 17 00:00:00 2001 From: Bart Peeters Date: Mon, 15 Jun 2020 00:24:23 -0700 Subject: [PATCH] driftnet: Hightlight Annette when no nets in inventory --- .../plugins/driftnet/DriftNetConfig.java | 22 +++++++++++ .../plugins/driftnet/DriftNetOverlay.java | 14 +++++++ .../plugins/driftnet/DriftNetPlugin.java | 37 +++++++++++++++++++ 3 files changed, 73 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetConfig.java index e5f9756de8..4826768790 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetConfig.java @@ -94,4 +94,26 @@ public interface DriftNetConfig extends Config { return Color.CYAN; } + + @ConfigItem( + keyName = "tagAnnette", + name = "Tag Annette when no nets in inventory", + description = "Tag Annette when no nets in inventory", + position = 6 + ) + default boolean tagAnnetteWhenNoNets() + { + return true; + } + + @ConfigItem( + keyName = "annetteTagColor", + name = "Annette tag color", + description = "Color of Annette tag", + position = 7 + ) + default Color annetteTagColor() + { + return Color.RED; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetOverlay.java index d01c88344c..1ff9e117f8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetOverlay.java @@ -28,6 +28,7 @@ import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Shape; import javax.inject.Inject; +import net.runelite.api.GameObject; import net.runelite.api.NPC; import net.runelite.api.Point; import net.runelite.client.ui.overlay.Overlay; @@ -67,6 +68,10 @@ class DriftNetOverlay extends Overlay { renderNets(graphics); } + if (config.tagAnnetteWhenNoNets()) + { + renderAnnette(graphics); + } return null; } @@ -101,4 +106,13 @@ class DriftNetOverlay extends Overlay } } } + + private void renderAnnette(Graphics2D graphics) + { + GameObject annette = plugin.getAnnette(); + if (annette != null && !plugin.isDriftNetsInInventory()) + { + OverlayUtil.renderPolygon(graphics, annette.getConvexHull(), config.annetteTagColor()); + } + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetPlugin.java index 8dd6ff16b9..30449ad516 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/driftnet/DriftNetPlugin.java @@ -39,9 +39,13 @@ import net.runelite.api.ChatMessageType; import net.runelite.api.Client; import net.runelite.api.GameObject; import net.runelite.api.GameState; +import net.runelite.api.InventoryID; +import net.runelite.api.ItemContainer; +import net.runelite.api.ItemID; import net.runelite.api.NPC; import net.runelite.api.NpcID; import net.runelite.api.NullObjectID; +import net.runelite.api.ObjectID; import net.runelite.api.Player; import net.runelite.api.Varbits; import net.runelite.api.coords.WorldPoint; @@ -51,6 +55,7 @@ import net.runelite.api.events.GameObjectSpawned; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.InteractingChanged; +import net.runelite.api.events.ItemContainerChanged; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.VarbitChanged; @@ -101,6 +106,12 @@ public class DriftNetPlugin extends Plugin private boolean inDriftNetArea; private boolean armInteraction; + @Getter + private boolean driftNetsInInventory; + + @Getter + private GameObject annette; + @Provides DriftNetConfig provideConfig(ConfigManager configManager) { @@ -132,6 +143,10 @@ public class DriftNetPlugin extends Plugin @Subscribe public void onGameStateChanged(GameStateChanged event) { + if (event.getGameState() != GameState.LOGGED_IN) + { + annette = null; + } switch (event.getGameState()) { case LOGIN_SCREEN: @@ -262,6 +277,11 @@ public class DriftNetPlugin extends Plugin public void onGameObjectSpawned(GameObjectSpawned event) { GameObject object = event.getGameObject(); + if (object.getId() == ObjectID.ANNETTE) + { + annette = object; + } + for (DriftNet net : NETS) { if (net.getObjectId() == object.getId()) @@ -275,6 +295,11 @@ public class DriftNetPlugin extends Plugin public void onGameObjectDespawned(GameObjectDespawned event) { GameObject object = event.getGameObject(); + if (object == annette) + { + annette = null; + } + for (DriftNet net : NETS) { if (net.getObjectId() == object.getId()) @@ -284,6 +309,18 @@ public class DriftNetPlugin extends Plugin } } + @Subscribe + public void onItemContainerChanged(final ItemContainerChanged event) + { + final ItemContainer itemContainer = event.getItemContainer(); + if (itemContainer != client.getItemContainer(InventoryID.INVENTORY)) + { + return; + } + + driftNetsInInventory = itemContainer.contains(ItemID.DRIFT_NET); + } + private boolean checkArea() { final Player localPlayer = client.getLocalPlayer();