diff options
Diffstat (limited to 'src')
4 files changed, 95 insertions, 2 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/FancyStatusBars.java b/src/main/java/de/hysky/skyblocker/skyblock/FancyStatusBars.java index 7744626b..a5cbab1f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/FancyStatusBars.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/FancyStatusBars.java @@ -47,6 +47,83 @@ public class FancyStatusBars { statusBars.put("intelligence", new StatusBar(new Identifier(SkyblockerMod.NAMESPACE, "temp"), new Color[]{new Color(0, 255, 255), new Color(180, 0, 255)}, true, null)); statusBars.put("defense", new StatusBar(new Identifier(SkyblockerMod.NAMESPACE, "temp"), new Color[]{new Color(255, 255, 255)}, false, null)); statusBars.put("experience", new StatusBar(new Identifier(SkyblockerMod.NAMESPACE, "temp"), new Color[]{new Color(100, 220, 70)}, false, null)); + + barGrid.addRow(1, false); + barGrid.add(1, 1, statusBars.get("health")); + barGrid.add(2, 1, statusBars.get("intelligence")); + barGrid.addRow(2, false); + barGrid.add(1, 2, statusBars.get("experience")); + barGrid.addRow(-1, true); + barGrid.add(1, -1, statusBars.get("defense")); + } + + public static void updatePositions() { + final float hotbarSize = 182; + final int width = MinecraftClient.getInstance().getWindow().getScaledWidth(); + final int height = MinecraftClient.getInstance().getWindow().getScaledHeight(); + + // THE TOP + for (int i = 0; i < barGrid.getTopSize(); i++) { + List<StatusBar> row = barGrid.getRow(i + 1, false); + if (row.isEmpty()) continue; + int totalSize = 0; + for (StatusBar bar : row) { + totalSize += bar.size; + } + + // Fix sizing + whileLoop: while (totalSize != 12) { + if (totalSize > 12) { + for (StatusBar bar : row) { + bar.size--; + totalSize--; + if (totalSize == 12) break whileLoop; + } + } else { + for (StatusBar bar : row) { + bar.size++; + totalSize++; + if (totalSize == 12) break whileLoop; + } + } + } + + int x = width/2 - 91; + int y = height - 33 - 10*i; + for (StatusBar bar : row) { + bar.setX(x); + bar.setY(y); + bar.setWidth((int) ((bar.size / 12.f)*hotbarSize)); + x += bar.getWidth(); + } + } + + // BOTTOM LEFT + for (int i = 0; i < barGrid.getBottomLeftSize(); i++) { + List<StatusBar> row = barGrid.getRow(-(i + 1), false); + if (row.isEmpty()) continue; + int x = width/2 - 91 - 2; + int y = height - 15-10*i; + for (StatusBar bar : row) { + bar.setY(y); + bar.setWidth(bar.size*25); + x -= bar.getWidth(); + bar.setX(x); + } + } + // BOTTOM RIGHT + for (int i = 0; i < barGrid.getBottomRightSize(); i++) { + List<StatusBar> row = barGrid.getRow(-(i + 1), true); + if (row.isEmpty()) continue; + int x = width/2 + 91 + 2; + int y = height - 15-10*i; + for (StatusBar bar : row) { + bar.setX(x); + bar.setY(y); + bar.setWidth(bar.size*25); + x += bar.getWidth(); + } + } } public FancyStatusBars() { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/BarGrid.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/BarGrid.java index b85f85e1..5e774d4a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/BarGrid.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/BarGrid.java @@ -90,4 +90,9 @@ public class BarGrid { } } } + + public int getTopSize() {return top.size();} + + public int getBottomLeftSize() {return bottomLeft.size();} + public int getBottomRightSize() {return bottomRight.size();} } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java index 9c688051..a15660f0 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java @@ -26,7 +26,7 @@ public class StatusBar implements Widget, Drawable, Element, Selectable { public int gridX = 0; public int gridY = 0; - public float size = 1; + public int size = 1; private int width = 0; public float fill = 0; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarsConfigScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarsConfigScreen.java index 2d80e764..0a08a199 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarsConfigScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarsConfigScreen.java @@ -34,7 +34,7 @@ public class StatusBarsConfigScreen extends Screen { cursorBar.setY(mouseY); cursorBar.render(context, mouseX, mouseY, delta); - for (ScreenRect screenRect : meaningFullName.keySet()) { + mainLoop: for (ScreenRect screenRect : meaningFullName.keySet()) { for (NavigationDirection value : NavigationDirection.values()) { boolean overlaps = screenRect.getBorder(value).overlaps(new ScreenRect(new ScreenPos(mouseX - 1, mouseY - 1), 3, 3)); if (overlaps) { @@ -44,8 +44,19 @@ public class StatusBarsConfigScreen extends Screen { if (value.getAxis().equals(NavigationAxis.VERTICAL)) { if (value.isPositive()) { FancyStatusBars.barGrid.addRow(ints[1]+1, ints[0]>0); + FancyStatusBars.barGrid.add(1, ints[1] + 1, cursorBar); + } else { + FancyStatusBars.barGrid.addRow(ints[1], ints[0]>0); + FancyStatusBars.barGrid.add(1, ints[1], cursorBar); + } + } else { + if (value.isPositive()) { + FancyStatusBars.barGrid.add(ints[0] + 1, ints[1], cursorBar); + } else { + FancyStatusBars.barGrid.add(ints[0], ints[1], cursorBar); } } + break mainLoop; } } } |