aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorviciscat <51047087+viciscat@users.noreply.github.com>2024-05-23 22:20:23 +0200
committerviciscat <51047087+viciscat@users.noreply.github.com>2024-12-12 18:19:05 +0100
commit294782407a8732a042638acbce51a994de8de076 (patch)
tree03b86a2a33639b27af8eff12282ee66675afa8ba /src
parenta6fdb3cd9f83e5a0586eccba115c6c59affa4bb1 (diff)
downloadSkyblocker-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')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/ScreenBuilder.java20
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/TopAlignedWidgetPositioner.java46
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/tabhud/screenbuilder/pipeline/WidgetPositioner.java23
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();
+
+}