From 7e04120fa207a2012b261d9caaacd685fe933941 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Thu, 3 Apr 2025 23:30:32 +0200 Subject: [PATCH] reset button --- .../saturnclient/config/Property.java | 9 ++++ .../saturnclient/menus/ConfigEditor.java | 24 +++++++++ .../saturnclient/menus/HudEditor.java | 2 +- .../saturnmods/mods/Coordinates.java | 46 +++++++++--------- .../java/org/saturnclient/ui/Textures.java | 1 + .../ui/components/SaturnFloat.java | 5 ++ .../saturnclient/ui/components/SaturnHex.java | 7 ++- .../ui/components/SaturnInteger.java | 5 ++ .../textures/gui/components/reset.png | Bin 0 -> 771 bytes 9 files changed, 74 insertions(+), 25 deletions(-) create mode 100644 src/main/resources/assets/saturnclient/textures/gui/components/reset.png diff --git a/src/main/java/org/saturnclient/saturnclient/config/Property.java b/src/main/java/org/saturnclient/saturnclient/config/Property.java index bf123b5..e4a82fe 100644 --- a/src/main/java/org/saturnclient/saturnclient/config/Property.java +++ b/src/main/java/org/saturnclient/saturnclient/config/Property.java @@ -17,10 +17,13 @@ public class Property { } public T value; + public boolean isReset = false; + private T defaultValue; private PropertyType type; public Property(T value) { this.value = value; + this.defaultValue = value; if (value instanceof Boolean) { type = PropertyType.BOOLEAN; } else if (value instanceof Integer) { @@ -36,6 +39,7 @@ public class Property { public Property(T value, PropertyType type) { this.value = value; + this.defaultValue = value; this.type = type; } @@ -67,6 +71,11 @@ public class Property { throw new IllegalStateException("Property does not contain a string"); } + public void reset() { + value = defaultValue; + isReset = true; + } + public int getHexString() { if (value instanceof String) { String str = (String) value; diff --git a/src/main/java/org/saturnclient/saturnclient/menus/ConfigEditor.java b/src/main/java/org/saturnclient/saturnclient/menus/ConfigEditor.java index fe32ffd..91781f5 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/ConfigEditor.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/ConfigEditor.java @@ -6,6 +6,7 @@ import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnclient.config.ConfigManager; import org.saturnclient.saturnclient.config.Property; import org.saturnclient.ui.SaturnUi; +import org.saturnclient.ui.SaturnWidget; import org.saturnclient.ui.Textures; import org.saturnclient.ui.components.SaturnFloat; import org.saturnclient.ui.components.SaturnHex; @@ -116,6 +117,8 @@ public class ConfigEditor extends SaturnUi { (rectWidth / 2) - 17, modY, 70)); + + configScroll.draw(resetButton(prop, modX, modY)); break; case FLOAT: configScroll.draw( @@ -132,6 +135,8 @@ public class ConfigEditor extends SaturnUi { (rectWidth / 2) - 17, modY, 70)); + + configScroll.draw(resetButton(prop, modX, modY)); break; case STRING: configScroll.draw( @@ -148,6 +153,8 @@ public class ConfigEditor extends SaturnUi { (rectWidth / 2) - 17, modY, 70)); + + configScroll.draw(resetButton(prop, modX, modY)); break; case HEX: configScroll.draw( @@ -164,6 +171,8 @@ public class ConfigEditor extends SaturnUi { (rectWidth / 2) - 17, modY, 70)); + + configScroll.draw(resetButton(prop, modX, modY)); break; case NAMESPACE: configScroll.draw( @@ -207,4 +216,19 @@ public class ConfigEditor extends SaturnUi { ConfigManager.save(); super.close(); } + + public SaturnWidget resetButton(Property prop, int modX, int modY) { + int size = textRenderer.fontHeight - 1; + return new SaturnImageButton( + Textures.RESET, + size, + size, + () -> { + prop.reset(); + }) + .setX(modX + 209) + .setY(modY) + .setWidth(size + 3) + .setHeight(size + 3); + } } diff --git a/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java b/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java index 9c29b2b..fdda233 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java @@ -18,7 +18,7 @@ public class HudEditor extends Screen { private HudMod draggingMod = null; private boolean resizing = false; private int offsetX, offsetY; - private static final int RESIZE_MARGIN = 6; + private static final int RESIZE_MARGIN = 3; public HudEditor() { super(Text.literal("HUD Editor")); diff --git a/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java b/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java index 8cc3bad..768c626 100644 --- a/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java +++ b/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java @@ -16,17 +16,20 @@ public class Coordinates implements SaturnMod, HudMod { private static ConfigManager config = new ConfigManager("coords"); public static Property enabled = config.property( - "Enabled", - new Property<>(false) - ); + "Enabled", + new Property<>(false)); private static ModDimensions dimensions = new ModDimensions(config); public static Property fgColor = config.property( - "Foreground color", - new Property<>(SaturnClient.WHITE, Property.PropertyType.HEX) - ); + "Foreground color", + new Property<>(SaturnClient.WHITE, Property.PropertyType.HEX)); - public Coordinates() {} + public Coordinates() { + // Ensure fgColor has a value + if (fgColor.value == null) { + fgColor.value = SaturnClient.WHITE; + } + } public void renderDummy(DrawContext context) { int playerX = 124; @@ -34,17 +37,15 @@ public class Coordinates implements SaturnMod, HudMod { int playerZ = 83; context.drawText( - SaturnClient.textRenderer, - playerX + " " + playerY + " " + playerZ, - 0, - 0, - fgColor.value, - false - ); + SaturnClient.textRenderer, + playerX + " " + playerY + " " + playerZ, + 0, + 0, + fgColor.value, + false); dimensions.width = SaturnClient.textRenderer.getWidth( - playerX + " " + playerY + " " + playerZ - ); + playerX + " " + playerY + " " + playerZ); dimensions.height = SaturnClient.textRenderer.fontHeight; } @@ -55,13 +56,12 @@ public class Coordinates implements SaturnMod, HudMod { int playerZ = (int) player.getZ(); context.drawText( - SaturnClient.textRenderer, - playerX + " " + playerY + " " + playerZ, - 0, - 0, - fgColor.value, - false - ); + SaturnClient.textRenderer, + playerX + " " + playerY + " " + playerZ, + 0, + 0, + fgColor.value, + false); } public String getName() { diff --git a/src/main/java/org/saturnclient/ui/Textures.java b/src/main/java/org/saturnclient/ui/Textures.java index 1b39151..e9c945c 100644 --- a/src/main/java/org/saturnclient/ui/Textures.java +++ b/src/main/java/org/saturnclient/ui/Textures.java @@ -11,6 +11,7 @@ public class Textures { public static final Identifier SETTINGS = Identifier.of("saturnclient", "textures/gui/components/settings.png"); public static final Identifier CLOAK = Identifier.of("saturnclient", "textures/gui/components/cloak.png"); public static final Identifier HAT = Identifier.of("saturnclient", "textures/gui/components/hat.png"); + public static final Identifier RESET = Identifier.of("saturnclient", "textures/gui/components/reset.png"); public static final Identifier TOGGLE_INDICATOR = Identifier.of("saturnclient", "textures/gui/components/toggle_indicator.png"); public static final Identifier TOGGLE_BG = Identifier.of("saturnclient", "textures/gui/components/toggle_bg.png"); diff --git a/src/main/java/org/saturnclient/ui/components/SaturnFloat.java b/src/main/java/org/saturnclient/ui/components/SaturnFloat.java index 9dd1b79..d917812 100644 --- a/src/main/java/org/saturnclient/ui/components/SaturnFloat.java +++ b/src/main/java/org/saturnclient/ui/components/SaturnFloat.java @@ -97,6 +97,11 @@ public class SaturnFloat extends SaturnWidget { boolean hovering, int mouseX, int mouseY) { + if (prop.isReset) { + this.text = String.valueOf(prop.value); + this.cursorPosition = 0; + prop.isReset = false; + } SaturnUi.drawHighResGuiTexture( context, Textures.BUTTON_BORDER, diff --git a/src/main/java/org/saturnclient/ui/components/SaturnHex.java b/src/main/java/org/saturnclient/ui/components/SaturnHex.java index a7dc526..97fd263 100644 --- a/src/main/java/org/saturnclient/ui/components/SaturnHex.java +++ b/src/main/java/org/saturnclient/ui/components/SaturnHex.java @@ -22,7 +22,7 @@ public class SaturnHex extends SaturnWidget { this.y = y; this.width = width; this.prop = prop; - this.text = intToHex(prop.value); // Convert stored int to hex + this.text = intToHex(prop.value); this.height = textRenderer.fontHeight + 4; this.scale = 0.8f; } @@ -76,6 +76,11 @@ public class SaturnHex extends SaturnWidget { boolean hovering, int mouseX, int mouseY) { + if (prop.isReset) { + this.text = intToHex(prop.value); + this.cursorPosition = 0; + prop.isReset = false; + } SaturnUi.drawHighResGuiTexture( context, Textures.BUTTON_BORDER, diff --git a/src/main/java/org/saturnclient/ui/components/SaturnInteger.java b/src/main/java/org/saturnclient/ui/components/SaturnInteger.java index f18b44b..c9a2102 100644 --- a/src/main/java/org/saturnclient/ui/components/SaturnInteger.java +++ b/src/main/java/org/saturnclient/ui/components/SaturnInteger.java @@ -97,6 +97,11 @@ public class SaturnInteger extends SaturnWidget { boolean hovering, int mouseX, int mouseY) { + if (prop.isReset) { + this.text = String.valueOf(prop.value); + this.cursorPosition = 0; + prop.isReset = false; + } SaturnUi.drawHighResGuiTexture( context, Textures.BUTTON_BORDER, diff --git a/src/main/resources/assets/saturnclient/textures/gui/components/reset.png b/src/main/resources/assets/saturnclient/textures/gui/components/reset.png new file mode 100644 index 0000000000000000000000000000000000000000..fa62098f1b0c3c8ff022aae1290320751dcad66f GIT binary patch literal 771 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEjKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(M@AAusjfMPXED3en zvHH%t2ku;JS-0;z66EYt$nI3y@H&$@rorceOU~K{Ge0QI_xPgX!|W_>#p$(iZG-)> zgO4qL2)(%eZ{i6R$xoBwj69nzaBkbOuR*8Pj79YM?zDm__9wG1h?p?`70>%s?pT(@ zlk}VCRa1@5UyjFR&v*sCFHil;C`F=D%(B zhrZ80y^5QS96+iLv z#gbWltGj*(YTVp^#A5ni^~5~e#{1O=?{9chU%H5C)0;%!?5YQoJ%xTPGGm;vn}KJo zRIOs)=33X<4SyF$J#w6MT6oQAKaJ!s{0)E3Z$4GmWV86#^hNKF7_6M6I!*kf+yvXD zp1XE(*EO~;kmh0j{bcz~G3^(NmF+h0$~0{FVzg_O%*2&>+m3Ku|5*KsLvU}`kxRan wX>S=mZ?SU!$MwYFt82XL9L0ABY+oFx|73QeHKzSVJSYKry85}Sb4q9e0CL?$4gdfE literal 0 HcmV?d00001