diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/inventorytags/InventoryTagsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/inventorytags/InventoryTagsOverlay.java index 99798156ad..14fe723a71 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/inventorytags/InventoryTagsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/inventorytags/InventoryTagsOverlay.java @@ -43,6 +43,8 @@ public class InventoryTagsOverlay extends WidgetItemOverlay { this.itemManager = itemManager; this.plugin = plugin; + showOnEquipment(); + showOnInventory(); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeOverlay.java index a37570aa22..5082ab2ccd 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeOverlay.java @@ -51,6 +51,8 @@ class ItemChargeOverlay extends WidgetItemOverlay { this.itemChargePlugin = itemChargePlugin; this.config = config; + showOnInventory(); + showOnEquipment(); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchOverlay.java index 17486efe0d..a7e2fd86d7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchOverlay.java @@ -69,6 +69,8 @@ public class RunepouchOverlay extends WidgetItemOverlay this.tooltipManager = tooltipManager; this.client = client; this.config = config; + showOnInventory(); + showOnBank(); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java index e8c49b20a0..97a191d608 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java @@ -87,6 +87,8 @@ class SlayerOverlay extends WidgetItemOverlay { this.plugin = plugin; this.config = config; + showOnInventory(); + showOnEquipment(); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetItemOverlay.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetItemOverlay.java index 0eaae6e50b..9cf6f39217 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetItemOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/WidgetItemOverlay.java @@ -26,15 +26,33 @@ package net.runelite.client.ui.overlay; import java.awt.Dimension; import java.awt.Graphics2D; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import lombok.AccessLevel; import lombok.Setter; +import net.runelite.api.widgets.Widget; +import static net.runelite.api.widgets.WidgetID.BANK_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.BANK_INVENTORY_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.DEPOSIT_BOX_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.EQUIPMENT_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.EQUIPMENT_INVENTORY_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.GRAND_EXCHANGE_INVENTORY_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.GUIDE_PRICES_INVENTORY_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.INVENTORY_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.SHOP_INVENTORY_GROUP_ID; +import static net.runelite.api.widgets.WidgetInfo.TO_GROUP; import net.runelite.api.widgets.WidgetItem; public abstract class WidgetItemOverlay extends Overlay { @Setter(AccessLevel.PACKAGE) private OverlayManager overlayManager; + /** + * Interfaces to draw overlay over. + */ + private final Set interfaceGroups = new HashSet<>(); protected WidgetItemOverlay() { @@ -49,13 +67,49 @@ public abstract class WidgetItemOverlay extends Overlay public Dimension render(Graphics2D graphics) { final List itemWidgets = overlayManager.getItemWidgets(); - for (WidgetItem widget : itemWidgets) + for (WidgetItem widgetItem : itemWidgets) { - renderItemOverlay(graphics, widget.getId(), widget); + Widget widget = widgetItem.getWidget(); + int interfaceGroup = TO_GROUP(widget.getId()); + + // Don't draw if this widget isn't one of the allowed + if (!interfaceGroups.contains(interfaceGroup)) + { + continue; + } + + renderItemOverlay(graphics, widgetItem.getId(), widgetItem); } return null; } + protected void showOnInventory() + { + showOnInterfaces( + DEPOSIT_BOX_GROUP_ID, + BANK_INVENTORY_GROUP_ID, + SHOP_INVENTORY_GROUP_ID, + GRAND_EXCHANGE_INVENTORY_GROUP_ID, + GUIDE_PRICES_INVENTORY_GROUP_ID, + EQUIPMENT_INVENTORY_GROUP_ID, + INVENTORY_GROUP_ID); + } + + protected void showOnBank() + { + showOnInterfaces(BANK_GROUP_ID); + } + + protected void showOnEquipment() + { + showOnInterfaces(EQUIPMENT_GROUP_ID); + } + + protected void showOnInterfaces(int... ids) + { + Arrays.stream(ids).forEach(interfaceGroups::add); + } + // Don't allow setting position, priority, or layer @Override