WorldMapOverlay: Add check for current plane

This commit is contained in:
Morgan Lewis
2018-05-04 10:16:17 -06:00
parent 84a8ae322a
commit 23445ff29a
3 changed files with 19 additions and 3 deletions

View File

@@ -26,4 +26,5 @@ package net.runelite.api;
public interface WorldMapData public interface WorldMapData
{ {
boolean surfaceContainsPosition(int x, int y);
} }

View File

@@ -104,6 +104,12 @@ public class WorldMapOverlay extends Overlay
{ {
Point drawPoint = mapWorldPointToGraphicsPoint(point); Point drawPoint = mapWorldPointToGraphicsPoint(point);
if (drawPoint == null)
{
worldPoint.setClickbox(null);
continue;
}
if (worldPoint.isSnapToEdge()) if (worldPoint.isSnapToEdge())
{ {
Canvas canvas = client.getCanvas(); Canvas canvas = client.getCanvas();
@@ -168,6 +174,12 @@ public class WorldMapOverlay extends Overlay
private Point mapWorldPointToGraphicsPoint(WorldPoint worldPoint) private Point mapWorldPointToGraphicsPoint(WorldPoint worldPoint)
{ {
RenderOverview ro = clientProvider.get().getRenderOverview(); RenderOverview ro = clientProvider.get().getRenderOverview();
if (!ro.getWorldMapData().surfaceContainsPosition(worldPoint.getX(), worldPoint.getY()))
{
return null;
}
Float pixelsPerTile = ro.getWorldMapZoom(); Float pixelsPerTile = ro.getWorldMapZoom();
Point worldMapPosition = ro.getWorldMapPosition(); Point worldMapPosition = ro.getWorldMapPosition();
@@ -184,18 +196,18 @@ public class WorldMapOverlay extends Overlay
return new Point(xGraphDiff, yGraphDiff); return new Point(xGraphDiff, yGraphDiff);
} }
return new Point(0, 0); return null;
} }
private void drawTooltip(Graphics2D graphics, WorldMapPoint worldPoint) private void drawTooltip(Graphics2D graphics, WorldMapPoint worldPoint)
{ {
String tooltip = worldPoint.getTooltip(); String tooltip = worldPoint.getTooltip();
if (tooltip == null || tooltip.length() <= 0) Point drawPoint = mapWorldPointToGraphicsPoint(worldPoint.getWorldPoint());
if (tooltip == null || tooltip.length() <= 0 || drawPoint == null)
{ {
return; return;
} }
Point drawPoint = mapWorldPointToGraphicsPoint(worldPoint.getWorldPoint());
drawPoint = new Point(drawPoint.getX() + TOOLTIP_OFFSET_WIDTH, drawPoint.getY() + TOOLTIP_OFFSET_HEIGHT); 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()); graphics.setClip(0, 0, clientProvider.get().getCanvas().getWidth(), clientProvider.get().getCanvas().getHeight());

View File

@@ -25,7 +25,10 @@
package net.runelite.rs.api; package net.runelite.rs.api;
import net.runelite.api.WorldMapData; import net.runelite.api.WorldMapData;
import net.runelite.mapping.Import;
public interface RSWorldMapData extends WorldMapData public interface RSWorldMapData extends WorldMapData
{ {
@Import("surfaceContainsPosition")
boolean surfaceContainsPosition(int x, int y);
} }