From 23445ff29a972c7a1de06ea8afb8b48030b5ae51 Mon Sep 17 00:00:00 2001 From: Morgan Lewis Date: Fri, 4 May 2018 10:16:17 -0600 Subject: [PATCH] WorldMapOverlay: Add check for current plane --- .../java/net/runelite/api/WorldMapData.java | 1 + .../ui/overlay/worldmap/WorldMapOverlay.java | 18 +++++++++++++++--- .../net/runelite/rs/api/RSWorldMapData.java | 3 +++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/WorldMapData.java b/runelite-api/src/main/java/net/runelite/api/WorldMapData.java index c4007c8b6d..d1054fd85b 100644 --- a/runelite-api/src/main/java/net/runelite/api/WorldMapData.java +++ b/runelite-api/src/main/java/net/runelite/api/WorldMapData.java @@ -26,4 +26,5 @@ package net.runelite.api; public interface WorldMapData { + boolean surfaceContainsPosition(int x, int y); } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlay.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlay.java index fb6b120143..9923b02b8b 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/worldmap/WorldMapOverlay.java @@ -104,6 +104,12 @@ public class WorldMapOverlay extends Overlay { Point drawPoint = mapWorldPointToGraphicsPoint(point); + if (drawPoint == null) + { + worldPoint.setClickbox(null); + continue; + } + if (worldPoint.isSnapToEdge()) { Canvas canvas = client.getCanvas(); @@ -168,6 +174,12 @@ public class WorldMapOverlay extends Overlay private Point mapWorldPointToGraphicsPoint(WorldPoint worldPoint) { RenderOverview ro = clientProvider.get().getRenderOverview(); + + if (!ro.getWorldMapData().surfaceContainsPosition(worldPoint.getX(), worldPoint.getY())) + { + return null; + } + Float pixelsPerTile = ro.getWorldMapZoom(); Point worldMapPosition = ro.getWorldMapPosition(); @@ -184,18 +196,18 @@ public class WorldMapOverlay extends Overlay return new Point(xGraphDiff, yGraphDiff); } - return new Point(0, 0); + return null; } private void drawTooltip(Graphics2D graphics, WorldMapPoint worldPoint) { String tooltip = worldPoint.getTooltip(); - if (tooltip == null || tooltip.length() <= 0) + Point drawPoint = mapWorldPointToGraphicsPoint(worldPoint.getWorldPoint()); + if (tooltip == null || tooltip.length() <= 0 || drawPoint == null) { return; } - Point drawPoint = mapWorldPointToGraphicsPoint(worldPoint.getWorldPoint()); drawPoint = new Point(drawPoint.getX() + TOOLTIP_OFFSET_WIDTH, drawPoint.getY() + TOOLTIP_OFFSET_HEIGHT); graphics.setClip(0, 0, clientProvider.get().getCanvas().getWidth(), clientProvider.get().getCanvas().getHeight()); diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapData.java b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapData.java index fa93c176b6..5638d6813c 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapData.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapData.java @@ -25,7 +25,10 @@ package net.runelite.rs.api; import net.runelite.api.WorldMapData; +import net.runelite.mapping.Import; public interface RSWorldMapData extends WorldMapData { + @Import("surfaceContainsPosition") + boolean surfaceContainsPosition(int x, int y); }