runelite-client: add projectiles to devtools

This commit is contained in:
Frederik Engels
2018-01-14 09:28:49 -05:00
committed by Adam
parent b319d74f8d
commit cacb69cea3
4 changed files with 111 additions and 1 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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());