widgetitem overlay: allow configuring which interfaces to overlay

Update overlays to behave consistent with how they behaved before
removal of query api, with the exception of adding the rune pouch
overlay to the bank.
This commit is contained in:
Adam
2019-04-19 14:40:27 -04:00
parent 8bfc0f2b21
commit 3f13d4c620
5 changed files with 64 additions and 2 deletions
@@ -43,6 +43,8 @@ public class InventoryTagsOverlay extends WidgetItemOverlay
{
this.itemManager = itemManager;
this.plugin = plugin;
showOnEquipment();
showOnInventory();
}
@Override
@@ -51,6 +51,8 @@ class ItemChargeOverlay extends WidgetItemOverlay
{
this.itemChargePlugin = itemChargePlugin;
this.config = config;
showOnInventory();
showOnEquipment();
}
@Override
@@ -69,6 +69,8 @@ public class RunepouchOverlay extends WidgetItemOverlay
this.tooltipManager = tooltipManager;
this.client = client;
this.config = config;
showOnInventory();
showOnBank();
}
@Override
@@ -87,6 +87,8 @@ class SlayerOverlay extends WidgetItemOverlay
{
this.plugin = plugin;
this.config = config;
showOnInventory();
showOnEquipment();
}
@Override
@@ -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<Integer> interfaceGroups = new HashSet<>();
protected WidgetItemOverlay()
{
@@ -49,13 +67,49 @@ public abstract class WidgetItemOverlay extends Overlay
public Dimension render(Graphics2D graphics)
{
final List<WidgetItem> 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