inventory tags: use item manager for outlines
This commit is contained in:
@@ -28,14 +28,11 @@ import java.awt.Color;
|
|||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import net.runelite.api.Client;
|
|
||||||
import net.runelite.api.Query;
|
import net.runelite.api.Query;
|
||||||
import net.runelite.api.SpritePixels;
|
|
||||||
import net.runelite.api.queries.InventoryWidgetItemQuery;
|
import net.runelite.api.queries.InventoryWidgetItemQuery;
|
||||||
import net.runelite.api.widgets.WidgetItem;
|
import net.runelite.api.widgets.WidgetItem;
|
||||||
|
import net.runelite.client.game.ItemManager;
|
||||||
import net.runelite.client.ui.overlay.Overlay;
|
import net.runelite.client.ui.overlay.Overlay;
|
||||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||||
@@ -44,19 +41,18 @@ import net.runelite.client.util.QueryRunner;
|
|||||||
|
|
||||||
public class InventoryTagsOverlay extends Overlay
|
public class InventoryTagsOverlay extends Overlay
|
||||||
{
|
{
|
||||||
private final Map<String, BufferedImage> storedOutlines = new HashMap<>();
|
|
||||||
private final QueryRunner queryRunner;
|
private final QueryRunner queryRunner;
|
||||||
private final Client client;
|
private final ItemManager itemManager;
|
||||||
private final InventoryTagsPlugin plugin;
|
private final InventoryTagsPlugin plugin;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private InventoryTagsOverlay(QueryRunner queryRunner, Client client, InventoryTagsPlugin plugin)
|
private InventoryTagsOverlay(QueryRunner queryRunner, ItemManager itemManager, InventoryTagsPlugin plugin)
|
||||||
{
|
{
|
||||||
setPosition(OverlayPosition.DYNAMIC);
|
setPosition(OverlayPosition.DYNAMIC);
|
||||||
setPriority(OverlayPriority.LOW);
|
setPriority(OverlayPriority.LOW);
|
||||||
setLayer(OverlayLayer.ABOVE_WIDGETS);
|
setLayer(OverlayLayer.ABOVE_WIDGETS);
|
||||||
this.queryRunner = queryRunner;
|
this.queryRunner = queryRunner;
|
||||||
this.client = client;
|
this.itemManager = itemManager;
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,7 +78,7 @@ public class InventoryTagsOverlay extends Overlay
|
|||||||
final Color color = plugin.getGroupNameColor(group);
|
final Color color = plugin.getGroupNameColor(group);
|
||||||
if (color != null)
|
if (color != null)
|
||||||
{
|
{
|
||||||
final BufferedImage outline = getOutline(item.getId(), color);
|
final BufferedImage outline = itemManager.getItemOutline(item.getId(), item.getQuantity(), color);
|
||||||
graphics.drawImage(outline, item.getCanvasLocation().getX() + 1, item.getCanvasLocation().getY() + 1, null);
|
graphics.drawImage(outline, item.getCanvasLocation().getX() + 1, item.getCanvasLocation().getY() + 1, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,29 +86,4 @@ public class InventoryTagsOverlay extends Overlay
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearStoredOutlines()
|
|
||||||
{
|
|
||||||
storedOutlines.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private BufferedImage getOutline(final int id, final Color color)
|
|
||||||
{
|
|
||||||
final String key = getStringGeneratedId(id, color);
|
|
||||||
BufferedImage stored = storedOutlines.get(key);
|
|
||||||
if (stored != null)
|
|
||||||
{
|
|
||||||
return stored;
|
|
||||||
}
|
|
||||||
|
|
||||||
final SpritePixels itemSprite = client.createItemSprite(id, 1, 1, 0, 0, true, 710);
|
|
||||||
final BufferedImage generatedPicture = itemSprite.toBufferedOutline(color);
|
|
||||||
storedOutlines.put(key, generatedPicture);
|
|
||||||
return generatedPicture;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getStringGeneratedId(final int id, final Color color)
|
|
||||||
{
|
|
||||||
return id + "." + color.getRGB();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ import net.runelite.api.Item;
|
|||||||
import net.runelite.api.ItemContainer;
|
import net.runelite.api.ItemContainer;
|
||||||
import net.runelite.api.MenuAction;
|
import net.runelite.api.MenuAction;
|
||||||
import net.runelite.api.MenuEntry;
|
import net.runelite.api.MenuEntry;
|
||||||
import net.runelite.api.events.ConfigChanged;
|
|
||||||
import net.runelite.api.events.ItemContainerChanged;
|
import net.runelite.api.events.ItemContainerChanged;
|
||||||
import net.runelite.api.events.MenuOpened;
|
import net.runelite.api.events.MenuOpened;
|
||||||
import net.runelite.api.events.MenuOptionClicked;
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
@@ -132,17 +131,6 @@ public class InventoryTagsPlugin extends Plugin
|
|||||||
hasTaggedItems = editorMode = false;
|
hasTaggedItems = editorMode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe
|
|
||||||
public void onConfigChanged(ConfigChanged configChanged)
|
|
||||||
{
|
|
||||||
if (!configChanged.getGroup().equals("inventorytags"))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
overlay.clearStoredOutlines();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onClickMenu(final MenuOptionClicked event)
|
public void onClickMenu(final MenuOptionClicked event)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user