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.Graphics2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Query;
|
||||
import net.runelite.api.SpritePixels;
|
||||
import net.runelite.api.queries.InventoryWidgetItemQuery;
|
||||
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.OverlayLayer;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
@@ -44,19 +41,18 @@ import net.runelite.client.util.QueryRunner;
|
||||
|
||||
public class InventoryTagsOverlay extends Overlay
|
||||
{
|
||||
private final Map<String, BufferedImage> storedOutlines = new HashMap<>();
|
||||
private final QueryRunner queryRunner;
|
||||
private final Client client;
|
||||
private final ItemManager itemManager;
|
||||
private final InventoryTagsPlugin plugin;
|
||||
|
||||
@Inject
|
||||
private InventoryTagsOverlay(QueryRunner queryRunner, Client client, InventoryTagsPlugin plugin)
|
||||
private InventoryTagsOverlay(QueryRunner queryRunner, ItemManager itemManager, InventoryTagsPlugin plugin)
|
||||
{
|
||||
setPosition(OverlayPosition.DYNAMIC);
|
||||
setPriority(OverlayPriority.LOW);
|
||||
setLayer(OverlayLayer.ABOVE_WIDGETS);
|
||||
this.queryRunner = queryRunner;
|
||||
this.client = client;
|
||||
this.itemManager = itemManager;
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@@ -82,7 +78,7 @@ public class InventoryTagsOverlay extends Overlay
|
||||
final Color color = plugin.getGroupNameColor(group);
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -90,29 +86,4 @@ public class InventoryTagsOverlay extends Overlay
|
||||
|
||||
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.MenuAction;
|
||||
import net.runelite.api.MenuEntry;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
import net.runelite.api.events.ItemContainerChanged;
|
||||
import net.runelite.api.events.MenuOpened;
|
||||
import net.runelite.api.events.MenuOptionClicked;
|
||||
@@ -132,17 +131,6 @@ public class InventoryTagsPlugin extends Plugin
|
||||
hasTaggedItems = editorMode = false;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged configChanged)
|
||||
{
|
||||
if (!configChanged.getGroup().equals("inventorytags"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
overlay.clearStoredOutlines();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onClickMenu(final MenuOptionClicked event)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user