diff options
| author | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-07-18 20:34:49 +0200 |
|---|---|---|
| committer | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-12-12 18:19:33 +0100 |
| commit | e3bb99cec4c1ce37f83946e3a7a7ddd4cbba0dbd (patch) | |
| tree | 9c6f9c57da3060d0ebc142bc1de15eeff7c89b26 /src/main/java | |
| parent | 22db334d1b727b352a4b10bedffc97d1f2998f1b (diff) | |
| download | Skyblocker-e3bb99cec4c1ce37f83946e3a7a7ddd4cbba0dbd.tar.gz Skyblocker-e3bb99cec4c1ce37f83946e3a7a7ddd4cbba0dbd.tar.bz2 Skyblocker-e3bb99cec4c1ce37f83946e3a7a7ddd4cbba0dbd.zip | |
widget selection tweaks
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java | 62 |
1 files changed, 44 insertions, 18 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java index 531dbf76..80316a77 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/config/PreviewTab.java @@ -251,7 +251,14 @@ public class PreviewTab implements Tab { widgetOptions.addWidget(new TextWidget(width, 9, Text.literal(hudWidget.getNiceName()).formatted(Formatting.BOLD, Formatting.UNDERLINE), client.textRenderer)); if (positionRule == null) { widgetOptions.addWidget(ButtonWidget.builder(Text.literal("Positioning: Auto"), button -> { - screenBuilder.setPositionRule(hudWidget.getInternalID(), PositionRule.DEFAULT); + PositionRule rule = new PositionRule( + "screen", + PositionRule.Point.DEFAULT, + PositionRule.Point.DEFAULT, + hudWidget.getX() - 5, + hudWidget.getY() - 5, + ScreenMaster.ScreenLayer.DEFAULT); + screenBuilder.setPositionRule(hudWidget.getInternalID(), rule); updateWidgets(); onHudWidgetSelected(hudWidget); }) @@ -317,19 +324,19 @@ public class PreviewTab implements Tab { } }); widgetOptions.addWidget(ButtonWidget.builder(Text.literal("Apply everywhere"), button -> { - if (this.previewWidget.selectedWidget == null) return; - PositionRule toCopy = ScreenMaster.getScreenBuilder(getCurrentLocation()).getPositionRule(this.previewWidget.selectedWidget.getInternalID()); - if (toCopy == null) return; - for (Location value : Location.values()) { - if (value == getCurrentLocation() || value == Location.DUNGEON) continue; - ScreenMaster.getScreenBuilder(value).setPositionRule( - this.previewWidget.selectedWidget.getInternalID(), - toCopy - ); - } - button.setMessage(Text.literal("Applied!")); - Scheduler.INSTANCE.schedule(() -> button.setMessage(Text.literal("Apply everywhere")), 15); - }).width(width).tooltip(Tooltip.of(Text.literal("Apply positioning to all locations. This cannot be restored!"))).build() + if (this.previewWidget.selectedWidget == null) return; + PositionRule toCopy = ScreenMaster.getScreenBuilder(getCurrentLocation()).getPositionRule(this.previewWidget.selectedWidget.getInternalID()); + if (toCopy == null) return; + for (Location value : Location.values()) { + if (value == getCurrentLocation() || value == Location.DUNGEON) continue; + ScreenMaster.getScreenBuilder(value).setPositionRule( + this.previewWidget.selectedWidget.getInternalID(), + toCopy + ); + } + button.setMessage(Text.literal("Applied!")); + Scheduler.INSTANCE.schedule(() -> button.setMessage(Text.literal("Apply everywhere")), 15); + }).width(width).tooltip(Tooltip.of(Text.literal("Apply positioning to all locations. This cannot be restored!"))).build() ); } @@ -388,7 +395,9 @@ public class PreviewTab implements Tab { float localMouseX = (mouseX - getX()) / scaledRatio; float localMouseY = (mouseY - getY()) / scaledRatio; - for (HudWidget hudWidget : screenBuilder.getHudWidgets(PreviewTab.this.currentScreenLayer)) { + if (selectedWidget != null && selectedWidget.isMouseOver(localMouseX, localMouseY)) { + hoveredWidget = selectedWidget; + } else for (HudWidget hudWidget : screenBuilder.getHudWidgets(PreviewTab.this.currentScreenLayer)) { if (hudWidget.isMouseOver(localMouseX, localMouseY)) { hoveredWidget = hudWidget; break; @@ -525,6 +534,24 @@ public class PreviewTab implements Tab { @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { + if (!(this.active && this.visible && isMouseOver(mouseX, mouseY))) return false; + double localMouseX = (mouseX - getX()) / scaledRatio; + double localMouseY = (mouseY - getY()) / scaledRatio; + if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { + List<HudWidget> hoveredThingies = new ArrayList<>(); + for (HudWidget hudWidget : ScreenMaster.getScreenBuilder(getCurrentLocation()).getHudWidgets(currentScreenLayer)) { + if (hudWidget.isMouseOver(localMouseX, localMouseY)) hoveredThingies.add(hudWidget); + } + if (hoveredThingies.size() == 1) selectedWidget = hoveredThingies.getFirst(); + else if (!hoveredThingies.isEmpty()) { + for (int i = 0; i < hoveredThingies.size(); i++) { + if (hoveredThingies.get(i).equals(hoveredWidget)) { + selectedWidget = hoveredThingies.get((i + 1) % hoveredThingies.size()); + } + } + } + return true; + } ScreenBuilder screenBuilder = ScreenMaster.getScreenBuilder(getCurrentLocation()); if (pickParent && selectedWidget != null && !selectedWidget.equals(hoveredWidget)) { PositionRule oldRule = screenBuilder.getPositionRule(selectedWidget.getInternalID()); @@ -550,14 +577,13 @@ public class PreviewTab implements Tab { return true; } - double localMouseX = (mouseX - getX()) / scaledRatio; - double localMouseY = (mouseY - getY()) / scaledRatio; + if (selectedWidget != null && selectedWidget.isMouseOver(localMouseX, localMouseY) && screenBuilder.getPositionRule(selectedWidget.getInternalID()) != null) { selectedOriginalPos = new ScreenPos(selectedWidget.getX(), selectedWidget.getY()); } - return this.active && this.visible && isMouseOver(mouseX, mouseY); + return true; } @Override |
