From e7ca5c02974086809e0ab9c25aa517fb3cc0a893 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Wed, 7 May 2025 11:32:16 -0500 Subject: [PATCH] slighly better font --- .../org/saturnclient/modules/ModManager.java | 1 + .../ui2/components/SaturnModule.java | 88 ++++++------------- .../org/saturnclient/ui2/elements/Scroll.java | 17 ++-- .../org/saturnclient/ui2/screens/ModMenu.java | 35 +++++++- 4 files changed, 68 insertions(+), 73 deletions(-) diff --git a/src/main/java/org/saturnclient/modules/ModManager.java b/src/main/java/org/saturnclient/modules/ModManager.java index 2eba97f..816b5e9 100644 --- a/src/main/java/org/saturnclient/modules/ModManager.java +++ b/src/main/java/org/saturnclient/modules/ModManager.java @@ -15,6 +15,7 @@ public class ModManager { public static Module[] MODS = { new Crosshair(), new AutoSprint(), + new AutoSprint(), }; public static void init() { diff --git a/src/main/java/org/saturnclient/ui2/components/SaturnModule.java b/src/main/java/org/saturnclient/ui2/components/SaturnModule.java index b4f1079..189be1d 100644 --- a/src/main/java/org/saturnclient/ui2/components/SaturnModule.java +++ b/src/main/java/org/saturnclient/ui2/components/SaturnModule.java @@ -5,7 +5,6 @@ import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.config.Property; import org.saturnclient.saturnclient.config.ThemeManager; import org.saturnclient.saturnclient.menus.ConfigEditor; -import org.saturnclient.ui.Textures; import org.saturnclient.ui2.Element; import org.saturnclient.ui2.RenderContext; import org.saturnclient.ui2.RenderScope; @@ -15,34 +14,29 @@ import org.saturnclient.ui2.resources.Fonts; import net.minecraft.client.render.RenderLayer; public class SaturnModule extends Element { - private static ThemeManager theme = new ThemeManager("SaturnModule", "hovering", "enabled", "settings-hovering"); + 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 nameColor = theme.property("name-color", new Property(-1)); - private static Property descriptionColor = theme.property("description-color", new Property(-5592406)); - private static Property barColor = theme.property("bar-color", new Property(-1)); - private static Property settingsFg = theme.property("settings-fg", new Property(-1)); - private static Property settingsBg = theme.property("settings-bg", new Property(-16777216)); - private static Property iconFg = theme.property("icon-fg", new Property(-1)); + 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 toggleFg = theme.property("toggle-fg", new Property(-1)); + private static Property toggleBg = theme.property("toggle-bg", new Property(-16777216)); - private static Property cornerRadius = theme.property("corner-radius", new Property(10)); - private static Property barWidth = theme.property("bar-width", new Property(7)); - private static Property padding = theme.property("padding", new Property(10)); - - int settingsHeight = 26; + private static Property cornerRadius = theme.property("corner-radius", new Property(25)); + private static Property toggleBold = theme.property("toggle-bold", new Property(false)); + private static Property nameBold = theme.property("name-bold", new Property(false)); static { - theme.propertyStateDefault("enabled", "bar-color", -7643914); - theme.propertyStateDefault("hovering", "name-color", -7643914); - theme.propertyStateDefault("settings-hovering", "name-color", -7643914); - theme.propertyStateDefault("settings-hovering", "settings-bg", -7643914); + theme.propertyStateDefault("enabled", "toggle-bg", -7643914); + theme.propertyStateDefault("hovering", "fg-color", -7643914); + theme.propertyStateDefault("hovering", "icon-color", -7643914); } private Module mod; public SaturnModule(Module mod) { this.mod = mod; - this.width = 270; - this.height = 120; + this.width = 140; + this.height = 140; } @Override @@ -55,65 +49,35 @@ public class SaturnModule extends Element { theme.setState(null); } - if (ctx.isHovering(barWidth.value + padding.value, height - padding.value - settingsHeight, width - barWidth.value - (padding.value * 2), settingsHeight)) { - theme.applyState("settings-hovering"); + if (ctx.isHovering(0, (height-30), width, 30)) { + theme.applyState("toggle-hovering"); } else if (ctx.isHovering()) { theme.applyState("hovering"); } + renderScope.enableScissor(0, 0, width + 10, height - 30); renderScope.drawRoundedRectangle(0, 0, width, height, cornerRadius.value, bgColor.value); - - renderScope.enableScissor(0, 0, barWidth.value, height); - renderScope.drawRoundedRectangle(0, 0, barWidth.value * 2, height, cornerRadius.value, barColor.value); renderScope.disableScissor(); - renderScope.drawTexture(mod.getIconTexture(), barWidth.value + padding.value, padding.value, 0, 0, 21, 21, iconFg.value); - renderScope.drawText(mod.getName(), (int) (padding.value * 1.5f) + 21 + barWidth.value, padding.value + ((23 - Fonts.getHeight()) / 2), true, nameColor.value); + renderScope.drawTexture(mod.getIconTexture(), (width - 20) / 2, (height - 65) / 2, 0, 0, 20, 20, iconColor.value); - renderScope.matrices.push(); - renderScope.matrices.translate(padding.value + barWidth.value, 42, 0); - renderScope.matrices.scale(0.7f, 0.7f, 1.0f); - renderScope.drawText(formatText(mod.getDescription(), width - barWidth.value - padding.value), 0, 0, false, descriptionColor.value); - renderScope.matrices.pop(); + renderScope.drawText(mod.getName(), Fonts.centerX(width, mod.getName(), focused), Fonts.centerY(height), nameBold.value, fgColor.value); - renderScope.drawRoundedRectangle(barWidth.value + padding.value, height - padding.value - settingsHeight, width - (padding.value * 2) - barWidth.value, settingsHeight, 10, settingsBg.value); + renderScope.enableScissor(0, height - 30, width + 10, height); + renderScope.drawRoundedRectangle(0, 0, width, height, cornerRadius.value, toggleBg.value); + renderScope.disableScissor(); - renderScope.drawTexture(Textures.SETTINGS, barWidth.value + (padding.value * 2), height - padding.value - settingsHeight + 5, 0, 0, 16, 16); + String t = mod.isEnabled() ? "Enabled" : "Disabled"; - renderScope.matrices.push(); - renderScope.matrices.translate(barWidth.value + (padding.value * 2) + 20, height - padding.value - (settingsHeight / 2), 0); - renderScope.matrices.scale(0.7f, 0.7f, 1); - renderScope.matrices.translate(0, -(Fonts.getHeight() / 2) + 2, 0); - renderScope.drawText("Settings", 0, 0, false, settingsFg.value); - renderScope.matrices.pop(); + renderScope.drawText(t, Fonts.centerX(width, t, toggleBold.value), height - 30 + Fonts.centerY(30), toggleBold.value, toggleFg.value); } @Override public void click(int mouseX, int mouseY) { - if (Utils.isHovering(mouseX - (barWidth.value + padding.value), mouseY - (height - padding.value - settingsHeight), width - barWidth.value - (padding.value * 2), settingsHeight, scale)) { - SaturnClient.client.setScreen(new ConfigEditor(mod.getConfig())); - } else { + if (Utils.isHovering(mouseX, mouseY - (height-30), width, 30, scale)) { mod.setEnabled(!mod.isEnabled()); + } else { + SaturnClient.client.setScreen(new ConfigEditor(mod.getConfig())); } } - - private static String formatText(String text, int width) { - width -= Fonts.getWidth("..", false); - - StringBuilder trimmedText = new StringBuilder(); - - for (int i = 0; i < text.length(); i++) { - String current = trimmedText.toString() + text.charAt(i); - double currentWidth = Fonts.getWidth(current, false) * 0.7; - - if (currentWidth > width) { - trimmedText.append(".."); - break; - } - - trimmedText.append(text.charAt(i)); - } - - return trimmedText.toString(); - } } diff --git a/src/main/java/org/saturnclient/ui2/elements/Scroll.java b/src/main/java/org/saturnclient/ui2/elements/Scroll.java index 2c32d29..40d9d93 100644 --- a/src/main/java/org/saturnclient/ui2/elements/Scroll.java +++ b/src/main/java/org/saturnclient/ui2/elements/Scroll.java @@ -19,22 +19,25 @@ public class Scroll extends Element { private static Property scrollBarWidth = theme.property("scrollbar-width", new Property(5)); private static Property scrollBarPadding = theme.property("scrollbar-padding", new Property(5)); private static Property cornerRadius = theme.property("corner-radius", new Property(10)); - private static Property padding = theme.property("padding", new Property(25)); - - public static Property gap = theme.property("gap", new Property(10)); + + int padding = 0; protected List children = new ArrayList<>(); int scroll = 0; int maxScroll = 0; + public Scroll(int padding) { + this.padding = padding; + } + @Override public void render(RenderScope renderScope, RenderContext ctx) { renderScope.drawRoundedRectangle(0, 0, width, height, cornerRadius.value, bgColor.value); - renderScope.enableScissor(padding.value, padding.value, width - padding.value, height - padding.value); + renderScope.enableScissor(padding, padding, width - padding, height - padding); renderScope.matrices.push(); - renderScope.matrices.translate(padding.value, (-scroll) + padding.value, 0); - ElementRenderer.render(children, renderScope, ctx.mouseX - padding.value, ctx.mouseY - padding.value + scroll); + renderScope.matrices.translate(padding, (-scroll) + padding, 0); + ElementRenderer.render(children, renderScope, ctx.mouseX - padding, ctx.mouseY - padding + scroll); renderScope.matrices.pop(); renderScope.disableScissor(); @@ -53,7 +56,7 @@ public class Scroll extends Element { @Override public void click(int mouseX, int mouseY) { - ElementRenderer.mouseClicked(children, mouseX - padding.value, mouseY - padding.value + scroll, 0); + ElementRenderer.mouseClicked(children, mouseX - padding, mouseY - padding + scroll, 0); } public void draw(Element element) { diff --git a/src/main/java/org/saturnclient/ui2/screens/ModMenu.java b/src/main/java/org/saturnclient/ui2/screens/ModMenu.java index b743ba5..f7f5bfc 100644 --- a/src/main/java/org/saturnclient/ui2/screens/ModMenu.java +++ b/src/main/java/org/saturnclient/ui2/screens/ModMenu.java @@ -2,33 +2,60 @@ package org.saturnclient.ui2.screens; import org.saturnclient.modules.ModManager; import org.saturnclient.modules.Module; +import org.saturnclient.saturnclient.config.Property; +import org.saturnclient.saturnclient.config.ThemeManager; +import org.saturnclient.ui.Textures; import org.saturnclient.ui2.SaturnScreen; import org.saturnclient.ui2.components.SaturnModule; +import org.saturnclient.ui2.components.Sidebar; import org.saturnclient.ui2.elements.Scroll; public class ModMenu extends SaturnScreen { + private static ThemeManager theme = new ThemeManager("ModMenu"); + private static Property padding = theme.property("padding", new Property(25)); + private static Property gap = theme.property("gap", new Property(10)); + public ModMenu() { super("Mod Menu"); } @Override public void ui() { - Scroll scroll = new Scroll(); + Scroll scroll = new Scroll(padding.value); int row = 0; int col = 0; for (Module mod : ModManager.MODS) { - scroll.draw(new SaturnModule(mod).position((270 + Scroll.gap.value) * col, (120 + Scroll.gap.value) * row)); + scroll.draw(new SaturnModule(mod).position((140 + gap.value) * col, (140 + gap.value) * row)); - if (col == 1) { + if (col == 2) { col = 0; row++; } else { col++; } } + + int scrollWidth = 420 + (gap.value * 2) + (padding.value * 2); - draw(scroll.dimensions(600, 350).center(width, height)); + draw(scroll.dimensions(scrollWidth, 350).center(width, height)); + + draw(new Sidebar( + new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> { + + }, false), + new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> { + + }, false), + + new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> { + + }, true), + + new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> { + + }, true) + ).centerOffset(width, height, -(scrollWidth / 2 + 20), 0)); } }