Fix ground marker minimap overlay position

The ground marker minimap overlay gets a local point for the tile to mark from fromWorld()
and passes it to localToMinimap() - but because the adjustment of -1, when the player position
is subtracted from it to compute the minimap location it causes the computed position to be off
by a full tile.

Additionally, drawRect() width and height is inclusive so the width/height must be subtracted by 1
This commit is contained in:
Adam
2021-10-01 19:08:35 -04:00
parent e98c3da758
commit 4ca3db6358
2 changed files with 5 additions and 6 deletions

View File

@@ -115,8 +115,8 @@ public class LocalPoint
public static LocalPoint fromScene(int x, int y) public static LocalPoint fromScene(int x, int y)
{ {
return new LocalPoint( return new LocalPoint(
(x << Perspective.LOCAL_COORD_BITS) + (1 << Perspective.LOCAL_COORD_BITS - 1) - 1, (x << Perspective.LOCAL_COORD_BITS) + (1 << Perspective.LOCAL_COORD_BITS - 1),
(y << Perspective.LOCAL_COORD_BITS) + (1 << Perspective.LOCAL_COORD_BITS - 1) - 1 (y << Perspective.LOCAL_COORD_BITS) + (1 << Perspective.LOCAL_COORD_BITS - 1)
); );
} }

View File

@@ -46,7 +46,6 @@ import net.runelite.client.util.ColorUtil;
public class OverlayUtil public class OverlayUtil
{ {
private static final int MINIMAP_DOT_RADIUS = 4; private static final int MINIMAP_DOT_RADIUS = 4;
private static final double UNIT = Math.PI / 1024.0d;
public static void renderPolygon(Graphics2D graphics, Shape poly, Color color) public static void renderPolygon(Graphics2D graphics, Shape poly, Color color)
{ {
@@ -79,12 +78,12 @@ public class OverlayUtil
public static void renderMinimapRect(Client client, Graphics2D graphics, Point center, int width, int height, Color color) public static void renderMinimapRect(Client client, Graphics2D graphics, Point center, int width, int height, Color color)
{ {
double angle = client.getMapAngle() * UNIT; double angle = client.getMapAngle() * Perspective.UNIT;
graphics.setColor(color); graphics.setColor(color);
graphics.rotate(angle, center.getX(), center.getY()); graphics.rotate(angle, center.getX(), center.getY());
graphics.drawRect(center.getX() - width / 2, center.getY() - height / 2, width, height); graphics.drawRect(center.getX() - width / 2, center.getY() - height / 2, width - 1, height - 1);
graphics.rotate(-angle , center.getX(), center.getY()); graphics.rotate(-angle, center.getX(), center.getY());
} }
public static void renderTextLocation(Graphics2D graphics, Point txtLoc, String text, Color color) public static void renderTextLocation(Graphics2D graphics, Point txtLoc, String text, Color color)