From 5637de6ac67586a704b2542d36edcb5efb48fd5f Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 15 Jul 2022 10:40:02 +0200 Subject: [PATCH] Some fixes for floating point formatting --- .../bclib/client/gui/modmenu/TestScreen.java | 11 ++++++++++- src/main/java/org/betterx/ui/vanilla/Slider.java | 14 +++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java b/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java index d4a9af9d..d3bceabd 100644 --- a/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java +++ b/src/main/java/org/betterx/bclib/client/gui/modmenu/TestScreen.java @@ -26,7 +26,7 @@ public class TestScreen extends Screen { VerticalStack rows = new VerticalStack<>(DynamicSize.fit(), DynamicSize.relative(1)); rows.addFiller(); - rows.add(new Range( + rows.add(new Range<>( DynamicSize.fill(), DynamicSize.fit(), Component.literal("Integer"), 10, 90, 20, @@ -35,6 +35,15 @@ public class TestScreen extends Screen { } )); rows.addSpacer(8); + rows.add(new Range<>( + DynamicSize.fill(), DynamicSize.fit(), + Component.literal("Float"), + 10f, 90f, 20f, + (slider, value) -> { + System.out.println(value); + } + )); + rows.addSpacer(16); rows.add(new Button( DynamicSize.fit(), DynamicSize.fit(), Component.literal("test"), diff --git a/src/main/java/org/betterx/ui/vanilla/Slider.java b/src/main/java/org/betterx/ui/vanilla/Slider.java index 94537dd9..70e1466d 100644 --- a/src/main/java/org/betterx/ui/vanilla/Slider.java +++ b/src/main/java/org/betterx/ui/vanilla/Slider.java @@ -52,7 +52,7 @@ public class Slider extends AbstractSliderButton { this.minValue = minValue; this.maxValue = maxValue; this.onChange = onChange; - + this.updateMessage(); } @@ -81,6 +81,18 @@ public class Slider extends AbstractSliderButton { } protected String valueToString(N value) { + if (minValue instanceof Float || minValue instanceof Double) { + double v = value.doubleValue(); + double m = maxValue.doubleValue(); + if (m > 1000) + return "" + (int) v; + if (m > 100) + return String.format("%.1f", v); + if (m > 10) + return String.format("%.2f", v); + + return String.format("%.4f", v); + } return "" + value; }