runelite-client: add projectiles to devtools
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.devtools;
|
||||
|
||||
import java.awt.BasicStroke;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
@@ -37,6 +38,7 @@ import java.awt.geom.Rectangle2D;
|
||||
import java.util.List;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.DecorativeObject;
|
||||
import net.runelite.api.GameObject;
|
||||
@@ -45,7 +47,9 @@ import net.runelite.api.Item;
|
||||
import net.runelite.api.ItemLayer;
|
||||
import net.runelite.api.NPC;
|
||||
import net.runelite.api.Node;
|
||||
import net.runelite.api.Perspective;
|
||||
import net.runelite.api.Player;
|
||||
import net.runelite.api.Projectile;
|
||||
import net.runelite.api.Region;
|
||||
import net.runelite.api.Tile;
|
||||
import net.runelite.api.WallObject;
|
||||
@@ -117,6 +121,11 @@ public class DevToolsOverlay extends Overlay
|
||||
renderInventory(graphics);
|
||||
}
|
||||
|
||||
if (plugin.isToggleProjectiles())
|
||||
{
|
||||
renderProjectiles(graphics);
|
||||
}
|
||||
|
||||
renderWidgets(graphics);
|
||||
|
||||
return null;
|
||||
@@ -325,6 +334,64 @@ public class DevToolsOverlay extends Overlay
|
||||
}
|
||||
}
|
||||
|
||||
private void renderProjectiles(Graphics2D graphics)
|
||||
{
|
||||
List<Projectile> projectiles = client.getProjectiles();
|
||||
|
||||
for (Projectile projectile : projectiles)
|
||||
{
|
||||
int originX = projectile.getX1();
|
||||
int originY = projectile.getY1();
|
||||
|
||||
net.runelite.api.Point tilePoint = new net.runelite.api.Point(originX, originY);
|
||||
Polygon poly = Perspective.getCanvasTilePoly(client, tilePoint);
|
||||
|
||||
if (poly != null)
|
||||
{
|
||||
OverlayUtil.renderPolygon(graphics, poly, Color.RED);
|
||||
}
|
||||
|
||||
long projectileLength = projectile.getLength().toMillis();
|
||||
int projectileId = projectile.getId();
|
||||
Actor projectileInteracting = projectile.getInteracting();
|
||||
|
||||
String infoString = "";
|
||||
|
||||
if (projectileInteracting == null)
|
||||
{
|
||||
infoString += "AoE";
|
||||
}
|
||||
else
|
||||
{
|
||||
infoString += "Targeted (T: " + projectileInteracting.getName() + ")";
|
||||
}
|
||||
|
||||
infoString += " (ID: " + projectileId + ") (L: " + projectileLength + "ms)";
|
||||
|
||||
if (projectileInteracting != null)
|
||||
{
|
||||
OverlayUtil.renderActorOverlay(graphics, projectile.getInteracting(), infoString, Color.RED);
|
||||
}
|
||||
else
|
||||
{
|
||||
net.runelite.api.Point targetPoint = projectile.getTarget();
|
||||
OverlayUtil.renderTilePointOverlay(graphics, client, targetPoint, infoString, Color.RED);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void renderProjectileOrigin(Graphics2D graphics, Projectile projectile, int floor, net.runelite.api.Point origin)
|
||||
{
|
||||
Polygon poly = Perspective.getCanvasTilePoly(client, origin);
|
||||
|
||||
graphics.setColor(Color.RED);
|
||||
graphics.setStroke(new BasicStroke(2));
|
||||
graphics.drawPolygon(poly);
|
||||
graphics.setColor(Color.RED);
|
||||
graphics.fillPolygon(poly);
|
||||
}
|
||||
|
||||
public void renderWidgets(Graphics2D graphics)
|
||||
{
|
||||
Widget widget = plugin.currentWidget;
|
||||
|
||||
@@ -60,6 +60,7 @@ public class DevToolsPanel extends PluginPanel
|
||||
private JButton renderWallsBtn = new JButton();
|
||||
private JButton renderDecorBtn = new JButton();
|
||||
private JButton renderInventoryBtn = new JButton();
|
||||
private JButton renderProjectilesBtn = new JButton();
|
||||
|
||||
private JLabel textLbl = new JLabel();
|
||||
private JLabel textColorLbl = new JLabel();
|
||||
@@ -92,7 +93,7 @@ public class DevToolsPanel extends PluginPanel
|
||||
private JPanel createOptionsPanel()
|
||||
{
|
||||
JPanel container = new JPanel();
|
||||
container.setLayout(new GridLayout(5, 2, 3, 3));
|
||||
container.setLayout(new GridLayout(6, 2, 3, 3));
|
||||
|
||||
renderPlayersBtn = new JButton("Players");
|
||||
renderPlayersBtn.addActionListener(e ->
|
||||
@@ -158,6 +159,14 @@ public class DevToolsPanel extends PluginPanel
|
||||
});
|
||||
container.add(renderInventoryBtn);
|
||||
|
||||
renderProjectilesBtn = new JButton("Projectiles");
|
||||
renderProjectilesBtn.addActionListener(e ->
|
||||
{
|
||||
highlightButton(renderProjectilesBtn);
|
||||
plugin.toggleProjectiles();
|
||||
});
|
||||
container.add(renderProjectilesBtn);
|
||||
|
||||
JButton settingsSnapshotBtn = new JButton("Get Settings");
|
||||
settingsSnapshotBtn.addActionListener(settingsTracker::snapshot);
|
||||
container.add(settingsSnapshotBtn);
|
||||
|
||||
@@ -56,6 +56,7 @@ public class DevToolsPlugin extends Plugin
|
||||
private boolean toggleWalls;
|
||||
private boolean toggleDecor;
|
||||
private boolean toggleInventory;
|
||||
private boolean toggleProjectiles;
|
||||
|
||||
Widget currentWidget;
|
||||
int itemIndex = -1;
|
||||
@@ -135,6 +136,11 @@ public class DevToolsPlugin extends Plugin
|
||||
toggleInventory = !toggleInventory;
|
||||
}
|
||||
|
||||
void toggleProjectiles()
|
||||
{
|
||||
toggleProjectiles = !toggleProjectiles;
|
||||
}
|
||||
|
||||
boolean isTogglePlayers()
|
||||
{
|
||||
return togglePlayers;
|
||||
@@ -175,4 +181,8 @@ public class DevToolsPlugin extends Plugin
|
||||
return toggleInventory;
|
||||
}
|
||||
|
||||
boolean isToggleProjectiles()
|
||||
{
|
||||
return toggleProjectiles;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ import java.awt.RenderingHints;
|
||||
import java.awt.geom.Point2D;
|
||||
import java.awt.image.BufferedImage;
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Perspective;
|
||||
import net.runelite.api.Point;
|
||||
import net.runelite.api.SpritePixels;
|
||||
import net.runelite.api.TileObject;
|
||||
@@ -318,6 +320,28 @@ public class OverlayUtil
|
||||
}
|
||||
}
|
||||
|
||||
public static void renderTilePointOverlay(Graphics2D graphics, Client client, Point point, String text, Color color)
|
||||
{
|
||||
Polygon poly = Perspective.getCanvasTilePoly(client, point);
|
||||
|
||||
if (poly != null)
|
||||
{
|
||||
renderPolygon(graphics, poly, color);
|
||||
}
|
||||
|
||||
Point minimapLocation = Perspective.worldToMiniMap(client, point.getX(), point.getY());
|
||||
if (minimapLocation != null)
|
||||
{
|
||||
renderMinimapLocation(graphics, minimapLocation, color);
|
||||
}
|
||||
|
||||
Point textLocation = Perspective.getCanvasTextLocation(client, graphics, point, text, 0);
|
||||
if (textLocation != null)
|
||||
{
|
||||
renderTextLocation(graphics, textLocation, text, color);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setGraphicProperties(Graphics2D graphics)
|
||||
{
|
||||
graphics.setFont(FontManager.getRunescapeFont());
|
||||
|
||||
Reference in New Issue
Block a user