diff options
| author | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-05-23 22:20:23 +0200 |
|---|---|---|
| committer | viciscat <51047087+viciscat@users.noreply.github.com> | 2024-12-12 18:19:05 +0100 |
| commit | 294782407a8732a042638acbce51a994de8de076 (patch) | |
| tree | 03b86a2a33639b27af8eff12282ee66675afa8ba /src | |
| parent | a6fdb3cd9f83e5a0586eccba115c6c59affa4bb1 (diff) | |
| download | Skyblocker-294782407a8732a042638acbce51a994de8de076.tar.gz Skyblocker-294782407a8732a042638acbce51a994de8de076.tar.bz2 Skyblocker-294782407a8732a042638acbce51a994de8de076.zip | |
Breaking more things
start moving default positioning to their own classes (kinda like the pipelines)
Diffstat (limited to 'src')
3 files changed, 81 insertions, 8 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java index 29e825d1..973d7204 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java @@ -1,15 +1,8 @@ package de.hysky.skyblocker.skyblock.tabhud.screenbuilder; -import java.io.BufferedReader; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.util.*; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; - import de.hysky.skyblocker.skyblock.tabhud.util.PlayerListMgr; import de.hysky.skyblocker.skyblock.tabhud.util.ScreenConst; import de.hysky.skyblocker.skyblock.tabhud.widget.*; @@ -23,7 +16,6 @@ import it.unimi.dsi.fastutil.objects.ObjectIntMutablePair; import it.unimi.dsi.fastutil.objects.ObjectIntPair; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Colors; import net.minecraft.util.Identifier; @@ -178,9 +170,11 @@ public class ScreenBuilder { for (TabHudWidget tabHudWidget : PlayerListMgr.widgetsToShow) { if (positioning.getOrDefault(tabHudWidget.getInternalID(), false)) { unaffected.add(tabHudWidget); + tabHudWidget.setPositioned(false); continue; } affected.add(tabHudWidget); + tabHudWidget.setPositioned(true); tabHudWidget.update(); if (currentY + tabHudWidget.getHeight() > maxY) { @@ -221,9 +215,11 @@ public class ScreenBuilder { for (TabHudWidget tabHudWidget : PlayerListMgr.widgetsToShow) { if (positioning.getOrDefault(tabHudWidget.getInternalID(), false)) { unaffected.add(tabHudWidget); + tabHudWidget.setPositioned(false); continue; } affected.add(tabHudWidget); + tabHudWidget.setPositioned(true); tabHudWidget.update(); // Too large to fit in column @@ -270,7 +266,15 @@ public class ScreenBuilder { return unaffected; } + private final List<HudWidget> hudScreen = new ArrayList<>(); + private final List<HudWidget> mainTabScreen = new ArrayList<>(); + private final List<HudWidget> secondaryTabScreen = new ArrayList<>(); + private void positionWidgets(int screenW, int screenH) { + hudScreen.clear(); + mainTabScreen.clear(); + secondaryTabScreen.clear(); + List<TabHudWidget> unaffected; if (false) { unaffected = centered(screenW, screenH); diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/TopAlignedWidgetPositioner.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/TopAlignedWidgetPositioner.java new file mode 100644 index 00000000..b2ecdf5e --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/TopAlignedWidgetPositioner.java @@ -0,0 +1,46 @@ +package de.hysky.skyblocker.skyblock.tabhud.screenbuilder.pipeline; + +import de.hysky.skyblocker.skyblock.tabhud.util.ScreenConst; +import de.hysky.skyblocker.skyblock.tabhud.widget.HudWidget; + +import java.util.ArrayList; +import java.util.List; + +public class TopAlignedWidgetPositioner extends WidgetPositioner { + + private static final int MAX_COLUMN_HEIGHT = 300; + private static final int START_Y = 20; + + private int totalWidth = 0; + + private int currentWidth = 0; + private int currentY = START_Y; + + private final List<HudWidget> widgets = new ArrayList<>(); + + public TopAlignedWidgetPositioner(int screenWidth, int screenHeight) { + super(screenWidth, screenHeight); + } + + @Override + public void positionWidget(HudWidget hudWidget) { + widgets.add(hudWidget); + if (currentY + hudWidget.getHeight() > MAX_COLUMN_HEIGHT) { + totalWidth += currentWidth + ScreenConst.WIDGET_PAD; + currentY = START_Y; + currentWidth = 0; + } + + hudWidget.setPosition(totalWidth, currentY); + currentY += hudWidget.getHeight() + ScreenConst.WIDGET_PAD; + currentWidth = Math.max(currentWidth, hudWidget.getWidth()); + } + + @Override + public void finalizePositioning() { + int off = (screenWidth - totalWidth) / 2; + for (HudWidget widget : widgets) { + widget.setX(widget.getX() - off); + } + } +} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/WidgetPositioner.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/WidgetPositioner.java new file mode 100644 index 00000000..b4974705 --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/WidgetPositioner.java @@ -0,0 +1,23 @@ +package de.hysky.skyblocker.skyblock.tabhud.screenbuilder.pipeline; + +import de.hysky.skyblocker.skyblock.tabhud.widget.HudWidget; + +public abstract class WidgetPositioner { + + protected final int screenWidth; + protected final int screenHeight; + + public WidgetPositioner(int screenWidth, int screenHeight) { + this.screenWidth = screenWidth; + this.screenHeight = screenHeight; + } + + public abstract void positionWidget(HudWidget hudWidget); + + /** + * Called whenever all the widgets that need to be positioned have been fed to the positioner. + * Used for centering stuff and things + */ + public abstract void finalizePositioning(); + +} |
