Change InventorySetupBankOverlay to the new WidgetItemOverlay
This commit is contained in:
@@ -1,112 +1,57 @@
|
||||
package net.runelite.client.plugins.inventorysetups;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.IntStream;
|
||||
import javax.inject.Inject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Point;
|
||||
import net.runelite.api.Query;
|
||||
import net.runelite.api.SpritePixels;
|
||||
import net.runelite.api.queries.BankItemQuery;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.api.widgets.WidgetItem;
|
||||
import net.runelite.client.ui.FontManager;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
import net.runelite.client.ui.overlay.OverlayPriority;
|
||||
import net.runelite.client.util.QueryRunner;
|
||||
import net.runelite.client.game.ItemManager;
|
||||
import net.runelite.client.ui.overlay.WidgetItemOverlay;
|
||||
|
||||
@Slf4j
|
||||
public class InventorySetupBankOverlay extends Overlay
|
||||
public class InventorySetupBankOverlay extends WidgetItemOverlay
|
||||
{
|
||||
private final Client client;
|
||||
private final QueryRunner queryRunner;
|
||||
private final ItemManager itemManager;
|
||||
private final InventorySetupPlugin plugin;
|
||||
private final InventorySetupConfig config;
|
||||
|
||||
@Inject
|
||||
public InventorySetupBankOverlay(Client client, QueryRunner queryRunner, InventorySetupPlugin plugin, InventorySetupConfig config)
|
||||
public InventorySetupBankOverlay(ItemManager itemManager, InventorySetupPlugin plugin, InventorySetupConfig config)
|
||||
{
|
||||
setPosition(OverlayPosition.DYNAMIC);
|
||||
setPriority(OverlayPriority.LOW);
|
||||
setLayer(OverlayLayer.ABOVE_WIDGETS);
|
||||
this.client = client;
|
||||
this.queryRunner = queryRunner;
|
||||
this.itemManager = itemManager;
|
||||
this.plugin = plugin;
|
||||
this.config = config;
|
||||
showOnBank();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension render(Graphics2D graphics)
|
||||
public void renderItemOverlay(Graphics2D graphics, int itemId, WidgetItem itemWidget)
|
||||
{
|
||||
if (config.getBankHighlight())
|
||||
{
|
||||
int[] ids = plugin.getCurrentInventorySetupIds();
|
||||
if (ids == null)
|
||||
{
|
||||
return null;
|
||||
return;
|
||||
}
|
||||
ids = Arrays.stream(ids)
|
||||
.filter(Objects::nonNull)
|
||||
.filter(id -> id != -1)
|
||||
.toArray();
|
||||
final Query query = new BankItemQuery().idEquals(ids);
|
||||
final WidgetItem[] widgetItems = queryRunner.runQuery(query);
|
||||
final Widget bankContainer = client.getWidget(WidgetInfo.BANK_CONTAINER);
|
||||
for (final WidgetItem item : widgetItems)
|
||||
|
||||
if (IntStream.of(ids).noneMatch(x -> x == itemId))
|
||||
{
|
||||
Point canvasLocation = item.getCanvasLocation();
|
||||
Rectangle canvasBounds = item.getCanvasBounds();
|
||||
Point windowLocation = bankContainer.getCanvasLocation();
|
||||
return;
|
||||
}
|
||||
|
||||
if (canvasLocation == null || windowLocation == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!(canvasLocation.getY() + 60 >= windowLocation.getY() + bankContainer.getHeight()) && !(canvasLocation.getY() + canvasBounds.getHeight() <= windowLocation.getY() + 90))
|
||||
{
|
||||
final Color color = config.getBankHighlightColor();
|
||||
final Color color = config.getBankHighlightColor();
|
||||
|
||||
if (color != null)
|
||||
{
|
||||
final BufferedImage outline = loadItemOutline(item.getId(), item.getQuantity(), color);
|
||||
graphics.drawImage(outline, item.getCanvasLocation().getX() + 1, item.getCanvasLocation().getY() + 1, null);
|
||||
if (item.getQuantity() > 1)
|
||||
{
|
||||
drawQuantity(graphics, item, Color.YELLOW);
|
||||
}
|
||||
else if (item.getQuantity() == 0)
|
||||
{
|
||||
drawQuantity(graphics, item, Color.YELLOW.darker());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (color != null)
|
||||
{
|
||||
Rectangle bounds = itemWidget.getCanvasBounds();
|
||||
final BufferedImage outline = itemManager.getItemOutline(itemId, itemWidget.getQuantity(), color);
|
||||
graphics.drawImage(outline, (int) bounds.getX() + 1, (int) bounds.getY() + 1, null);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private void drawQuantity(Graphics2D graphics, WidgetItem item, Color darker)
|
||||
{
|
||||
graphics.setColor(Color.BLACK);
|
||||
graphics.drawString(String.valueOf(item.getQuantity()), item.getCanvasLocation().getX() + 2, item.getCanvasLocation().getY() + 11);
|
||||
graphics.setColor(darker);
|
||||
graphics.setFont(FontManager.getRunescapeSmallFont());
|
||||
graphics.drawString(String.valueOf(item.getQuantity()), item.getCanvasLocation().getX() + 1, item.getCanvasLocation().getY() + 10);
|
||||
}
|
||||
|
||||
private BufferedImage loadItemOutline(final int itemId, final int itemQuantity, final Color outlineColor)
|
||||
{
|
||||
final SpritePixels itemSprite = client.createItemSprite(itemId, itemQuantity, 2, 0, 0, true, 710);
|
||||
return itemSprite.toBufferedOutline(outlineColor);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user