From 0eb69ae41761e3834e7d759e6f299bdf6cd6de8f Mon Sep 17 00:00:00 2001 From: viciscat <51047087+viciscat@users.noreply.github.com> Date: Sun, 7 Jul 2024 17:14:40 +0200 Subject: apply to all button --- .../skyblock/tabhud/config/PreviewTab.java | 54 +++++++++++++++++----- .../skyblock/tabhud/widget/FireSaleWidget.java | 2 - 2 files changed, 42 insertions(+), 14 deletions(-) (limited to 'src/main/java') 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 1408b4b6..531dbf76 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 @@ -11,6 +11,7 @@ import de.hysky.skyblocker.skyblock.tabhud.widget.HudWidget; import de.hysky.skyblocker.skyblock.tabhud.widget.TabHudWidget; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.Location; +import de.hysky.skyblocker.utils.scheduler.Scheduler; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.ScreenPos; @@ -103,7 +104,7 @@ public class PreviewTab implements Tab { ScoreboardCriterion.RenderType.INTEGER, true, BlankNumberFormat.INSTANCE - ); + ); Scoreboard scoreboard = placeHolderObjective.getScoreboard(); scoreboard.getOrCreateScore(createHolder(Text.literal("Random text!")), placeHolderObjective).setScore(0); scoreboard.getOrCreateScore(createHolder(Text.literal("To fill in")), placeHolderObjective).setScore(-1); @@ -225,6 +226,13 @@ public class PreviewTab implements Tab { PlayerListMgr.updateWidgetsFrom(lines); } + void updateWidgets() { + ScreenBuilder screenBuilder = ScreenMaster.getScreenBuilder(getCurrentLocation()); + updatePlayerListFromPreview(); + float scale = SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudScale / 100.f; + screenBuilder.positionWidgets((int) (parent.width / scale), (int) (parent.height / scale)); + } + void onHudWidgetSelected(@Nullable HudWidget hudWidget) { widgetOptions.clearWidgets(); if (hudWidget == null) return; @@ -296,14 +304,35 @@ public class PreviewTab implements Tab { widgetOptions.addWidget(new AnchorSelectionWidget(width, Text.literal("This anchor"), false)); widgetOptions.addWidget(new AnchorSelectionWidget(width, Text.literal("Parent anchor"), true)); - } - } + // apply to all locations + if (dungeon) return; + // padding thing + widgetOptions.addWidget(new ClickableWidget(0, 0, width, 20, Text.empty()) { + @Override + protected void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) { + } - void updateWidgets() { - ScreenBuilder screenBuilder = ScreenMaster.getScreenBuilder(getCurrentLocation()); - updatePlayerListFromPreview(); - float scale = SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudScale / 100.f; - screenBuilder.positionWidgets((int) (parent.width / scale), (int) (parent.height / scale)); + @Override + protected void appendClickableNarrations(NarrationMessageBuilder builder) { + } + }); + 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() + ); + + } } private Location getCurrentLocation() { @@ -436,7 +465,7 @@ public class PreviewTab implements Tab { if (!yUnitOnRight && translatedX - 2 - yUnitTextWidth <= 0) yUnitOnRight = true; // X - context.drawCenteredTextWithShadow(client.textRenderer, String.valueOf(relativeX + rule.relativeX()), thisAnchorX - (relativeX + rule.relativeX()) / 2, xUnitOnTop ? thisAnchorY - 9 : thisAnchorY + 2, Colors.LIGHT_RED); + context.drawCenteredTextWithShadow(client.textRenderer, String.valueOf(relativeX + rule.relativeX()), thisAnchorX - (relativeX + rule.relativeX()) / 2, xUnitOnTop ? thisAnchorY - 9 : thisAnchorY + 2, Colors.LIGHT_RED); // Y context.drawText(client.textRenderer, yUnitText, yUnitOnRight ? translatedX + 2 : translatedX - 1 - yUnitTextWidth, thisAnchorY - (relativeY + rule.relativeY() - 9) / 2, Colors.LIGHT_RED, true); } @@ -655,7 +684,7 @@ public class PreviewTab implements Tab { } } - boolean hoveredAnchor = mouseX >= getX() + i * getWidth()/3 && + boolean hoveredAnchor = mouseX >= getX() + i * getWidth() / 3 && mouseX < getX() + (i + 1) * getWidth() / 3 && mouseY >= getY() + 10 + j * 10 && mouseY < getY() + 10 + (j + 1) * 10; @@ -681,7 +710,7 @@ public class PreviewTab implements Tab { PositionRule oldRule = screenBuilder.getPositionRuleOrDefault(internalID); // Get the x, y of the parent's point float scale = SkyblockerConfigManager.get().uiAndVisuals.tabHud.tabHudScale / 100.f; - ScreenPos startPos = WidgetPositioner.getStartPosition(oldRule.parent(), (int) (parent.width / scale), (int) (parent.height / scale), other ? hoveredPoint: oldRule.parentPoint()); + ScreenPos startPos = WidgetPositioner.getStartPosition(oldRule.parent(), (int) (parent.width / scale), (int) (parent.height / scale), other ? hoveredPoint : oldRule.parentPoint()); if (startPos == null) startPos = new ScreenPos(0, 0); // Same but for the affected widget PositionRule.Point thisPoint = other ? oldRule.thisPoint() : hoveredPoint; @@ -712,6 +741,7 @@ public class PreviewTab implements Tab { } @Override - protected void appendClickableNarrations(NarrationMessageBuilder builder) {} + protected void appendClickableNarrations(NarrationMessageBuilder builder) { + } } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java index 2b0bb0a0..8856b9be 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/FireSaleWidget.java @@ -6,7 +6,6 @@ import java.util.regex.Pattern; import de.hysky.skyblocker.skyblock.tabhud.util.Colors; import de.hysky.skyblocker.skyblock.tabhud.util.Ico; -import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr; import de.hysky.skyblocker.skyblock.tabhud.widget.component.IcoTextComponent; import de.hysky.skyblocker.skyblock.tabhud.widget.component.PlainTextComponent; import de.hysky.skyblocker.skyblock.tabhud.widget.component.ProgressComponent; @@ -32,7 +31,6 @@ public class FireSaleWidget extends TabHudWidget { super("Fire Sales", TITLE, Formatting.DARK_AQUA.getColorValue()); } - // TODO make it work (waiting for a fire sale to see the widget) @Override public void updateContent(List lines) { for (int i = 1; i < lines.size(); i++) { -- cgit