From 161c9f5ec307d35ee4c7e5793f7e9cf76bc59288 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Sun, 26 Aug 2018 21:51:19 +0200 Subject: [PATCH] Take preferred position into account when ordering Take overlay preferred position into account when ordering overlays. Signed-off-by: Tomas Slusny --- .../runelite/client/ui/overlay/OverlayManager.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java index 6f7453271b..ab0f9f7ba7 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java @@ -58,11 +58,19 @@ public class OverlayManager @VisibleForTesting static final Comparator OVERLAY_COMPARATOR = (a, b) -> { - if (a.getPosition() != b.getPosition()) + final OverlayPosition aPos = a.getPreferredPosition() != null + ? a.getPreferredPosition() + : a.getPosition(); + + final OverlayPosition bPos = b.getPreferredPosition() != null + ? b.getPreferredPosition() + : b.getPosition(); + + if (aPos != bPos) { // This is so non-dynamic overlays render after dynamic // overlays, which are generally in the scene - return a.getPosition().compareTo(b.getPosition()); + return aPos.compareTo(bPos); } // For dynamic overlays, higher priority means to @@ -70,7 +78,7 @@ public class OverlayManager // For non-dynamic overlays, higher priority means // draw *first* so that they are closer to their // defined position. - return a.getPosition() == OverlayPosition.DYNAMIC + return aPos == OverlayPosition.DYNAMIC ? a.getPriority().compareTo(b.getPriority()) : b.getPriority().compareTo(a.getPriority()); };