From 7c4788f86f589d71b319e186fa5d8a468046bcc1 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 21 Mar 2021 12:23:14 +0800 Subject: Rely on ScreenRegistry more on calculating the bounds Signed-off-by: shedaniel --- .../me/shedaniel/rei/impl/ScreenRegistryImpl.java | 30 +++++++++++++--------- 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'runtime/src/main/java/me/shedaniel/rei/impl/ScreenRegistryImpl.java') diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/ScreenRegistryImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/ScreenRegistryImpl.java index ff7dca9a2..781f78bae 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/ScreenRegistryImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/ScreenRegistryImpl.java @@ -93,25 +93,31 @@ public class ScreenRegistryImpl implements ScreenRegistry { } @Override - public Rectangle getOverlayBounds(DisplayPanelLocation location, T screen) { - Window window = Minecraft.getInstance().getWindow(); - int scaledWidth = window.getGuiScaledWidth(); - int scaledHeight = window.getGuiScaledHeight(); + public Rectangle getScreenBounds(T screen) { for (OverlayDecider decider : getDeciders(screen)) { if (decider instanceof DisplayBoundsProvider) { - Rectangle containerBounds = ((DisplayBoundsProvider) decider).getScreenBounds(screen); - if (location == DisplayPanelLocation.LEFT) { - if (containerBounds.x < 10) continue; - return new Rectangle(2, 0, containerBounds.x - 2, scaledHeight); - } else { - if (scaledWidth - containerBounds.getMaxX() < 10) continue; - return new Rectangle(containerBounds.getMaxX() + 2, 0, scaledWidth - containerBounds.getMaxX() - 4, scaledHeight); - } + return ((DisplayBoundsProvider) decider).getScreenBounds(screen); } } return new Rectangle(); } + @Override + public Rectangle getOverlayBounds(DisplayPanelLocation location, T screen) { + Window window = Minecraft.getInstance().getWindow(); + int scaledWidth = window.getGuiScaledWidth(); + int scaledHeight = window.getGuiScaledHeight(); + Rectangle screenBounds = getScreenBounds(screen); + if (screenBounds.isEmpty()) return new Rectangle(); + if (location == DisplayPanelLocation.LEFT) { + if (screenBounds.x < 10) return new Rectangle(); + return new Rectangle(2, 0, screenBounds.x - 2, scaledHeight); + } else { + if (scaledWidth - screenBounds.getMaxX() < 10) return new Rectangle(); + return new Rectangle(screenBounds.getMaxX() + 2, 0, scaledWidth - screenBounds.getMaxX() - 4, scaledHeight); + } + } + @Nullable @Override public EntryStack getFocusedStack(T screen, Point mouse) { -- cgit