diff options
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(); + +} |
