aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-07-18 20:34:49 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-12-12 18:19:33 +0100
commite3bb99cec4c1ce37f83946e3a7a7ddd4cbba0dbd (patch)
tree9c6f9c57da3060d0ebc142bc1de15eeff7c89b26 /src/main/java
parent22db334d1b727b352a4b10bedffc97d1f2998f1b (diff)
downloadSkyblocker-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.java62
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