Update almost everything to the new API

This commit is contained in:
Max Weber
2018-03-09 04:51:02 -07:00
parent cf4d5d8333
commit b75dddca28
32 changed files with 157 additions and 174 deletions

View File

@@ -27,6 +27,8 @@ package net.runelite.api;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Polygon; import java.awt.Polygon;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
public interface Actor extends Renderable public interface Actor extends Renderable
{ {
@@ -40,9 +42,9 @@ public interface Actor extends Renderable
int getHealth(); int getHealth();
Point getWorldLocation(); WorldPoint getWorldLocation();
Point getLocalLocation(); LocalPoint getLocalLocation();
int getOrientation(); int getOrientation();
@@ -62,8 +64,6 @@ public interface Actor extends Renderable
Point getMinimapLocation(); Point getMinimapLocation();
Point getRegionLocation();
/** /**
* Returns the logical height of the actor's model. This is roughly where the health bar is drawn. * Returns the logical height of the actor's model. This is roughly where the health bar is drawn.
*/ */

View File

@@ -28,6 +28,8 @@ import java.awt.Canvas;
import java.awt.Dimension; import java.awt.Dimension;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.annotation.Nullable;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
@@ -184,7 +186,8 @@ public interface Client extends GameEngine
SpritePixels createSpritePixels(int[] pixels, int width, int height); SpritePixels createSpritePixels(int[] pixels, int width, int height);
Point getSceneDestinationLocation(); @Nullable
LocalPoint getLocalDestinationLocation();
List<Projectile> getProjectiles(); List<Projectile> getProjectiles();

View File

@@ -34,6 +34,7 @@ import java.awt.image.BufferedImage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.model.Jarvis; import net.runelite.api.model.Jarvis;
import net.runelite.api.model.Triangle; import net.runelite.api.model.Triangle;
import net.runelite.api.model.Vertex; import net.runelite.api.model.Vertex;
@@ -218,7 +219,7 @@ public class Perspective
{ {
int angle = client.getMapAngle() & 0x7FF; int angle = client.getMapAngle() & 0x7FF;
Point localLocation = client.getLocalPlayer().getLocalLocation(); LocalPoint localLocation = client.getLocalPlayer().getLocalLocation();
x = x / 32 - localLocation.getX() / 32; x = x / 32 - localLocation.getX() / 32;
y = y / 32 - localLocation.getY() / 32; y = y / 32 - localLocation.getY() / 32;
@@ -328,7 +329,7 @@ public class Perspective
* @return a {@link Polygon} on screen corresponding to the given * @return a {@link Polygon} on screen corresponding to the given
* localLocation. * localLocation.
*/ */
public static Polygon getCanvasTilePoly(Client client, Point localLocation) public static Polygon getCanvasTilePoly(Client client, LocalPoint localLocation)
{ {
return getCanvasTileAreaPoly(client, localLocation, 1); return getCanvasTileAreaPoly(client, localLocation, 1);
} }
@@ -342,7 +343,7 @@ public class Perspective
* size = 3 * size = 3
* @return a polygon representing the tiles in the area * @return a polygon representing the tiles in the area
*/ */
public static Polygon getCanvasTileAreaPoly(Client client, Point localLocation, int size) public static Polygon getCanvasTileAreaPoly(Client client, LocalPoint localLocation, int size)
{ {
int plane = client.getPlane(); int plane = client.getPlane();
int halfTile = LOCAL_TILE_SIZE / 2; int halfTile = LOCAL_TILE_SIZE / 2;
@@ -391,7 +392,7 @@ public class Perspective
* @return a {@link Point} on screen corresponding to the given * @return a {@link Point} on screen corresponding to the given
* localLocation. * localLocation.
*/ */
public static Point getCanvasTextLocation(Client client, Graphics2D graphics, Point localLocation, String text, int zOffset) public static Point getCanvasTextLocation(Client client, Graphics2D graphics, LocalPoint localLocation, String text, int zOffset)
{ {
int plane = client.getPlane(); int plane = client.getPlane();
@@ -420,7 +421,7 @@ public class Perspective
* @return a {@link Point} on screen corresponding to the given * @return a {@link Point} on screen corresponding to the given
* localLocation. * localLocation.
*/ */
public static Point getCanvasImageLocation(Client client, Graphics2D graphics, Point localLocation, BufferedImage image, int zOffset) public static Point getCanvasImageLocation(Client client, Graphics2D graphics, LocalPoint localLocation, BufferedImage image, int zOffset)
{ {
int plane = client.getPlane(); int plane = client.getPlane();
@@ -446,7 +447,7 @@ public class Perspective
* @return a {@link Point} on screen corresponding to the given * @return a {@link Point} on screen corresponding to the given
* localLocation. * localLocation.
*/ */
public static Point getMiniMapImageLocation(Client client, Point localLocation, BufferedImage image) public static Point getMiniMapImageLocation(Client client, LocalPoint localLocation, BufferedImage image)
{ {
Point p = Perspective.worldToMiniMap(client, localLocation.getX(), localLocation.getY()); Point p = Perspective.worldToMiniMap(client, localLocation.getX(), localLocation.getY());
@@ -472,7 +473,7 @@ public class Perspective
* @return a {@link Point} on screen corresponding to the given * @return a {@link Point} on screen corresponding to the given
* localLocation. * localLocation.
*/ */
public static Point getCanvasSpriteLocation(Client client, Graphics2D graphics, Point localLocation, SpritePixels sprite, int zOffset) public static Point getCanvasSpriteLocation(Client client, Graphics2D graphics, LocalPoint localLocation, SpritePixels sprite, int zOffset)
{ {
int plane = client.getPlane(); int plane = client.getPlane();
@@ -718,7 +719,7 @@ public class Perspective
* @return a {@link Point} on screen corresponding to the given * @return a {@link Point} on screen corresponding to the given
* localLocation. * localLocation.
*/ */
public static Point getCanvasTextMiniMapLocation(Client client, Graphics2D graphics, Point localLocation, String text) public static Point getCanvasTextMiniMapLocation(Client client, Graphics2D graphics, LocalPoint localLocation, String text)
{ {
Point p = Perspective.worldToMiniMap(client, localLocation.getX(), localLocation.getY()); Point p = Perspective.worldToMiniMap(client, localLocation.getX(), localLocation.getY());

View File

@@ -24,6 +24,9 @@
*/ */
package net.runelite.api; package net.runelite.api;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
public interface Tile public interface Tile
{ {
/** /**
@@ -45,11 +48,11 @@ public interface Tile
SceneTileModel getSceneTileModel(); SceneTileModel getSceneTileModel();
Point getWorldLocation(); WorldPoint getWorldLocation();
Point getRegionLocation(); Point getRegionLocation();
Point getLocalLocation(); LocalPoint getLocalLocation();
int getPlane(); int getPlane();
} }

View File

@@ -27,6 +27,8 @@ package net.runelite.api;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Polygon; import java.awt.Polygon;
import java.awt.geom.Area; import java.awt.geom.Area;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
public interface TileObject public interface TileObject
{ {
@@ -38,11 +40,9 @@ public interface TileObject
int getId(); int getId();
Point getWorldLocation(); WorldPoint getWorldLocation();
Point getLocalLocation(); LocalPoint getLocalLocation();
Point getRegionLocation();
Point getCanvasLocation(); Point getCanvasLocation();

View File

@@ -25,13 +25,13 @@
package net.runelite.api.events; package net.runelite.api.events;
import lombok.Data; import lombok.Data;
import net.runelite.api.Point;
import net.runelite.api.Projectile; import net.runelite.api.Projectile;
import net.runelite.api.coords.LocalPoint;
@Data @Data
public class ProjectileMoved public class ProjectileMoved
{ {
private Projectile projectile; private Projectile projectile;
private Point position; private LocalPoint position;
private int plane; private int z;
} }

View File

@@ -26,8 +26,8 @@ package net.runelite.api.queries;
import static java.lang.Math.abs; import static java.lang.Math.abs;
import net.runelite.api.Actor; import net.runelite.api.Actor;
import net.runelite.api.Point;
import net.runelite.api.Query; import net.runelite.api.Query;
import net.runelite.api.coords.LocalPoint;
public abstract class ActorQuery<EntityType extends Actor, QueryType> extends Query<EntityType, QueryType> public abstract class ActorQuery<EntityType extends Actor, QueryType> extends Query<EntityType, QueryType>
{ {
@@ -68,7 +68,7 @@ public abstract class ActorQuery<EntityType extends Actor, QueryType> extends Qu
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public QueryType atLocalLocation(Point location) public QueryType atLocalLocation(LocalPoint location)
{ {
predicate = and(actor -> actor.getLocalLocation().equals(location)); predicate = and(actor -> actor.getLocalLocation().equals(location));
return (QueryType) this; return (QueryType) this;
@@ -96,18 +96,18 @@ public abstract class ActorQuery<EntityType extends Actor, QueryType> extends Qu
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public QueryType isWithinDistance(Point to, int distance) public QueryType isWithinDistance(LocalPoint to, int distance)
{ {
predicate = and(a -> a.getLocalLocation().distanceTo(to) <= distance); predicate = and(a -> a.getLocalLocation().distanceTo(to) <= distance);
return (QueryType) this; return (QueryType) this;
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public QueryType isWithinArea(Point from, int area) public QueryType isWithinArea(LocalPoint from, int area)
{ {
predicate = and(a -> predicate = and(a ->
{ {
Point localLocation = a.getLocalLocation(); LocalPoint localLocation = a.getLocalLocation();
return abs(localLocation.getX() - from.getX()) < area return abs(localLocation.getX() - from.getX()) < area
&& abs(localLocation.getY() - from.getY()) < area; && abs(localLocation.getY() - from.getY()) < area;
}); });

View File

@@ -26,7 +26,6 @@ package net.runelite.api.queries;
import static java.lang.Math.abs; import static java.lang.Math.abs;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Point;
import net.runelite.api.Query; import net.runelite.api.Query;
import net.runelite.api.Region; import net.runelite.api.Region;
import net.runelite.api.Tile; import net.runelite.api.Tile;
@@ -34,6 +33,8 @@ import net.runelite.api.TileObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
public abstract class TileObjectQuery<EntityType extends TileObject, QueryType> extends Query<EntityType, QueryType> public abstract class TileObjectQuery<EntityType extends TileObject, QueryType> extends Query<EntityType, QueryType>
{ {
@@ -78,32 +79,32 @@ public abstract class TileObjectQuery<EntityType extends TileObject, QueryType>
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public QueryType atWorldLocation(Point location) public QueryType atWorldLocation(WorldPoint location)
{ {
predicate = and(object -> object.getWorldLocation().equals(location)); predicate = and(object -> object.getWorldLocation().equals(location));
return (QueryType) this; return (QueryType) this;
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public QueryType atLocalLocation(Point location) public QueryType atLocalLocation(LocalPoint location)
{ {
predicate = and(object -> object.getLocalLocation().equals(location)); predicate = and(object -> object.getLocalLocation().equals(location));
return (QueryType) this; return (QueryType) this;
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public QueryType isWithinDistance(Point to, int distance) public QueryType isWithinDistance(LocalPoint to, int distance)
{ {
predicate = and(a -> a.getLocalLocation().distanceTo(to) <= distance); predicate = and(a -> a.getLocalLocation().distanceTo(to) <= distance);
return (QueryType) this; return (QueryType) this;
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public QueryType isWithinArea(Point from, int area) public QueryType isWithinArea(LocalPoint from, int area)
{ {
predicate = and(a -> predicate = and(a ->
{ {
Point localLocation = a.getLocalLocation(); LocalPoint localLocation = a.getLocalLocation();
return abs(localLocation.getX() - from.getX()) < area return abs(localLocation.getX() - from.getX()) < area
&& abs(localLocation.getY() - from.getY()) < area; && abs(localLocation.getY() - from.getY()) < area;
}); });

View File

@@ -40,12 +40,12 @@ import net.runelite.api.MainBufferProvider;
import net.runelite.api.MenuAction; import net.runelite.api.MenuAction;
import net.runelite.api.MessageNode; import net.runelite.api.MessageNode;
import net.runelite.api.PacketBuffer; import net.runelite.api.PacketBuffer;
import net.runelite.api.Point;
import net.runelite.api.Projectile; import net.runelite.api.Projectile;
import net.runelite.api.Region; import net.runelite.api.Region;
import net.runelite.api.RenderOverview; import net.runelite.api.RenderOverview;
import net.runelite.api.TextureProvider; import net.runelite.api.TextureProvider;
import net.runelite.api.WorldMapManager; import net.runelite.api.WorldMapManager;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuEntryAdded;
@@ -372,11 +372,11 @@ public class Hooks
*/ */
public static void projectileMoved(Projectile projectile, int targetX, int targetY, int targetZ, int cycle) public static void projectileMoved(Projectile projectile, int targetX, int targetY, int targetZ, int cycle)
{ {
Point position = new Point(targetX, targetY); LocalPoint position = new LocalPoint(targetX, targetY);
ProjectileMoved projectileMoved = new ProjectileMoved(); ProjectileMoved projectileMoved = new ProjectileMoved();
projectileMoved.setProjectile(projectile); projectileMoved.setProjectile(projectile);
projectileMoved.setPosition(position); projectileMoved.setPosition(position);
projectileMoved.setPlane(targetZ); projectileMoved.setZ(targetZ);
eventBus.post(projectileMoved); eventBus.post(projectileMoved);
} }

View File

@@ -32,6 +32,7 @@ import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
@@ -56,7 +57,7 @@ public class AgilityOverlay extends Overlay
@Override @Override
public Dimension render(Graphics2D graphics, java.awt.Point parent) public Dimension render(Graphics2D graphics, java.awt.Point parent)
{ {
Point playerLocation = client.getLocalPlayer().getLocalLocation(); LocalPoint playerLocation = client.getLocalPlayer().getLocalLocation();
Point mousePosition = client.getMouseCanvasPosition(); Point mousePosition = client.getMouseCanvasPosition();
plugin.getObstacles().forEach((object, tile) -> plugin.getObstacles().forEach((object, tile) ->
{ {

View File

@@ -25,25 +25,21 @@
package net.runelite.client.plugins.barrows; package net.runelite.client.plugins.barrows;
import lombok.Getter; import lombok.Getter;
import net.runelite.api.Point; import lombok.RequiredArgsConstructor;
import net.runelite.api.coords.WorldPoint;
@RequiredArgsConstructor
public enum BarrowsBrothers public enum BarrowsBrothers
{ {
VERAC("V", new Point(3557, 3298)), VERAC("V", new WorldPoint(3557, 3298, 0)),
DHAROK("D", new Point(3575, 3298)), DHAROK("D", new WorldPoint(3575, 3298, 0)),
AHRIM("A", new Point(3566, 3289)), AHRIM("A", new WorldPoint(3566, 3289, 0)),
TORAG("T", new Point(3553, 3283)), TORAG("T", new WorldPoint(3553, 3283, 0)),
KARIL("K", new Point(3566, 3275)), KARIL("K", new WorldPoint(3566, 3275, 0)),
GUTHAN("G", new Point(3577, 3283)); GUTHAN("G", new WorldPoint(3577, 3283, 0));
@Getter @Getter
private final String name; private final String name;
@Getter @Getter
private final Point location; private final WorldPoint location;
BarrowsBrothers(String name, net.runelite.api.Point location)
{
this.name = name;
this.location = location;
}
} }

View File

@@ -37,6 +37,7 @@ import net.runelite.api.ObjectComposition;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.WallObject; import net.runelite.api.WallObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
@@ -94,12 +95,12 @@ class BarrowsOverlay extends Overlay
return null; return null;
} }
private void renderObjects(Graphics2D graphics, Player local) private void renderObjects(Graphics2D graphics, Player localPlayer)
{ {
net.runelite.api.Point localLocation = local.getLocalLocation(); LocalPoint localLocation = localPlayer.getLocalLocation();
for (WallObject wall : plugin.getWalls()) for (WallObject wall : plugin.getWalls())
{ {
net.runelite.api.Point location = wall.getLocalLocation(); LocalPoint location = wall.getLocalLocation();
if (localLocation.distanceTo(location) <= MAX_DISTANCE) if (localLocation.distanceTo(location) <= MAX_DISTANCE)
{ {
renderWalls(graphics, wall); renderWalls(graphics, wall);
@@ -108,7 +109,7 @@ class BarrowsOverlay extends Overlay
for (GameObject ladder : plugin.getLadders()) for (GameObject ladder : plugin.getLadders())
{ {
net.runelite.api.Point location = ladder.getLocalLocation(); LocalPoint location = ladder.getLocalLocation();
if (localLocation.distanceTo(location) <= MAX_DISTANCE) if (localLocation.distanceTo(location) <= MAX_DISTANCE)
{ {
renderLadders(graphics, ladder); renderLadders(graphics, ladder);
@@ -162,15 +163,15 @@ class BarrowsOverlay extends Overlay
{ {
for (BarrowsBrothers brother : BarrowsBrothers.values()) for (BarrowsBrothers brother : BarrowsBrothers.values())
{ {
net.runelite.api.Point location = brother.getLocation(); LocalPoint localLocation = LocalPoint.fromWorld(client, brother.getLocation());
if (!Perspective.isWorldInScene(client, location)) if (localLocation == null)
{ {
continue; continue;
} }
net.runelite.api.Point minimapText = Perspective.getCanvasTextMiniMapLocation(client, graphics, net.runelite.api.Point minimapText = Perspective.getCanvasTextMiniMapLocation(client, graphics,
Perspective.worldToLocal(client, brother.getLocation()), brother.getName()); localLocation, brother.getName());
if (minimapText != null) if (minimapText != null)
{ {

View File

@@ -32,6 +32,7 @@ import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameObject; import net.runelite.api.GameObject;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
@@ -60,12 +61,12 @@ class ConveyorBeltOverlay extends Overlay
return null; return null;
} }
Point localLocation = client.getLocalPlayer().getLocalLocation(); LocalPoint localLocation = client.getLocalPlayer().getLocalLocation();
Point mousePosition = client.getMouseCanvasPosition(); Point mousePosition = client.getMouseCanvasPosition();
GameObject object = plugin.getConveyorBelt(); GameObject object = plugin.getConveyorBelt();
Point location = object.getLocalLocation(); LocalPoint location = object.getLocalLocation();
if (localLocation.distanceTo(location) <= MAX_DISTANCE) if (localLocation.distanceTo(location) <= MAX_DISTANCE)
{ {
Area objectClickbox = object.getClickbox(); Area objectClickbox = object.getClickbox();

View File

@@ -33,6 +33,7 @@ import net.runelite.api.Client;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import static net.runelite.api.Perspective.LOCAL_TILE_SIZE; import static net.runelite.api.Perspective.LOCAL_TILE_SIZE;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.OverlayPriority;
@@ -66,19 +67,14 @@ class CannonOverlay extends Overlay
return null; return null;
} }
if (!Perspective.isWorldInScene(client, plugin.getCannonPosition())) LocalPoint cannonPoint = LocalPoint.fromWorld(client, plugin.getCannonPosition());
{
return null;
}
Point cannonPoint = Perspective.worldToLocal(client, plugin.getCannonPosition());
if (cannonPoint == null) if (cannonPoint == null)
{ {
return null; return null;
} }
Point localLocation = client.getLocalPlayer().getLocalLocation(); LocalPoint localLocation = client.getLocalPlayer().getLocalLocation();
if (localLocation.distanceTo(cannonPoint) <= MAX_DISTANCE) if (localLocation.distanceTo(cannonPoint) <= MAX_DISTANCE)
{ {
@@ -110,7 +106,7 @@ class CannonOverlay extends Overlay
* Draw the double hit spots on a 6 by 6 grid around the cannon * Draw the double hit spots on a 6 by 6 grid around the cannon
* @param startTile The position of the cannon * @param startTile The position of the cannon
*/ */
private void drawDoubleHitSpots(Graphics2D graphics, net.runelite.api.Point startTile, Color color) private void drawDoubleHitSpots(Graphics2D graphics, LocalPoint startTile, Color color)
{ {
for (int x = -3; x <= 3; x++) for (int x = -3; x <= 3; x++)
{ {
@@ -130,7 +126,7 @@ class CannonOverlay extends Overlay
int xPos = startTile.getX() - (x * LOCAL_TILE_SIZE); int xPos = startTile.getX() - (x * LOCAL_TILE_SIZE);
int yPos = startTile.getY() - (y * LOCAL_TILE_SIZE); int yPos = startTile.getY() - (y * LOCAL_TILE_SIZE);
net.runelite.api.Point marker = new net.runelite.api.Point(xPos, yPos); LocalPoint marker = new LocalPoint(xPos, yPos);
Polygon poly = Perspective.getCanvasTilePoly(client, marker); Polygon poly = Perspective.getCanvasTilePoly(client, marker);
if (poly == null) if (poly == null)

View File

@@ -37,11 +37,11 @@ import net.runelite.api.Client;
import net.runelite.api.GameObject; import net.runelite.api.GameObject;
import net.runelite.api.ItemID; import net.runelite.api.ItemID;
import static net.runelite.api.ObjectID.CANNON_BASE; import static net.runelite.api.ObjectID.CANNON_BASE;
import net.runelite.api.Perspective;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.Projectile; import net.runelite.api.Projectile;
import static net.runelite.api.ProjectileID.CANNONBALL; import static net.runelite.api.ProjectileID.CANNONBALL;
import static net.runelite.api.ProjectileID.GRANITE_CANNONBALL; import static net.runelite.api.ProjectileID.GRANITE_CANNONBALL;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameObjectSpawned; import net.runelite.api.events.GameObjectSpawned;
@@ -71,7 +71,7 @@ public class CannonPlugin extends Plugin
private boolean cannonPlaced; private boolean cannonPlaced;
@Getter @Getter
private net.runelite.api.Point cannonPosition; private WorldPoint cannonPosition;
@Getter @Getter
private GameObject cannon; private GameObject cannon;
@@ -159,7 +159,7 @@ public class CannonPlugin extends Plugin
if ((projectile.getId() == CANNONBALL || projectile.getId() == GRANITE_CANNONBALL) && cannonPosition != null) if ((projectile.getId() == CANNONBALL || projectile.getId() == GRANITE_CANNONBALL) && cannonPosition != null)
{ {
net.runelite.api.Point projectileLoc = Perspective.localToWorld(client, new net.runelite.api.Point(projectile.getX1(), projectile.getY1())); WorldPoint projectileLoc = WorldPoint.fromLocal(client, projectile.getX1(), projectile.getY1(), client.getPlane());
//Check to see if projectile x,y is 0 else it will continuously decrease while ball is flying. //Check to see if projectile x,y is 0 else it will continuously decrease while ball is flying.
if (projectileLoc.equals(cannonPosition) && projectile.getX() == 0 && projectile.getY() == 0) if (projectileLoc.equals(cannonPosition) && projectile.getX() == 0 && projectile.getY() == 0)

View File

@@ -25,7 +25,6 @@
*/ */
package net.runelite.client.plugins.devtools; package net.runelite.client.plugins.devtools;
import java.awt.BasicStroke;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Font; import java.awt.Font;
@@ -52,6 +51,7 @@ import net.runelite.api.Projectile;
import net.runelite.api.Region; import net.runelite.api.Region;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.WallObject; import net.runelite.api.WallObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetItem; import net.runelite.api.widgets.WidgetItem;
@@ -341,7 +341,7 @@ public class DevToolsOverlay extends Overlay
int originX = projectile.getX1(); int originX = projectile.getX1();
int originY = projectile.getY1(); int originY = projectile.getY1();
net.runelite.api.Point tilePoint = new net.runelite.api.Point(originX, originY); LocalPoint tilePoint = new LocalPoint(originX, originY);
Polygon poly = Perspective.getCanvasTilePoly(client, tilePoint); Polygon poly = Perspective.getCanvasTilePoly(client, tilePoint);
if (poly != null) if (poly != null)
@@ -372,17 +372,6 @@ public class DevToolsOverlay extends Overlay
} }
} }
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) public void renderWidgets(Graphics2D graphics)
{ {
Widget widget = plugin.currentWidget; Widget widget = plugin.currentWidget;

View File

@@ -28,7 +28,7 @@ import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Point; import net.runelite.api.coords.WorldPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.components.PanelComponent; import net.runelite.client.ui.overlay.components.PanelComponent;
@@ -58,7 +58,7 @@ public class LocationOverlay extends Overlay
panelComponent = new PanelComponent(); panelComponent = new PanelComponent();
Point localWorld = client.getLocalPlayer().getWorldLocation(); WorldPoint localWorld = client.getLocalPlayer().getWorldLocation();
panelComponent.getLines().add(new PanelComponent.Line( panelComponent.getLines().add(new PanelComponent.Line(
"Tile", "Tile",

View File

@@ -47,6 +47,7 @@ import net.runelite.api.Player;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.Region; import net.runelite.api.Region;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.ui.FontManager; import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
@@ -122,13 +123,13 @@ public class GroundItemsOverlay extends Overlay
graphics.setFont(FontManager.getRunescapeSmallFont()); graphics.setFont(FontManager.getRunescapeSmallFont());
int z = client.getPlane(); int z = client.getPlane();
Point from = player.getRegionLocation(); LocalPoint from = player.getLocalLocation();
int lowerX = max(0, from.getX() - MAX_RANGE); int lowerX = max(0, from.getRegionX() - MAX_RANGE);
int lowerY = max(0, from.getY() - MAX_RANGE); int lowerY = max(0, from.getRegionY() - MAX_RANGE);
int upperX = min(from.getX() + MAX_RANGE, REGION_SIZE - 1); int upperX = min(from.getRegionX() + MAX_RANGE, REGION_SIZE - 1);
int upperY = min(from.getY() + MAX_RANGE, REGION_SIZE - 1); int upperY = min(from.getRegionY() + MAX_RANGE, REGION_SIZE - 1);
for (int x = lowerX; x <= upperX; ++x) for (int x = lowerX; x <= upperX; ++x)
{ {

View File

@@ -39,7 +39,7 @@ import net.runelite.api.Client;
import net.runelite.api.GameObject; import net.runelite.api.GameObject;
import net.runelite.api.ObjectID; import net.runelite.api.ObjectID;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.Point; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameObjectSpawned; import net.runelite.api.events.GameObjectSpawned;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
@@ -321,7 +321,7 @@ public class HunterPlugin extends Plugin
*/ */
private HunterTrap getTrapFromCollection(GameObject gameObject) private HunterTrap getTrapFromCollection(GameObject gameObject)
{ {
final Point gameObjectLocation = gameObject.getWorldLocation(); final WorldPoint gameObjectLocation = gameObject.getWorldLocation();
for (HunterTrap trap : traps) for (HunterTrap trap : traps)
{ {

View File

@@ -32,6 +32,7 @@ import java.awt.Point;
import java.awt.geom.Arc2D; import java.awt.geom.Arc2D;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
@@ -108,10 +109,10 @@ public class TrapOverlay extends Overlay
*/ */
private void drawTraps(Graphics2D graphics) private void drawTraps(Graphics2D graphics)
{ {
net.runelite.api.Point localLocation = client.getLocalPlayer().getLocalLocation(); LocalPoint localLocation = client.getLocalPlayer().getLocalLocation();
for (HunterTrap trap : plugin.getTraps()) for (HunterTrap trap : plugin.getTraps())
{ {
net.runelite.api.Point trapLocation = trap.getGameObject().getLocalLocation(); LocalPoint trapLocation = trap.getGameObject().getLocalLocation();
if (trapLocation != null && localLocation.distanceTo(trapLocation) <= MAX_DISTANCE) if (trapLocation != null && localLocation.distanceTo(trapLocation) <= MAX_DISTANCE)
{ {
switch (trap.getState()) switch (trap.getState())

View File

@@ -42,6 +42,7 @@ import net.runelite.api.SceneTilePaint;
import net.runelite.api.SpritePixels; import net.runelite.api.SpritePixels;
import net.runelite.api.Tile; import net.runelite.api.Tile;
import net.runelite.api.WallObject; import net.runelite.api.WallObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.MapRegionChanged; import net.runelite.api.events.MapRegionChanged;
import static net.runelite.client.plugins.instancemap.PixelMaps.ALL; import static net.runelite.client.plugins.instancemap.PixelMaps.ALL;
@@ -220,13 +221,14 @@ class InstanceMapOverlay extends Overlay
*/ */
private void drawPlayerDot(Graphics2D graphics, Player player, Color dotColor, Color outlineColor) private void drawPlayerDot(Graphics2D graphics, Player player, Color dotColor, Color outlineColor)
{ {
Point playerLocation = player.getRegionLocation(); LocalPoint playerLoc = player.getLocalLocation();
Tile[][] tiles = getTiles(); Tile[][] tiles = getTiles();
Point localPlayerPoint = new Point(playerLocation.getX(), (tiles[0].length - 1) - playerLocation.getY()); // flip the y value int tileX = playerLoc.getRegionX();
int tileY = (tiles[0].length - 1) - playerLoc.getRegionY(); // flip the y value
int x = OVERLAY_POSITION.getX() + (int) (localPlayerPoint.getX() * TILE_SIZE * MAP_SCALING); int x = OVERLAY_POSITION.getX() + (int) (tileX * TILE_SIZE * MAP_SCALING);
int y = OVERLAY_POSITION.getY() + (int) (localPlayerPoint.getY() * TILE_SIZE * MAP_SCALING); int y = OVERLAY_POSITION.getY() + (int) (tileY * TILE_SIZE * MAP_SCALING);
graphics.setColor(dotColor); graphics.setColor(dotColor);
graphics.fillRect(x, y, PLAYER_MARKER_SIZE, PLAYER_MARKER_SIZE);//draw the players point on the map graphics.fillRect(x, y, PLAYER_MARKER_SIZE, PLAYER_MARKER_SIZE);//draw the players point on the map
graphics.setColor(outlineColor); graphics.setColor(outlineColor);

View File

@@ -40,6 +40,7 @@ import net.runelite.api.Client;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
@@ -50,7 +51,7 @@ import static net.runelite.api.Perspective.getCanvasTilePoly;
public class KourendLibraryOverlay extends Overlay public class KourendLibraryOverlay extends Overlay
{ {
private final static Point LIBRARY_CENTER = new Point(1632, 3807); private final static WorldPoint LIBRARY_CENTER = new WorldPoint(1632, 3807, 1);
private final static int MAXIMUM_DISTANCE = 24; private final static int MAXIMUM_DISTANCE = 24;
private final static int ROUGH_ENABLE_DISTANCE = 45; private final static int ROUGH_ENABLE_DISTANCE = 45;
@@ -76,9 +77,9 @@ public class KourendLibraryOverlay extends Overlay
return null; return null;
} }
Point playerLoc = player.getWorldLocation(); WorldPoint playerLoc = player.getWorldLocation();
if (playerLoc.distanceTo(LIBRARY_CENTER) > ROUGH_ENABLE_DISTANCE) if (playerLoc.distanceTo2D(LIBRARY_CENTER) > ROUGH_ENABLE_DISTANCE)
{ {
return null; return null;
} }
@@ -100,7 +101,7 @@ public class KourendLibraryOverlay extends Overlay
continue; continue;
} }
Point localBookcase = Perspective.worldToLocal(client, caseLoc.toPoint()); LocalPoint localBookcase = LocalPoint.fromWorld(client, caseLoc);
Point screenBookcase = Perspective.worldToCanvas(client, localBookcase.getX(), localBookcase.getY(), caseLoc.getPlane(), 25); Point screenBookcase = Perspective.worldToCanvas(client, localBookcase.getX(), localBookcase.getY(), caseLoc.getPlane(), 25);
if (screenBookcase != null) if (screenBookcase != null)
@@ -211,7 +212,7 @@ public class KourendLibraryOverlay extends Overlay
.forEach(n -> .forEach(n ->
{ {
Book b = library.getCustomerBook(); Book b = library.getCustomerBook();
Point local = n.getLocalLocation(); LocalPoint local = n.getLocalLocation();
Polygon poly = getCanvasTilePoly(client, local); Polygon poly = getCanvasTilePoly(client, local);
OverlayUtil.renderPolygon(g, poly, Color.WHITE); OverlayUtil.renderPolygon(g, poly, Color.WHITE);
Point screen = Perspective.worldToCanvas(client, local.getX(), local.getY(), client.getPlane(), n.getLogicalHeight()); Point screen = Perspective.worldToCanvas(client, local.getX(), local.getY(), client.getPlane(), n.getLogicalHeight());

View File

@@ -35,8 +35,6 @@ import net.runelite.api.AnimationID;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.MenuAction; import net.runelite.api.MenuAction;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.AnimationChanged; import net.runelite.api.events.AnimationChanged;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
@@ -114,8 +112,7 @@ public class KourendLibraryPlugin extends Plugin
{ {
if (MenuAction.GAME_OBJECT_FIRST_OPTION == menuOpt.getMenuAction() && menuOpt.getMenuTarget().contains("Bookshelf")) if (MenuAction.GAME_OBJECT_FIRST_OPTION == menuOpt.getMenuAction() && menuOpt.getMenuTarget().contains("Bookshelf"))
{ {
Point worldPoint = Perspective.regionToWorld(client, new Point(menuOpt.getId() & 127, menuOpt.getId() >> 7 & 127)); lastBookcaseClick = WorldPoint.fromLocal(client, menuOpt.getId() & 127, menuOpt.getId() >> 7 & 127, client.getPlane());
lastBookcaseClick = new WorldPoint(worldPoint.getX(), worldPoint.getY(), client.getPlane());
} }
} }

View File

@@ -38,6 +38,7 @@ import net.runelite.api.Player;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.api.WallObject; import net.runelite.api.WallObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.game.SkillIconManager; import net.runelite.client.game.SkillIconManager;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
@@ -83,10 +84,10 @@ class MotherlodeRocksOverlay extends Overlay
private void renderTiles(Graphics2D graphics, Player local) private void renderTiles(Graphics2D graphics, Player local)
{ {
Point localLocation = local.getLocalLocation(); LocalPoint localLocation = local.getLocalLocation();
for (WallObject vein : plugin.getVeins()) for (WallObject vein : plugin.getVeins())
{ {
Point location = vein.getLocalLocation(); LocalPoint location = vein.getLocalLocation();
if (localLocation.distanceTo(location) <= MAX_DISTANCE) if (localLocation.distanceTo(location) <= MAX_DISTANCE)
{ {
renderVein(graphics, vein); renderVein(graphics, vein);
@@ -95,7 +96,7 @@ class MotherlodeRocksOverlay extends Overlay
for (GameObject rock : plugin.getRocks()) for (GameObject rock : plugin.getRocks())
{ {
Point location = rock.getLocalLocation(); LocalPoint location = rock.getLocalLocation();
if (localLocation.distanceTo(location) <= MAX_DISTANCE) if (localLocation.distanceTo(location) <= MAX_DISTANCE)
{ {
renderRock(graphics, rock); renderRock(graphics, rock);

View File

@@ -33,7 +33,7 @@ import javax.inject.Inject;
import lombok.Getter; import lombok.Getter;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Point; import net.runelite.api.coords.LocalPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
@@ -69,10 +69,10 @@ public class PohOverlay extends Overlay
@Override @Override
public Dimension render(Graphics2D graphics, java.awt.Point parent) public Dimension render(Graphics2D graphics, java.awt.Point parent)
{ {
Point localLocation = client.getLocalPlayer().getLocalLocation(); LocalPoint localLocation = client.getLocalPlayer().getLocalLocation();
plugin.getPohObjects().forEach((object, tile) -> plugin.getPohObjects().forEach((object, tile) ->
{ {
Point location = object.getLocalLocation(); LocalPoint location = object.getLocalLocation();
if (tile.getPlane() == client.getPlane() && localLocation.distanceTo(location) <= MAX_DISTANCE) if (tile.getPlane() == client.getPlane() && localLocation.distanceTo(location) <= MAX_DISTANCE)
{ {
PohIcons icon = PohIcons.getIcon(object.getId()); PohIcons icon = PohIcons.getIcon(object.getId());

View File

@@ -31,7 +31,7 @@ import java.awt.Polygon;
import javax.inject.Inject; import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Point; import net.runelite.api.coords.LocalPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
@@ -61,7 +61,7 @@ public class RoguesDenOverlay extends Overlay
return null; return null;
} }
Point playerLocation = client.getLocalPlayer().getLocalLocation(); LocalPoint playerLocation = client.getLocalPlayer().getLocalLocation();
plugin.getObstaclesHull().forEach((obstacle, tile) -> plugin.getObstaclesHull().forEach((obstacle, tile) ->
{ {

View File

@@ -51,6 +51,7 @@ import net.runelite.api.Client;
import net.runelite.api.DecorativeObject; import net.runelite.api.DecorativeObject;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
@@ -89,10 +90,10 @@ class AbyssOverlay extends Overlay
return null; return null;
} }
Point localLocation = client.getLocalPlayer().getLocalLocation(); LocalPoint localLocation = client.getLocalPlayer().getLocalLocation();
for (DecorativeObject object : plugin.getAbyssObjects()) for (DecorativeObject object : plugin.getAbyssObjects())
{ {
Point location = object.getLocalLocation(); LocalPoint location = object.getLocalLocation();
if (localLocation.distanceTo(location) <= MAX_DISTANCE) if (localLocation.distanceTo(location) <= MAX_DISTANCE)
{ {
renderRifts(graphics, object); renderRifts(graphics, object);

View File

@@ -24,13 +24,12 @@
*/ */
package net.runelite.client.plugins.tileindicators; package net.runelite.client.plugins.tileindicators;
import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Polygon; import java.awt.Polygon;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Point; import net.runelite.api.coords.LocalPoint;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
@@ -54,24 +53,20 @@ public class TileIndicatorsOverlay extends Overlay
@Override @Override
public Dimension render(Graphics2D graphics, java.awt.Point parent) public Dimension render(Graphics2D graphics, java.awt.Point parent)
{ {
if (client.getSceneDestinationLocation().getX() > 0 LocalPoint dest = client.getLocalDestinationLocation();
&& client.getSceneDestinationLocation().getY() > 0) if (dest == null)
{ {
drawRegionTile(graphics, client.getSceneDestinationLocation(), config.highlightDestinationColor()); return null;
} }
Polygon poly = Perspective.getCanvasTilePoly(client, dest);
if (poly == null)
{
return null;
}
OverlayUtil.renderPolygon(graphics, poly, config.highlightDestinationColor());
return null; return null;
} }
private void drawRegionTile(Graphics2D graphics, Point tile, Color color)
{
Point localTile = Perspective.regionToLocal(client, tile);
localTile = new Point(localTile.getX() + Perspective.LOCAL_TILE_SIZE / 2, localTile.getY() + Perspective.LOCAL_TILE_SIZE / 2);
Polygon poly = Perspective.getCanvasTilePoly(client, localTile);
if (poly != null)
{
OverlayUtil.renderPolygon(graphics, poly, color);
}
}
} }

View File

@@ -30,10 +30,11 @@ import java.awt.image.BufferedImage;
import net.runelite.api.Actor; import net.runelite.api.Actor;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import static net.runelite.api.Perspective.LOCAL_COORD_BITS;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.SpritePixels; import net.runelite.api.SpritePixels;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.GraphicChanged; import net.runelite.api.events.GraphicChanged;
import net.runelite.api.mixins.FieldHook; import net.runelite.api.mixins.FieldHook;
import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Inject;
@@ -123,24 +124,16 @@ public abstract class RSActorMixin implements RSActor
@Override @Override
@Inject @Inject
public Point getWorldLocation() public WorldPoint getWorldLocation()
{ {
Point localLocation = getLocalLocation(); return WorldPoint.fromLocal(client, getX(), getY(), client.getPlane());
return Perspective.localToWorld(client, localLocation);
} }
@Inject @Inject
@Override @Override
public Point getRegionLocation() public LocalPoint getLocalLocation()
{ {
return new Point(getX() >>> LOCAL_COORD_BITS, getY() >>> LOCAL_COORD_BITS);// divided by 128 return new LocalPoint(getX(), getY());
}
@Inject
@Override
public Point getLocalLocation()
{
return new Point(getX(), getY());
} }
@Inject @Inject

View File

@@ -26,6 +26,7 @@ package net.runelite.mixins;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.annotation.Nullable;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.ClanMember; import net.runelite.api.ClanMember;
import net.runelite.api.GameState; import net.runelite.api.GameState;
@@ -43,6 +44,7 @@ import net.runelite.api.Projectile;
import net.runelite.api.Setting; import net.runelite.api.Setting;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.ExperienceChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GrandExchangeOfferChanged; import net.runelite.api.events.GrandExchangeOfferChanged;
@@ -366,9 +368,16 @@ public abstract class RSClientMixin implements RSClient
@Inject @Inject
@Override @Override
public Point getSceneDestinationLocation() @Nullable
public LocalPoint getLocalDestinationLocation()
{ {
return new Point(getDestinationX(), getDestinationY()); int regionX = getDestinationX();
int regionY = getDestinationY();
if (regionX != 0 && regionY != 0)
{
return LocalPoint.fromRegion(regionX, regionY);
}
return null;
} }
@Inject @Inject

View File

@@ -28,9 +28,10 @@ import net.runelite.api.Actor;
import net.runelite.api.DecorativeObject; import net.runelite.api.DecorativeObject;
import net.runelite.api.GameObject; import net.runelite.api.GameObject;
import net.runelite.api.GroundObject; import net.runelite.api.GroundObject;
import net.runelite.api.Perspective;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.WallObject; import net.runelite.api.WallObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.DecorativeObjectChanged; import net.runelite.api.events.DecorativeObjectChanged;
import net.runelite.api.events.DecorativeObjectDespawned; import net.runelite.api.events.DecorativeObjectDespawned;
import net.runelite.api.events.DecorativeObjectSpawned; import net.runelite.api.events.DecorativeObjectSpawned;
@@ -75,10 +76,9 @@ public abstract class RSTileMixin implements RSTile
@Inject @Inject
@Override @Override
public Point getWorldLocation() public WorldPoint getWorldLocation()
{ {
Point regionLocation = getRegionLocation(); return WorldPoint.fromRegion(client, getX(), getY(), getPlane());
return Perspective.regionToWorld(client, regionLocation);
} }
@Inject @Inject
@@ -90,10 +90,9 @@ public abstract class RSTileMixin implements RSTile
@Inject @Inject
@Override @Override
public Point getLocalLocation() public LocalPoint getLocalLocation()
{ {
Point regionLocation = getRegionLocation(); return LocalPoint.fromRegion(getX(), getY());
return Perspective.regionToLocal(client, regionLocation);
} }
@FieldHook("wallObject") @FieldHook("wallObject")

View File

@@ -30,9 +30,10 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import net.runelite.api.Model; import net.runelite.api.Model;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import static net.runelite.api.Perspective.LOCAL_COORD_BITS;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.TileObject; import net.runelite.api.TileObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Mixins; import net.runelite.api.mixins.Mixins;
@@ -68,25 +69,16 @@ public abstract class TileObjectMixin implements TileObject
@Override @Override
@Inject @Inject
public Point getWorldLocation() public WorldPoint getWorldLocation()
{ {
Point localLocation = getLocalLocation(); return WorldPoint.fromLocal(client, getX(), getY(), client.getPlane()); //TODO: use the correct plane
return Perspective.localToWorld(client, localLocation);
} }
@Override @Override
@Inject @Inject
public Point getLocalLocation() public LocalPoint getLocalLocation()
{ {
return new Point(getX(), getY()); return new LocalPoint(getX(), getY());
}
@Override
@Inject
public Point getRegionLocation()
{
Point localLocation = getLocalLocation();
return new Point(localLocation.getX() >>> LOCAL_COORD_BITS, localLocation.getY() >>> LOCAL_COORD_BITS);
} }
@Override @Override
@@ -100,8 +92,7 @@ public abstract class TileObjectMixin implements TileObject
@Inject @Inject
public Point getCanvasLocation(int zOffset) public Point getCanvasLocation(int zOffset)
{ {
Point localLocation = getLocalLocation(); return Perspective.worldToCanvas(client, getX(), getY(), 0, zOffset);
return Perspective.worldToCanvas(client, localLocation.getX(), localLocation.getY(), 0, zOffset);
} }
@Override @Override