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 a8621770a2..ccbb27d676 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 @@ -24,6 +24,7 @@ */ package net.runelite.client.ui.overlay.worldmap; +import com.google.common.base.Splitter; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics2D; @@ -55,6 +56,8 @@ public class WorldMapOverlay extends Overlay private static final int TOOLTIP_PADDING_HEIGHT = 1; private static final int TOOLTIP_PADDING_WIDTH = 2; + private static final Splitter TOOLTIP_SPLITTER = Splitter.on("
").trimResults().omitEmptyStrings(); + private final WorldMapPointManager worldMapPointManager; private final Client client; @@ -260,6 +263,13 @@ public class WorldMapOverlay extends Overlay return; } + List rows = TOOLTIP_SPLITTER.splitToList(tooltip); + + if (rows.isEmpty()) + { + return; + } + drawPoint = new Point(drawPoint.getX() + TOOLTIP_OFFSET_WIDTH, drawPoint.getY() + TOOLTIP_OFFSET_HEIGHT); final Rectangle bounds = new Rectangle(0, 0, client.getCanvasWidth(), client.getCanvasHeight()); @@ -268,16 +278,20 @@ public class WorldMapOverlay extends Overlay graphics.setColor(JagexColors.TOOLTIP_BACKGROUND); graphics.setFont(FontManager.getRunescapeFont()); FontMetrics fm = graphics.getFontMetrics(); - int width = fm.stringWidth(tooltip); + int width = rows.stream().map(fm::stringWidth).max(Integer::compareTo).get(); int height = fm.getHeight(); - Rectangle tooltipRect = new Rectangle(drawPoint.getX() - TOOLTIP_PADDING_WIDTH, drawPoint.getY() - TOOLTIP_PADDING_HEIGHT, width + TOOLTIP_PADDING_WIDTH * 2, height + TOOLTIP_PADDING_HEIGHT * 2); + Rectangle tooltipRect = new Rectangle(drawPoint.getX() - TOOLTIP_PADDING_WIDTH, drawPoint.getY() - TOOLTIP_PADDING_HEIGHT, width + TOOLTIP_PADDING_WIDTH * 2, height * rows.size() + TOOLTIP_PADDING_HEIGHT * 2); graphics.fillRect((int) tooltipRect.getX(), (int) tooltipRect.getY(), (int) tooltipRect.getWidth(), (int) tooltipRect.getHeight()); graphics.setColor(JagexColors.TOOLTIP_BORDER); graphics.drawRect((int) tooltipRect.getX(), (int) tooltipRect.getY(), (int) tooltipRect.getWidth(), (int) tooltipRect.getHeight()); + graphics.setColor(JagexColors.TOOLTIP_TEXT); - graphics.drawString(tooltip, drawPoint.getX(), drawPoint.getY() + height); + for (int i = 0; i < rows.size(); i++) + { + graphics.drawString(rows.get(i), drawPoint.getX(), drawPoint.getY() + (i + 1) * height); + } } private Point clipToRectangle(Point drawPoint, Rectangle mapDisplayRectangle)