From b75dddca289ace35dcfd01626614ad3e83a28ff6 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Fri, 9 Mar 2018 04:51:02 -0700 Subject: [PATCH] Update almost everything to the new API --- .../src/main/java/net/runelite/api/Actor.java | 8 ++--- .../main/java/net/runelite/api/Client.java | 5 +++- .../java/net/runelite/api/Perspective.java | 17 ++++++----- .../src/main/java/net/runelite/api/Tile.java | 7 +++-- .../java/net/runelite/api/TileObject.java | 8 ++--- .../runelite/api/events/ProjectileMoved.java | 6 ++-- .../net/runelite/api/queries/ActorQuery.java | 10 +++---- .../runelite/api/queries/TileObjectQuery.java | 13 +++++---- .../net/runelite/client/callback/Hooks.java | 6 ++-- .../plugins/agilityplugin/AgilityOverlay.java | 3 +- .../plugins/barrows/BarrowsBrothers.java | 24 +++++++-------- .../plugins/barrows/BarrowsOverlay.java | 15 +++++----- .../blastfurnace/ConveyorBeltOverlay.java | 5 ++-- .../client/plugins/cannon/CannonOverlay.java | 14 ++++----- .../client/plugins/cannon/CannonPlugin.java | 6 ++-- .../plugins/devtools/DevToolsOverlay.java | 15 ++-------- .../plugins/devtools/LocationOverlay.java | 4 +-- .../grounditems/GroundItemsOverlay.java | 11 +++---- .../client/plugins/hunter/HunterPlugin.java | 4 +-- .../client/plugins/hunter/TrapOverlay.java | 5 ++-- .../instancemap/InstanceMapOverlay.java | 10 ++++--- .../kourendlibrary/KourendLibraryOverlay.java | 11 +++---- .../kourendlibrary/KourendLibraryPlugin.java | 5 +--- .../motherlode/MotherlodeRocksOverlay.java | 7 +++-- .../client/plugins/poh/PohOverlay.java | 6 ++-- .../plugins/roguesden/RoguesDenOverlay.java | 4 +-- .../plugins/runecraft/AbyssOverlay.java | 5 ++-- .../tileindicators/TileIndicatorsOverlay.java | 29 ++++++++----------- .../net/runelite/mixins/RSActorMixin.java | 19 ++++-------- .../net/runelite/mixins/RSClientMixin.java | 13 +++++++-- .../java/net/runelite/mixins/RSTileMixin.java | 13 ++++----- .../net/runelite/mixins/TileObjectMixin.java | 23 +++++---------- 32 files changed, 157 insertions(+), 174 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/Actor.java b/runelite-api/src/main/java/net/runelite/api/Actor.java index 3be52c84a4..54ea822326 100644 --- a/runelite-api/src/main/java/net/runelite/api/Actor.java +++ b/runelite-api/src/main/java/net/runelite/api/Actor.java @@ -27,6 +27,8 @@ package net.runelite.api; import java.awt.Graphics2D; import java.awt.Polygon; import java.awt.image.BufferedImage; +import net.runelite.api.coords.LocalPoint; +import net.runelite.api.coords.WorldPoint; public interface Actor extends Renderable { @@ -40,9 +42,9 @@ public interface Actor extends Renderable int getHealth(); - Point getWorldLocation(); + WorldPoint getWorldLocation(); - Point getLocalLocation(); + LocalPoint getLocalLocation(); int getOrientation(); @@ -62,8 +64,6 @@ public interface Actor extends Renderable Point getMinimapLocation(); - Point getRegionLocation(); - /** * Returns the logical height of the actor's model. This is roughly where the health bar is drawn. */ diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index 4591ff6738..4da908f480 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -28,6 +28,8 @@ import java.awt.Canvas; import java.awt.Dimension; import java.util.List; 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.WidgetInfo; @@ -184,7 +186,8 @@ public interface Client extends GameEngine SpritePixels createSpritePixels(int[] pixels, int width, int height); - Point getSceneDestinationLocation(); + @Nullable + LocalPoint getLocalDestinationLocation(); List getProjectiles(); diff --git a/runelite-api/src/main/java/net/runelite/api/Perspective.java b/runelite-api/src/main/java/net/runelite/api/Perspective.java index 36f02d5c74..deef4e238c 100644 --- a/runelite-api/src/main/java/net/runelite/api/Perspective.java +++ b/runelite-api/src/main/java/net/runelite/api/Perspective.java @@ -34,6 +34,7 @@ import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import net.runelite.api.coords.LocalPoint; import net.runelite.api.model.Jarvis; import net.runelite.api.model.Triangle; import net.runelite.api.model.Vertex; @@ -218,7 +219,7 @@ public class Perspective { int angle = client.getMapAngle() & 0x7FF; - Point localLocation = client.getLocalPlayer().getLocalLocation(); + LocalPoint localLocation = client.getLocalPlayer().getLocalLocation(); x = x / 32 - localLocation.getX() / 32; y = y / 32 - localLocation.getY() / 32; @@ -328,7 +329,7 @@ public class Perspective * @return a {@link Polygon} on screen corresponding to the given * localLocation. */ - public static Polygon getCanvasTilePoly(Client client, Point localLocation) + public static Polygon getCanvasTilePoly(Client client, LocalPoint localLocation) { return getCanvasTileAreaPoly(client, localLocation, 1); } @@ -342,7 +343,7 @@ public class Perspective * size = 3 * @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 halfTile = LOCAL_TILE_SIZE / 2; @@ -391,7 +392,7 @@ public class Perspective * @return a {@link Point} on screen corresponding to the given * 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(); @@ -420,7 +421,7 @@ public class Perspective * @return a {@link Point} on screen corresponding to the given * 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(); @@ -446,7 +447,7 @@ public class Perspective * @return a {@link Point} on screen corresponding to the given * 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()); @@ -472,7 +473,7 @@ public class Perspective * @return a {@link Point} on screen corresponding to the given * 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(); @@ -718,7 +719,7 @@ public class Perspective * @return a {@link Point} on screen corresponding to the given * 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()); diff --git a/runelite-api/src/main/java/net/runelite/api/Tile.java b/runelite-api/src/main/java/net/runelite/api/Tile.java index 720afcadbe..5ac718d27a 100644 --- a/runelite-api/src/main/java/net/runelite/api/Tile.java +++ b/runelite-api/src/main/java/net/runelite/api/Tile.java @@ -24,6 +24,9 @@ */ package net.runelite.api; +import net.runelite.api.coords.LocalPoint; +import net.runelite.api.coords.WorldPoint; + public interface Tile { /** @@ -45,11 +48,11 @@ public interface Tile SceneTileModel getSceneTileModel(); - Point getWorldLocation(); + WorldPoint getWorldLocation(); Point getRegionLocation(); - Point getLocalLocation(); + LocalPoint getLocalLocation(); int getPlane(); } diff --git a/runelite-api/src/main/java/net/runelite/api/TileObject.java b/runelite-api/src/main/java/net/runelite/api/TileObject.java index 514134251f..2f056dcfa5 100644 --- a/runelite-api/src/main/java/net/runelite/api/TileObject.java +++ b/runelite-api/src/main/java/net/runelite/api/TileObject.java @@ -27,6 +27,8 @@ package net.runelite.api; import java.awt.Graphics2D; import java.awt.Polygon; import java.awt.geom.Area; +import net.runelite.api.coords.LocalPoint; +import net.runelite.api.coords.WorldPoint; public interface TileObject { @@ -38,11 +40,9 @@ public interface TileObject int getId(); - Point getWorldLocation(); + WorldPoint getWorldLocation(); - Point getLocalLocation(); - - Point getRegionLocation(); + LocalPoint getLocalLocation(); Point getCanvasLocation(); diff --git a/runelite-api/src/main/java/net/runelite/api/events/ProjectileMoved.java b/runelite-api/src/main/java/net/runelite/api/events/ProjectileMoved.java index db30a5c0d2..5c7142bf34 100644 --- a/runelite-api/src/main/java/net/runelite/api/events/ProjectileMoved.java +++ b/runelite-api/src/main/java/net/runelite/api/events/ProjectileMoved.java @@ -25,13 +25,13 @@ package net.runelite.api.events; import lombok.Data; -import net.runelite.api.Point; import net.runelite.api.Projectile; +import net.runelite.api.coords.LocalPoint; @Data public class ProjectileMoved { private Projectile projectile; - private Point position; - private int plane; + private LocalPoint position; + private int z; } diff --git a/runelite-api/src/main/java/net/runelite/api/queries/ActorQuery.java b/runelite-api/src/main/java/net/runelite/api/queries/ActorQuery.java index 026d4654da..79f78eaa9b 100644 --- a/runelite-api/src/main/java/net/runelite/api/queries/ActorQuery.java +++ b/runelite-api/src/main/java/net/runelite/api/queries/ActorQuery.java @@ -26,8 +26,8 @@ package net.runelite.api.queries; import static java.lang.Math.abs; import net.runelite.api.Actor; -import net.runelite.api.Point; import net.runelite.api.Query; +import net.runelite.api.coords.LocalPoint; public abstract class ActorQuery extends Query { @@ -68,7 +68,7 @@ public abstract class ActorQuery extends Qu } @SuppressWarnings("unchecked") - public QueryType atLocalLocation(Point location) + public QueryType atLocalLocation(LocalPoint location) { predicate = and(actor -> actor.getLocalLocation().equals(location)); return (QueryType) this; @@ -96,18 +96,18 @@ public abstract class ActorQuery extends Qu } @SuppressWarnings("unchecked") - public QueryType isWithinDistance(Point to, int distance) + public QueryType isWithinDistance(LocalPoint to, int distance) { predicate = and(a -> a.getLocalLocation().distanceTo(to) <= distance); return (QueryType) this; } @SuppressWarnings("unchecked") - public QueryType isWithinArea(Point from, int area) + public QueryType isWithinArea(LocalPoint from, int area) { predicate = and(a -> { - Point localLocation = a.getLocalLocation(); + LocalPoint localLocation = a.getLocalLocation(); return abs(localLocation.getX() - from.getX()) < area && abs(localLocation.getY() - from.getY()) < area; }); diff --git a/runelite-api/src/main/java/net/runelite/api/queries/TileObjectQuery.java b/runelite-api/src/main/java/net/runelite/api/queries/TileObjectQuery.java index d51c5d460c..e1a235c26c 100644 --- a/runelite-api/src/main/java/net/runelite/api/queries/TileObjectQuery.java +++ b/runelite-api/src/main/java/net/runelite/api/queries/TileObjectQuery.java @@ -26,7 +26,6 @@ package net.runelite.api.queries; import static java.lang.Math.abs; import net.runelite.api.Client; -import net.runelite.api.Point; import net.runelite.api.Query; import net.runelite.api.Region; import net.runelite.api.Tile; @@ -34,6 +33,8 @@ import net.runelite.api.TileObject; import java.util.ArrayList; import java.util.List; +import net.runelite.api.coords.LocalPoint; +import net.runelite.api.coords.WorldPoint; public abstract class TileObjectQuery extends Query { @@ -78,32 +79,32 @@ public abstract class TileObjectQuery } @SuppressWarnings("unchecked") - public QueryType atWorldLocation(Point location) + public QueryType atWorldLocation(WorldPoint location) { predicate = and(object -> object.getWorldLocation().equals(location)); return (QueryType) this; } @SuppressWarnings("unchecked") - public QueryType atLocalLocation(Point location) + public QueryType atLocalLocation(LocalPoint location) { predicate = and(object -> object.getLocalLocation().equals(location)); return (QueryType) this; } @SuppressWarnings("unchecked") - public QueryType isWithinDistance(Point to, int distance) + public QueryType isWithinDistance(LocalPoint to, int distance) { predicate = and(a -> a.getLocalLocation().distanceTo(to) <= distance); return (QueryType) this; } @SuppressWarnings("unchecked") - public QueryType isWithinArea(Point from, int area) + public QueryType isWithinArea(LocalPoint from, int area) { predicate = and(a -> { - Point localLocation = a.getLocalLocation(); + LocalPoint localLocation = a.getLocalLocation(); return abs(localLocation.getX() - from.getX()) < area && abs(localLocation.getY() - from.getY()) < area; }); diff --git a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java index cc97cc2313..00df2030c2 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java @@ -40,12 +40,12 @@ import net.runelite.api.MainBufferProvider; import net.runelite.api.MenuAction; import net.runelite.api.MessageNode; import net.runelite.api.PacketBuffer; -import net.runelite.api.Point; import net.runelite.api.Projectile; import net.runelite.api.Region; import net.runelite.api.RenderOverview; import net.runelite.api.TextureProvider; import net.runelite.api.WorldMapManager; +import net.runelite.api.coords.LocalPoint; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.GameTick; 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) { - Point position = new Point(targetX, targetY); + LocalPoint position = new LocalPoint(targetX, targetY); ProjectileMoved projectileMoved = new ProjectileMoved(); projectileMoved.setProjectile(projectile); projectileMoved.setPosition(position); - projectileMoved.setPlane(targetZ); + projectileMoved.setZ(targetZ); eventBus.post(projectileMoved); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/agilityplugin/AgilityOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/agilityplugin/AgilityOverlay.java index 98b1fcd4ad..059f2362ac 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/agilityplugin/AgilityOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/agilityplugin/AgilityOverlay.java @@ -32,6 +32,7 @@ import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; 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.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; @@ -56,7 +57,7 @@ public class AgilityOverlay extends Overlay @Override public Dimension render(Graphics2D graphics, java.awt.Point parent) { - Point playerLocation = client.getLocalPlayer().getLocalLocation(); + LocalPoint playerLocation = client.getLocalPlayer().getLocalLocation(); Point mousePosition = client.getMouseCanvasPosition(); plugin.getObstacles().forEach((object, tile) -> { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrothers.java b/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrothers.java index b7634fabf2..dd4faf0bd3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrothers.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrothers.java @@ -25,25 +25,21 @@ package net.runelite.client.plugins.barrows; import lombok.Getter; -import net.runelite.api.Point; +import lombok.RequiredArgsConstructor; +import net.runelite.api.coords.WorldPoint; +@RequiredArgsConstructor public enum BarrowsBrothers { - VERAC("V", new Point(3557, 3298)), - DHAROK("D", new Point(3575, 3298)), - AHRIM("A", new Point(3566, 3289)), - TORAG("T", new Point(3553, 3283)), - KARIL("K", new Point(3566, 3275)), - GUTHAN("G", new Point(3577, 3283)); + VERAC("V", new WorldPoint(3557, 3298, 0)), + DHAROK("D", new WorldPoint(3575, 3298, 0)), + AHRIM("A", new WorldPoint(3566, 3289, 0)), + TORAG("T", new WorldPoint(3553, 3283, 0)), + KARIL("K", new WorldPoint(3566, 3275, 0)), + GUTHAN("G", new WorldPoint(3577, 3283, 0)); @Getter private final String name; @Getter - private final Point location; - - BarrowsBrothers(String name, net.runelite.api.Point location) - { - this.name = name; - this.location = location; - } + private final WorldPoint location; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsOverlay.java index 9348fb2f67..fe72be4ed2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsOverlay.java @@ -37,6 +37,7 @@ import net.runelite.api.ObjectComposition; import net.runelite.api.Perspective; import net.runelite.api.Player; import net.runelite.api.WallObject; +import net.runelite.api.coords.LocalPoint; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; @@ -94,12 +95,12 @@ class BarrowsOverlay extends Overlay 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()) { - net.runelite.api.Point location = wall.getLocalLocation(); + LocalPoint location = wall.getLocalLocation(); if (localLocation.distanceTo(location) <= MAX_DISTANCE) { renderWalls(graphics, wall); @@ -108,7 +109,7 @@ class BarrowsOverlay extends Overlay for (GameObject ladder : plugin.getLadders()) { - net.runelite.api.Point location = ladder.getLocalLocation(); + LocalPoint location = ladder.getLocalLocation(); if (localLocation.distanceTo(location) <= MAX_DISTANCE) { renderLadders(graphics, ladder); @@ -162,15 +163,15 @@ class BarrowsOverlay extends Overlay { 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; } net.runelite.api.Point minimapText = Perspective.getCanvasTextMiniMapLocation(client, graphics, - Perspective.worldToLocal(client, brother.getLocation()), brother.getName()); + localLocation, brother.getName()); if (minimapText != null) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/ConveyorBeltOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/ConveyorBeltOverlay.java index 61a9337c0a..135cf9d719 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/ConveyorBeltOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/blastfurnace/ConveyorBeltOverlay.java @@ -32,6 +32,7 @@ import javax.inject.Inject; import net.runelite.api.Client; import net.runelite.api.GameObject; import net.runelite.api.Point; +import net.runelite.api.coords.LocalPoint; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; @@ -60,12 +61,12 @@ class ConveyorBeltOverlay extends Overlay return null; } - Point localLocation = client.getLocalPlayer().getLocalLocation(); + LocalPoint localLocation = client.getLocalPlayer().getLocalLocation(); Point mousePosition = client.getMouseCanvasPosition(); GameObject object = plugin.getConveyorBelt(); - Point location = object.getLocalLocation(); + LocalPoint location = object.getLocalLocation(); if (localLocation.distanceTo(location) <= MAX_DISTANCE) { Area objectClickbox = object.getClickbox(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonOverlay.java index 82000f30c2..89b1554a26 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonOverlay.java @@ -33,6 +33,7 @@ import net.runelite.api.Client; import net.runelite.api.Perspective; import static net.runelite.api.Perspective.LOCAL_TILE_SIZE; import net.runelite.api.Point; +import net.runelite.api.coords.LocalPoint; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; @@ -66,19 +67,14 @@ class CannonOverlay extends Overlay return null; } - if (!Perspective.isWorldInScene(client, plugin.getCannonPosition())) - { - return null; - } - - Point cannonPoint = Perspective.worldToLocal(client, plugin.getCannonPosition()); + LocalPoint cannonPoint = LocalPoint.fromWorld(client, plugin.getCannonPosition()); if (cannonPoint == null) { return null; } - Point localLocation = client.getLocalPlayer().getLocalLocation(); + LocalPoint localLocation = client.getLocalPlayer().getLocalLocation(); 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 * @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++) { @@ -130,7 +126,7 @@ class CannonOverlay extends Overlay int xPos = startTile.getX() - (x * 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); if (poly == null) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java index 2b84610f00..f5daf0b223 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java @@ -37,11 +37,11 @@ import net.runelite.api.Client; import net.runelite.api.GameObject; import net.runelite.api.ItemID; import static net.runelite.api.ObjectID.CANNON_BASE; -import net.runelite.api.Perspective; import net.runelite.api.Player; import net.runelite.api.Projectile; import static net.runelite.api.ProjectileID.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.ConfigChanged; import net.runelite.api.events.GameObjectSpawned; @@ -71,7 +71,7 @@ public class CannonPlugin extends Plugin private boolean cannonPlaced; @Getter - private net.runelite.api.Point cannonPosition; + private WorldPoint cannonPosition; @Getter private GameObject cannon; @@ -159,7 +159,7 @@ public class CannonPlugin extends Plugin 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. if (projectileLoc.equals(cannonPosition) && projectile.getX() == 0 && projectile.getY() == 0) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java index 6e8a52b5ac..27b82cd8b4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java @@ -25,7 +25,6 @@ */ package net.runelite.client.plugins.devtools; -import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; @@ -52,6 +51,7 @@ import net.runelite.api.Projectile; import net.runelite.api.Region; import net.runelite.api.Tile; import net.runelite.api.WallObject; +import net.runelite.api.coords.LocalPoint; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetItem; @@ -341,7 +341,7 @@ public class DevToolsOverlay extends Overlay int originX = projectile.getX1(); 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); 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) { Widget widget = plugin.currentWidget; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/LocationOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/LocationOverlay.java index dcdb765ac1..eb04edffd0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/LocationOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/LocationOverlay.java @@ -28,7 +28,7 @@ import java.awt.Dimension; import java.awt.Graphics2D; import javax.inject.Inject; 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.OverlayPosition; import net.runelite.client.ui.overlay.components.PanelComponent; @@ -58,7 +58,7 @@ public class LocationOverlay extends Overlay panelComponent = new PanelComponent(); - Point localWorld = client.getLocalPlayer().getWorldLocation(); + WorldPoint localWorld = client.getLocalPlayer().getWorldLocation(); panelComponent.getLines().add(new PanelComponent.Line( "Tile", diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java index fc6cbc4e55..34adea197d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java @@ -47,6 +47,7 @@ import net.runelite.api.Player; import net.runelite.api.Point; import net.runelite.api.Region; import net.runelite.api.Tile; +import net.runelite.api.coords.LocalPoint; import net.runelite.client.game.ItemManager; import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.Overlay; @@ -122,13 +123,13 @@ public class GroundItemsOverlay extends Overlay graphics.setFont(FontManager.getRunescapeSmallFont()); int z = client.getPlane(); - Point from = player.getRegionLocation(); + LocalPoint from = player.getLocalLocation(); - int lowerX = max(0, from.getX() - MAX_RANGE); - int lowerY = max(0, from.getY() - MAX_RANGE); + int lowerX = max(0, from.getRegionX() - MAX_RANGE); + int lowerY = max(0, from.getRegionY() - MAX_RANGE); - int upperX = min(from.getX() + MAX_RANGE, REGION_SIZE - 1); - int upperY = min(from.getY() + MAX_RANGE, REGION_SIZE - 1); + int upperX = min(from.getRegionX() + MAX_RANGE, REGION_SIZE - 1); + int upperY = min(from.getRegionY() + MAX_RANGE, REGION_SIZE - 1); for (int x = lowerX; x <= upperX; ++x) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hunter/HunterPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/hunter/HunterPlugin.java index cfcb0146d9..67d98d2987 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hunter/HunterPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hunter/HunterPlugin.java @@ -39,7 +39,7 @@ import net.runelite.api.Client; import net.runelite.api.GameObject; import net.runelite.api.ObjectID; 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.GameObjectSpawned; import net.runelite.api.events.GameTick; @@ -321,7 +321,7 @@ public class HunterPlugin extends Plugin */ private HunterTrap getTrapFromCollection(GameObject gameObject) { - final Point gameObjectLocation = gameObject.getWorldLocation(); + final WorldPoint gameObjectLocation = gameObject.getWorldLocation(); for (HunterTrap trap : traps) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hunter/TrapOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/hunter/TrapOverlay.java index 62fc303854..993226e9a6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hunter/TrapOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hunter/TrapOverlay.java @@ -32,6 +32,7 @@ import java.awt.Point; import java.awt.geom.Arc2D; import javax.inject.Inject; import net.runelite.api.Client; +import net.runelite.api.coords.LocalPoint; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; @@ -108,10 +109,10 @@ public class TrapOverlay extends Overlay */ private void drawTraps(Graphics2D graphics) { - net.runelite.api.Point localLocation = client.getLocalPlayer().getLocalLocation(); + LocalPoint localLocation = client.getLocalPlayer().getLocalLocation(); 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) { switch (trap.getState()) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapOverlay.java index 3635c9ba5e..7d858b333c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapOverlay.java @@ -42,6 +42,7 @@ import net.runelite.api.SceneTilePaint; import net.runelite.api.SpritePixels; import net.runelite.api.Tile; import net.runelite.api.WallObject; +import net.runelite.api.coords.LocalPoint; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.MapRegionChanged; 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) { - Point playerLocation = player.getRegionLocation(); + LocalPoint playerLoc = player.getLocalLocation(); 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 y = OVERLAY_POSITION.getY() + (int) (localPlayerPoint.getY() * TILE_SIZE * MAP_SCALING); + int x = OVERLAY_POSITION.getX() + (int) (tileX * TILE_SIZE * MAP_SCALING); + int y = OVERLAY_POSITION.getY() + (int) (tileY * TILE_SIZE * MAP_SCALING); graphics.setColor(dotColor); graphics.fillRect(x, y, PLAYER_MARKER_SIZE, PLAYER_MARKER_SIZE);//draw the players point on the map graphics.setColor(outlineColor); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryOverlay.java index e64af26e7f..7c1d16c1a3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryOverlay.java @@ -40,6 +40,7 @@ import net.runelite.api.Client; import net.runelite.api.Perspective; import net.runelite.api.Player; import net.runelite.api.Point; +import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; @@ -50,7 +51,7 @@ import static net.runelite.api.Perspective.getCanvasTilePoly; 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 ROUGH_ENABLE_DISTANCE = 45; @@ -76,9 +77,9 @@ public class KourendLibraryOverlay extends Overlay 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; } @@ -100,7 +101,7 @@ public class KourendLibraryOverlay extends Overlay 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); if (screenBookcase != null) @@ -211,7 +212,7 @@ public class KourendLibraryOverlay extends Overlay .forEach(n -> { Book b = library.getCustomerBook(); - Point local = n.getLocalLocation(); + LocalPoint local = n.getLocalLocation(); Polygon poly = getCanvasTilePoly(client, local); OverlayUtil.renderPolygon(g, poly, Color.WHITE); Point screen = Perspective.worldToCanvas(client, local.getX(), local.getY(), client.getPlane(), n.getLogicalHeight()); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java index 5de4a2e1da..965efee38f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java @@ -35,8 +35,6 @@ import net.runelite.api.AnimationID; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; 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.events.AnimationChanged; 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")) { - Point worldPoint = Perspective.regionToWorld(client, new Point(menuOpt.getId() & 127, menuOpt.getId() >> 7 & 127)); - lastBookcaseClick = new WorldPoint(worldPoint.getX(), worldPoint.getY(), client.getPlane()); + lastBookcaseClick = WorldPoint.fromLocal(client, menuOpt.getId() & 127, menuOpt.getId() >> 7 & 127, client.getPlane()); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeRocksOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeRocksOverlay.java index 1857a93159..bc42e45c3a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeRocksOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodeRocksOverlay.java @@ -38,6 +38,7 @@ import net.runelite.api.Player; import net.runelite.api.Point; import net.runelite.api.Skill; import net.runelite.api.WallObject; +import net.runelite.api.coords.LocalPoint; import net.runelite.client.game.SkillIconManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; @@ -83,10 +84,10 @@ class MotherlodeRocksOverlay extends Overlay private void renderTiles(Graphics2D graphics, Player local) { - Point localLocation = local.getLocalLocation(); + LocalPoint localLocation = local.getLocalLocation(); for (WallObject vein : plugin.getVeins()) { - Point location = vein.getLocalLocation(); + LocalPoint location = vein.getLocalLocation(); if (localLocation.distanceTo(location) <= MAX_DISTANCE) { renderVein(graphics, vein); @@ -95,7 +96,7 @@ class MotherlodeRocksOverlay extends Overlay for (GameObject rock : plugin.getRocks()) { - Point location = rock.getLocalLocation(); + LocalPoint location = rock.getLocalLocation(); if (localLocation.distanceTo(location) <= MAX_DISTANCE) { renderRock(graphics, rock); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohOverlay.java index 9d852e887b..ee69d10bda 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohOverlay.java @@ -33,7 +33,7 @@ import javax.inject.Inject; import lombok.Getter; import net.runelite.api.Client; 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.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; @@ -69,10 +69,10 @@ public class PohOverlay extends Overlay @Override public Dimension render(Graphics2D graphics, java.awt.Point parent) { - Point localLocation = client.getLocalPlayer().getLocalLocation(); + LocalPoint localLocation = client.getLocalPlayer().getLocalLocation(); plugin.getPohObjects().forEach((object, tile) -> { - Point location = object.getLocalLocation(); + LocalPoint location = object.getLocalLocation(); if (tile.getPlane() == client.getPlane() && localLocation.distanceTo(location) <= MAX_DISTANCE) { PohIcons icon = PohIcons.getIcon(object.getId()); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/roguesden/RoguesDenOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/roguesden/RoguesDenOverlay.java index 3cc02180b1..19f5542fc3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/roguesden/RoguesDenOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/roguesden/RoguesDenOverlay.java @@ -31,7 +31,7 @@ import java.awt.Polygon; import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; 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.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; @@ -61,7 +61,7 @@ public class RoguesDenOverlay extends Overlay return null; } - Point playerLocation = client.getLocalPlayer().getLocalLocation(); + LocalPoint playerLocation = client.getLocalPlayer().getLocalLocation(); plugin.getObstaclesHull().forEach((obstacle, tile) -> { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/AbyssOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/AbyssOverlay.java index 43db3d1964..855f47c24f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/AbyssOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/AbyssOverlay.java @@ -51,6 +51,7 @@ import net.runelite.api.Client; import net.runelite.api.DecorativeObject; import net.runelite.api.Perspective; import net.runelite.api.Point; +import net.runelite.api.coords.LocalPoint; import net.runelite.client.game.ItemManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayLayer; @@ -89,10 +90,10 @@ class AbyssOverlay extends Overlay return null; } - Point localLocation = client.getLocalPlayer().getLocalLocation(); + LocalPoint localLocation = client.getLocalPlayer().getLocalLocation(); for (DecorativeObject object : plugin.getAbyssObjects()) { - Point location = object.getLocalLocation(); + LocalPoint location = object.getLocalLocation(); if (localLocation.distanceTo(location) <= MAX_DISTANCE) { renderRifts(graphics, object); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tileindicators/TileIndicatorsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/tileindicators/TileIndicatorsOverlay.java index e9ee430785..c0e0f11f91 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/tileindicators/TileIndicatorsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/tileindicators/TileIndicatorsOverlay.java @@ -24,13 +24,12 @@ */ package net.runelite.client.plugins.tileindicators; -import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Polygon; import net.runelite.api.Client; 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.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; @@ -54,24 +53,20 @@ public class TileIndicatorsOverlay extends Overlay @Override public Dimension render(Graphics2D graphics, java.awt.Point parent) { - if (client.getSceneDestinationLocation().getX() > 0 - && client.getSceneDestinationLocation().getY() > 0) + LocalPoint dest = client.getLocalDestinationLocation(); + 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; } - - 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); - } - } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java index 7c0f22bb33..1a664fe05c 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java @@ -30,10 +30,11 @@ import java.awt.image.BufferedImage; import net.runelite.api.Actor; import net.runelite.api.NPC; import net.runelite.api.Perspective; -import static net.runelite.api.Perspective.LOCAL_COORD_BITS; import net.runelite.api.Player; import net.runelite.api.Point; 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.mixins.FieldHook; import net.runelite.api.mixins.Inject; @@ -123,24 +124,16 @@ public abstract class RSActorMixin implements RSActor @Override @Inject - public Point getWorldLocation() + public WorldPoint getWorldLocation() { - Point localLocation = getLocalLocation(); - return Perspective.localToWorld(client, localLocation); + return WorldPoint.fromLocal(client, getX(), getY(), client.getPlane()); } @Inject @Override - public Point getRegionLocation() + public LocalPoint getLocalLocation() { - return new Point(getX() >>> LOCAL_COORD_BITS, getY() >>> LOCAL_COORD_BITS);// divided by 128 - } - - @Inject - @Override - public Point getLocalLocation() - { - return new Point(getX(), getY()); + return new LocalPoint(getX(), getY()); } @Inject diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index 98a2dc5918..94cd998160 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -26,6 +26,7 @@ package net.runelite.mixins; import java.util.ArrayList; import java.util.List; +import javax.annotation.Nullable; import net.runelite.api.ChatMessageType; import net.runelite.api.ClanMember; import net.runelite.api.GameState; @@ -43,6 +44,7 @@ import net.runelite.api.Projectile; import net.runelite.api.Setting; import net.runelite.api.Skill; import net.runelite.api.Varbits; +import net.runelite.api.coords.LocalPoint; import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GrandExchangeOfferChanged; @@ -366,9 +368,16 @@ public abstract class RSClientMixin implements RSClient @Inject @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 diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java index 9ee17a68ee..a084c8982c 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java @@ -28,9 +28,10 @@ import net.runelite.api.Actor; import net.runelite.api.DecorativeObject; import net.runelite.api.GameObject; import net.runelite.api.GroundObject; -import net.runelite.api.Perspective; import net.runelite.api.Point; 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.DecorativeObjectDespawned; import net.runelite.api.events.DecorativeObjectSpawned; @@ -75,10 +76,9 @@ public abstract class RSTileMixin implements RSTile @Inject @Override - public Point getWorldLocation() + public WorldPoint getWorldLocation() { - Point regionLocation = getRegionLocation(); - return Perspective.regionToWorld(client, regionLocation); + return WorldPoint.fromRegion(client, getX(), getY(), getPlane()); } @Inject @@ -90,10 +90,9 @@ public abstract class RSTileMixin implements RSTile @Inject @Override - public Point getLocalLocation() + public LocalPoint getLocalLocation() { - Point regionLocation = getRegionLocation(); - return Perspective.regionToLocal(client, regionLocation); + return LocalPoint.fromRegion(getX(), getY()); } @FieldHook("wallObject") diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/TileObjectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/TileObjectMixin.java index a5e8ff5688..7a89f244e0 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/TileObjectMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/TileObjectMixin.java @@ -30,9 +30,10 @@ import java.util.ArrayList; import java.util.List; import net.runelite.api.Model; import net.runelite.api.Perspective; -import static net.runelite.api.Perspective.LOCAL_COORD_BITS; import net.runelite.api.Point; 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.Mixin; import net.runelite.api.mixins.Mixins; @@ -68,25 +69,16 @@ public abstract class TileObjectMixin implements TileObject @Override @Inject - public Point getWorldLocation() + public WorldPoint getWorldLocation() { - Point localLocation = getLocalLocation(); - return Perspective.localToWorld(client, localLocation); + return WorldPoint.fromLocal(client, getX(), getY(), client.getPlane()); //TODO: use the correct plane } @Override @Inject - public Point getLocalLocation() + public LocalPoint getLocalLocation() { - return new Point(getX(), getY()); - } - - @Override - @Inject - public Point getRegionLocation() - { - Point localLocation = getLocalLocation(); - return new Point(localLocation.getX() >>> LOCAL_COORD_BITS, localLocation.getY() >>> LOCAL_COORD_BITS); + return new LocalPoint(getX(), getY()); } @Override @@ -100,8 +92,7 @@ public abstract class TileObjectMixin implements TileObject @Inject public Point getCanvasLocation(int zOffset) { - Point localLocation = getLocalLocation(); - return Perspective.worldToCanvas(client, localLocation.getX(), localLocation.getY(), 0, zOffset); + return Perspective.worldToCanvas(client, getX(), getY(), 0, zOffset); } @Override