From 1421d946475bc0c0c519bd1a3ffbd1f09de7b486 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Wed, 7 May 2025 12:36:23 -0500 Subject: [PATCH] a lot of stuff idk --- .../ui2/components/SaturnModule.java | 2 +- .../saturnclient/ui2/components/Sidebar.java | 114 ++++++++++++++++++ .../org/saturnclient/ui2/screens/ModMenu.java | 18 +-- 3 files changed, 125 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/saturnclient/ui2/components/Sidebar.java diff --git a/src/main/java/org/saturnclient/ui2/components/SaturnModule.java b/src/main/java/org/saturnclient/ui2/components/SaturnModule.java index 189be1d..99f69ef 100644 --- a/src/main/java/org/saturnclient/ui2/components/SaturnModule.java +++ b/src/main/java/org/saturnclient/ui2/components/SaturnModule.java @@ -17,7 +17,7 @@ public class SaturnModule extends Element { private static ThemeManager theme = new ThemeManager("SaturnModule", "enabled", "hovering", "toggle-hovering"); private static Property bgColor = theme.property("bg-color", new Property(-16777216)); private static Property fgColor = theme.property("fg-color", new Property(-1)); - private static Property iconColor = theme.property("icon-color", new Property(-5592406)); + private static Property iconColor = theme.property("icon-color", new Property(-1)); private static Property toggleFg = theme.property("toggle-fg", new Property(-1)); private static Property toggleBg = theme.property("toggle-bg", new Property(-16777216)); diff --git a/src/main/java/org/saturnclient/ui2/components/Sidebar.java b/src/main/java/org/saturnclient/ui2/components/Sidebar.java new file mode 100644 index 0000000..a5ddb83 --- /dev/null +++ b/src/main/java/org/saturnclient/ui2/components/Sidebar.java @@ -0,0 +1,114 @@ +package org.saturnclient.ui2.components; + +import org.saturnclient.saturnclient.config.Property; +import org.saturnclient.saturnclient.config.ThemeManager; +import org.saturnclient.ui2.Element; +import org.saturnclient.ui2.RenderContext; +import org.saturnclient.ui2.RenderScope; +import org.saturnclient.ui2.Utils; + +import net.minecraft.client.render.RenderLayer; +import net.minecraft.util.Identifier; + +public class Sidebar extends Element { + private static ThemeManager theme = new ThemeManager("SideBar", "hovering"); + private static Property bgColor = theme.property("bg-color", new Property(0x90000000)); + private static Property iconFg = theme.property("icon-fg", new Property(-1)); + private static Property iconBg = theme.property("icon-bg", new Property(0x00000000)); + + private static Property cornerRadius = theme.property("corner-radius", new Property(10)); + private static Property iconRadius = theme.property("icon-radius", new Property(10)); + private static Property padding = theme.property("padding", new Property(10)); + + static { + theme.propertyStateDefault("hovering", "icon-bg", -7643914); + } + + public static class SidebarComponent { + Runnable onClick; + boolean end; + Identifier sprite; + + public SidebarComponent(Identifier sprite, Runnable onClick, boolean end) { + this.onClick = onClick; + this.end = end; + this.sprite = sprite; + } + } + + SidebarComponent[] components; + int active = 0; + + public Sidebar(int active, SidebarComponent... components) { + this.components = components; + this.width = 30; + this.height = 350; + this.active = active; + } + + @Override + public void render(RenderScope renderScope, RenderContext ctx) { + int topRow = 0; + int bottomRow = 0; + + int sp = 30 - padding.value; + int s = 30 - (padding.value * 2); + + renderScope.setRenderLayer(RenderLayer::getGuiTextured); + + renderScope.drawRoundedRectangle(0, 0, width, height, cornerRadius.value, bgColor.value); + + int i = 0; + + for (SidebarComponent component : components) { + if (component.end) { + int y = (height - (sp * bottomRow)) - (s * 2); + if (ctx.isHovering(padding.value, y, s, s) || active == i) { + theme.setState("hovering"); + } else { + theme.setState(null); + } + renderScope.drawRoundedRectangle(padding.value / 2, y - (padding.value / 2), s + padding.value, s + padding.value, iconRadius.value, iconBg.value); + renderScope.drawTexture(component.sprite, padding.value, y, 0, 0, s, s, iconFg.value); + bottomRow += 1; + } else { + int y = padding.value + ((sp) * topRow); + if (ctx.isHovering(padding.value, y, s, s) || active == i) { + theme.setState("hovering"); + } else { + theme.setState(null); + } + renderScope.drawRoundedRectangle(padding.value / 2, y - (padding.value / 2), s + padding.value, s + padding.value, iconRadius.value, iconBg.value); + renderScope.drawTexture(component.sprite, padding.value, y, 0, 0, s, s, iconFg.value); + topRow += 1; + } + + i++; + } + } + + @Override + public void click(int mouseX, int mouseY) { + int topRow = 0; + int bottomRow = 0; + + int sp = 30 - padding.value; + int s = 30 - (padding.value * 2); + + for (SidebarComponent component : components) { + if (component.end) { + if (Utils.isHovering(mouseX - padding.value, mouseY - (height - (sp * bottomRow) - (s * 2)), s, s, scale)) { + component.onClick.run(); + break; + } + bottomRow += 1; + } else { + if (Utils.isHovering(mouseX - padding.value, mouseY - (padding.value + ((sp) * topRow)), s, s, scale)) { + component.onClick.run(); + break; + } + topRow += 1; + } + } + } +} diff --git a/src/main/java/org/saturnclient/ui2/screens/ModMenu.java b/src/main/java/org/saturnclient/ui2/screens/ModMenu.java index 370555e..5c7fc6c 100644 --- a/src/main/java/org/saturnclient/ui2/screens/ModMenu.java +++ b/src/main/java/org/saturnclient/ui2/screens/ModMenu.java @@ -5,6 +5,8 @@ import org.saturnclient.modules.Module; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.config.Property; import org.saturnclient.saturnclient.config.ThemeManager; +import org.saturnclient.saturnclient.menus.CloaksMenu; +import org.saturnclient.saturnclient.menus.SaturnConfigEditor; import org.saturnclient.ui.Textures; import org.saturnclient.ui2.SaturnScreen; import org.saturnclient.ui2.components.SaturnModule; @@ -43,19 +45,19 @@ public class ModMenu extends SaturnScreen { draw(scroll.dimensions(scrollWidth, 350).center(width, height)); draw(new Sidebar( + 0, new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> { - SaturnClient.LOGGER.info("TOP"); }, false), - new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> { - SaturnClient.LOGGER.info("MID_TOP"); + new Sidebar.SidebarComponent(Textures.SETTINGS, () -> { + SaturnClient.client.setScreen(new SaturnConfigEditor()); }, false), - new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> { - SaturnClient.LOGGER.info("BOTTOM"); - }, true), + new Sidebar.SidebarComponent(Textures.CLOAK, () -> { + SaturnClient.client.setScreen(new CloaksMenu()); + }, false), - new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> { - SaturnClient.LOGGER.info("MID-BOTTOM"); + new Sidebar.SidebarComponent(Textures.CLOSE, () -> { + this.close(); }, true) ).centerOffset(width, height, -(scrollWidth / 2 + 20), 0)); }