runelite-client: update pc plugin for widget changes, and cleanup
This commit is contained in:
@@ -30,23 +30,27 @@ class WidgetID
|
||||
static final int INVENTORY_GROUP_ID = 149;
|
||||
static final int PESTRCONTROL_GROUP_ID = 408;
|
||||
static final int CLAN_CHAT_GROUP_ID = 7;
|
||||
static final int MINIMAP_GROUP_ID = 160;
|
||||
|
||||
static class PestControl
|
||||
{
|
||||
static final int PURPLE_SHIELD = 18;
|
||||
static final int BLUE_SHIELD = 20;
|
||||
static final int YELLOW_SHIELD = 22;
|
||||
static final int RED_SHIELD = 24;
|
||||
static final int PURPLE_SHIELD = 21;
|
||||
static final int BLUE_SHIELD = 23;
|
||||
static final int YELLOW_SHIELD = 25;
|
||||
static final int RED_SHIELD = 27;
|
||||
|
||||
static final int PURPLE_HEALTH = 14;
|
||||
static final int BLUE_HEALTH = 15;
|
||||
static final int YELLOW_HEALTH = 16;
|
||||
static final int RED_HEALTH = 17;
|
||||
static final int PURPLE_HEALTH = 17;
|
||||
static final int BLUE_HEALTH = 18;
|
||||
static final int YELLOW_HEALTH = 19;
|
||||
static final int RED_HEALTH = 20;
|
||||
|
||||
static final int PURPLE_ICON = 10;
|
||||
static final int BLUE_ICON = 11;
|
||||
static final int YELLOW_ICON = 12;
|
||||
static final int RED_ICON = 13;
|
||||
static final int PURPLE_ICON = 13;
|
||||
static final int BLUE_ICON = 14;
|
||||
static final int YELLOW_ICON = 15;
|
||||
static final int RED_ICON = 16;
|
||||
|
||||
static final int ACTIVITY_BAR = 6;
|
||||
static final int ACTIVITY_PROGRESS = 8;
|
||||
}
|
||||
|
||||
static class ClanChat
|
||||
@@ -56,8 +60,13 @@ class WidgetID
|
||||
static final int OWNER = 5;
|
||||
}
|
||||
|
||||
public static class Bank
|
||||
static class Bank
|
||||
{
|
||||
static final int ITEM_CONTAINER = 12;
|
||||
}
|
||||
|
||||
static class Minimap
|
||||
{
|
||||
static final int XP_ORB = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,12 +40,17 @@ public enum WidgetInfo
|
||||
PESTCONTROL_BLUE_ICON(WidgetID.PESTRCONTROL_GROUP_ID, WidgetID.PestControl.BLUE_ICON),
|
||||
PESTCONTROL_YELLOW_ICON(WidgetID.PESTRCONTROL_GROUP_ID, WidgetID.PestControl.YELLOW_ICON),
|
||||
PESTCONTROL_RED_ICON(WidgetID.PESTRCONTROL_GROUP_ID, WidgetID.PestControl.RED_ICON),
|
||||
PESTCONTROL_ACTIVITY_BAR(WidgetID.PESTRCONTROL_GROUP_ID, WidgetID.PestControl.ACTIVITY_BAR),
|
||||
PESTCONTROL_ACTIVITY_PROGRESS(WidgetID.PESTRCONTROL_GROUP_ID, WidgetID.PestControl.ACTIVITY_PROGRESS),
|
||||
|
||||
CLAN_CHAT_TITLE(WidgetID.CLAN_CHAT_GROUP_ID, WidgetID.ClanChat.TITLE),
|
||||
CLAN_CHAT_NAME(WidgetID.CLAN_CHAT_GROUP_ID, WidgetID.ClanChat.NAME),
|
||||
CLAN_CHAT_OWNER(WidgetID.CLAN_CHAT_GROUP_ID, WidgetID.ClanChat.OWNER),
|
||||
|
||||
BANK_ITEM_CONTAINER(WidgetID.BANK_GROUP_ID, WidgetID.Bank.ITEM_CONTAINER);
|
||||
BANK_ITEM_CONTAINER(WidgetID.BANK_GROUP_ID, WidgetID.Bank.ITEM_CONTAINER),
|
||||
|
||||
MINIMAP_XP_ORG(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.XP_ORB);
|
||||
|
||||
|
||||
private final int groupId;
|
||||
private final int childId;
|
||||
|
||||
@@ -25,19 +25,18 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.pestcontrol;
|
||||
|
||||
import java.awt.BasicStroke;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Polygon;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import net.runelite.api.Actor;
|
||||
import java.util.Arrays;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.Point;
|
||||
import net.runelite.api.Query;
|
||||
import net.runelite.api.queries.NPCQuery;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.client.RuneLite;
|
||||
@@ -47,6 +46,7 @@ import static net.runelite.client.plugins.pestcontrol.Portal.RED;
|
||||
import static net.runelite.client.plugins.pestcontrol.Portal.YELLOW;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
import net.runelite.client.ui.overlay.OverlayUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -106,26 +106,9 @@ public class PestControlOverlay extends Overlay
|
||||
|
||||
private void renderSpinners(Graphics2D graphics)
|
||||
{
|
||||
NPC[] npcs = client.getNpcs();
|
||||
if (npcs == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (NPC npc : npcs)
|
||||
{
|
||||
if (npc == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
String name = npc.getName();
|
||||
|
||||
if (name.toLowerCase().contains("spinner"))
|
||||
{
|
||||
renderActorOverlay(graphics, npc, name, Color.CYAN);
|
||||
}
|
||||
}
|
||||
Query query = new NPCQuery().nameEquals("Spinner");
|
||||
NPC[] result = client.runQuery(query);
|
||||
Arrays.stream(result).forEach(npc -> OverlayUtil.renderActorOverlay(graphics, npc, npc.getName(), Color.CYAN));
|
||||
}
|
||||
|
||||
private void renderPortalWidgets(Graphics2D graphics)
|
||||
@@ -197,58 +180,58 @@ public class PestControlOverlay extends Overlay
|
||||
{
|
||||
renderWidgetOverlay(graphics, portal, "NEXT", Color.ORANGE);
|
||||
}
|
||||
|
||||
renderProgressWidget(graphics);
|
||||
}
|
||||
|
||||
private void renderActorOverlay(Graphics2D graphics, Actor actor, String text, Color color)
|
||||
private void renderProgressWidget(Graphics2D graphics)
|
||||
{
|
||||
Polygon poly = actor.getCanvasTilePoly();
|
||||
if (poly != null)
|
||||
Widget bar = client.getWidget(WidgetInfo.PESTCONTROL_ACTIVITY_BAR).getChild(0);
|
||||
Rectangle2D bounds = bar.getBounds().getBounds2D();
|
||||
|
||||
Widget prgs = client.getWidget(WidgetInfo.PESTCONTROL_ACTIVITY_PROGRESS).getChild(0);
|
||||
int perc = (int) ((prgs.getBounds().getWidth() / bounds.getWidth()) * 100);
|
||||
|
||||
Color color = Color.GREEN;
|
||||
if (perc < 25)
|
||||
{
|
||||
graphics.setColor(color);
|
||||
graphics.setStroke(new BasicStroke(2));
|
||||
graphics.drawPolygon(poly);
|
||||
graphics.setColor(new Color(0, 0, 0, 50));
|
||||
graphics.fillPolygon(poly);
|
||||
color = Color.RED;
|
||||
}
|
||||
|
||||
Point minimapLocation = actor.getMinimapLocation();
|
||||
if (minimapLocation != null)
|
||||
{
|
||||
graphics.setColor(color);
|
||||
graphics.fillOval(minimapLocation.getX(), minimapLocation.getY(), 5, 5);
|
||||
graphics.setColor(Color.WHITE);
|
||||
graphics.setStroke(new BasicStroke(1));
|
||||
graphics.drawOval(minimapLocation.getX(), minimapLocation.getY(), 5, 5);
|
||||
}
|
||||
String text = String.valueOf(perc) + "%";
|
||||
|
||||
Point textLocation = actor.getCanvasTextLocation(graphics, text, actor.getModelHeight() + 40);
|
||||
if (textLocation != null)
|
||||
{
|
||||
int x = textLocation.getX();
|
||||
int y = textLocation.getY();
|
||||
FontMetrics fm = graphics.getFontMetrics();
|
||||
Rectangle2D textBounds = fm.getStringBounds(text, graphics);
|
||||
int x = (int) (bounds.getX() - textBounds.getWidth());
|
||||
int y = (int) (bounds.getY() + fm.getHeight() - 2);
|
||||
|
||||
graphics.setColor(Color.BLACK);
|
||||
graphics.drawString(text, x + 1, y + 1);
|
||||
|
||||
graphics.setColor(color);
|
||||
graphics.drawString(text, x, y);
|
||||
}
|
||||
graphics.setColor(Color.BLACK);
|
||||
graphics.drawString(text, x + 1, y + 1);
|
||||
graphics.setColor(color);
|
||||
graphics.drawString(text, x, y);
|
||||
}
|
||||
|
||||
private void renderWidgetOverlay(Graphics2D graphics, Portal portal, String text, Color color)
|
||||
{
|
||||
Widget shield = client.getWidget(portal.getShield());
|
||||
Widget icon = client.getWidget(portal.getIcon());
|
||||
Widget hp = client.getWidget(portal.getHitpoints());
|
||||
|
||||
Widget bar = client.getWidget(WidgetInfo.PESTCONTROL_ACTIVITY_BAR).getChild(0);
|
||||
|
||||
Rectangle2D barBounds = bar.getBounds().getBounds2D();
|
||||
|
||||
// create one rectangle from two different widget bounds
|
||||
Rectangle2D bounds = union(shield.getBounds().getBounds2D(), icon.getBounds().getBounds2D());
|
||||
bounds = union(bounds, hp.getBounds().getBounds2D());
|
||||
|
||||
graphics.setColor(color);
|
||||
graphics.draw(bounds);
|
||||
graphics.draw(new Rectangle2D.Double(bounds.getX(), bounds.getY() - 2, bounds.getWidth(), bounds.getHeight() - 3));
|
||||
|
||||
FontMetrics fm = graphics.getFontMetrics();
|
||||
Rectangle2D textBounds = fm.getStringBounds(text, graphics);
|
||||
int x = (int) (bounds.getX() + (bounds.getWidth() / 2) - (textBounds.getWidth() / 2));
|
||||
int y = (int) (bounds.getY() + bounds.getHeight() + textBounds.getHeight());
|
||||
int y = (int) (bounds.getY() + bounds.getHeight() + textBounds.getHeight() + barBounds.getHeight());
|
||||
|
||||
graphics.setColor(Color.BLACK);
|
||||
graphics.drawString(text, x + 1, y + 1);
|
||||
@@ -283,4 +266,4 @@ public class PestControlOverlay extends Overlay
|
||||
{
|
||||
return widget.getText().trim().equals("0");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user