Hide ground items when interface is open (#160)

* Add viewport WidgetInfo

* Add side panels varbit

* Change ground items plugin to only display within viewport

* Change viewport ids to main interface viewport

* Hide ground items when viewport interfaces are open

* Change fixed viewport widget id
This commit is contained in:
Devin French
2017-10-07 13:57:34 -07:00
committed by Adam
parent 3e6be6d12b
commit 0b3da3bfea
4 changed files with 76 additions and 14 deletions

View File

@@ -31,6 +31,7 @@ import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
@@ -48,6 +49,8 @@ import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.api.Region;
import net.runelite.api.Tile;
import net.runelite.api.Varbits;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.game.ItemManager;
import net.runelite.client.RuneLite;
@@ -121,11 +124,41 @@ public class GroundItemsOverlay extends Overlay
return null;
}
//Widget bank = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER);
//if (bank != null && !bank.isHidden())
//{
// return null;
//}
WidgetInfo viewportInfo = WidgetInfo.FIXED_VIEWPORT;
if (client.isResized())
{
if (client.getSetting(Varbits.SIDE_PANELS) == 1)
{
viewportInfo = WidgetInfo.RESIZABLE_VIEWPORT_BOTTOM_LINE;
}
else
{
viewportInfo = WidgetInfo.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX;
}
}
Widget viewport = client.getWidget(viewportInfo);
if (viewport != null)
{
Widget[] subViewports = viewport.getStaticChildren();
if (subViewports.length > 0)
{
for (Widget w : subViewports)
{
if (w.getNestedChildren().length > 0)
{
return null;
}
}
}
else
{
if (viewport.getNestedChildren().length > 0)
{
return null;
}
}
}
// gets the hidden/highlighted items from the text box in the config
String configItems = config.getHiddenItems();
@@ -199,6 +232,13 @@ public class GroundItemsOverlay extends Overlay
for (int i = 0; i < itemIds.size(); ++i)
{
Point point = itemLayer.getCanvasLocation();
// if the item is offscreen, don't bother drawing it
if (point == null || !pointInWidget(point, viewport))
{
continue;
}
int itemId = itemIds.get(i);
int quantity = items.get(itemId);
ItemComposition item = itemCache.getUnchecked(itemId);
@@ -270,13 +310,6 @@ public class GroundItemsOverlay extends Overlay
String itemString = itemStringBuilder.toString();
itemStringBuilder.setLength(0);
Point point = itemLayer.getCanvasLocation();
// if the item is offscreen, don't bother drawing it
if (point == null)
{
continue;
}
int screenX = point.getX() + 2 - (fm.stringWidth(itemString) / 2);
// Drawing the shadow for the text, 1px on both x and y
@@ -291,4 +324,14 @@ public class GroundItemsOverlay extends Overlay
return null;
}
private boolean pointInWidget(Point point, Widget widget)
{
if (widget != null)
{
Rectangle bounds = widget.getBounds();
return bounds != null && bounds.contains(new java.awt.Point(point.getX(), point.getY()));
}
return false;
}
}