aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/gui
diff options
context:
space:
mode:
authorAbdiel Kavash <19243993+AbdielKavash@users.noreply.github.com>2024-03-12 19:00:02 -0600
committerGitHub <noreply@github.com>2024-03-13 02:00:02 +0100
commit26c8407b9d22dbe4e3b98b4e08acfcdbfdd89f45 (patch)
treeed601445c225fc184a76cf7a0fa8b6d80113c2e0 /src/main/java/gregtech/common/gui
parent056eb3667f76e260d99b9ad72ea83253be162543 (diff)
downloadGT5-Unofficial-26c8407b9d22dbe4e3b98b4e08acfcdbfdd89f45.tar.gz
GT5-Unofficial-26c8407b9d22dbe4e3b98b4e08acfcdbfdd89f45.tar.bz2
GT5-Unofficial-26c8407b9d22dbe4e3b98b4e08acfcdbfdd89f45.zip
Numeric widget and localized number formatting. (#2532)
* Cover widgets * Volumetric flask * Misc textfields * Update GT_MetaTileEntity_MultiBlockBase.java * Update GT_MetaTileEntity_MultiBlockBase.java * Fixes decimal digits --------- Co-authored-by: Martin Robertz <dream-master@gmx.net>
Diffstat (limited to 'src/main/java/gregtech/common/gui')
-rw-r--r--src/main/java/gregtech/common/gui/MachineGUIProvider.java16
-rw-r--r--src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_NumericWidget.java60
-rw-r--r--src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java24
3 files changed, 96 insertions, 4 deletions
diff --git a/src/main/java/gregtech/common/gui/MachineGUIProvider.java b/src/main/java/gregtech/common/gui/MachineGUIProvider.java
index 91d14c209a..3cc889f000 100644
--- a/src/main/java/gregtech/common/gui/MachineGUIProvider.java
+++ b/src/main/java/gregtech/common/gui/MachineGUIProvider.java
@@ -13,6 +13,7 @@ import javax.annotation.Nonnull;
import net.minecraft.util.StatCollector;
import com.gtnewhorizons.modularui.api.ModularUITextures;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
import com.gtnewhorizons.modularui.api.drawable.ItemDrawable;
import com.gtnewhorizons.modularui.api.drawable.UITexture;
@@ -59,6 +60,8 @@ public class MachineGUIProvider<T extends GUIHost & ProcessingLogicHost<? extend
@Nonnull
protected static final Pos2d RECIPE_LOCKING_BUTTON_DEFAULT_POS = new Pos2d(0, 0);
+ protected static final NumberFormatMUI numberFormat = new NumberFormatMUI();
+
public MachineGUIProvider(@Nonnull T host) {
super(host);
}
@@ -252,10 +255,19 @@ public class MachineGUIProvider<T extends GUIHost & ProcessingLogicHost<? extend
@Nonnull UIBuildContext uiBuildContext) {
PowerLogic power = host.getPowerLogic();
tab.addChild(
- TextWidget.dynamicString(() -> power.getStoredEnergy() + "/" + power.getCapacity() + " EU")
+ new TextWidget()
+ .setStringSupplier(
+ () -> numberFormat.format(power.getStoredEnergy()) + "/"
+ + numberFormat.format(power.getCapacity())
+ + " EU")
.setPos(10, 30))
.addChild(
- TextWidget.dynamicString(() -> power.getVoltage() + " EU/t" + "(" + power.getMaxAmperage() + " A)")
+ new TextWidget()
+ .setStringSupplier(
+ () -> numberFormat.format(power.getVoltage()) + " EU/t"
+ + "("
+ + numberFormat.format(power.getMaxAmperage())
+ + " A)")
.setPos(10, 60));
}
diff --git a/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_NumericWidget.java b/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_NumericWidget.java
new file mode 100644
index 0000000000..f641ed090b
--- /dev/null
+++ b/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_NumericWidget.java
@@ -0,0 +1,60 @@
+package gregtech.common.gui.modularui.widget;
+
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+import com.gtnewhorizons.modularui.api.math.Alignment;
+import com.gtnewhorizons.modularui.api.math.Color;
+import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget;
+
+import gregtech.api.gui.modularui.GT_UITextures;
+import gregtech.api.gui.modularui.IDataFollowerWidget;
+import gregtech.api.util.ISerializableObject;
+
+public class CoverDataFollower_NumericWidget<T extends ISerializableObject> extends NumericWidget
+ implements IDataFollowerWidget<T, Double> {
+
+ private Function<T, Double> dataToStateGetter;
+
+ public CoverDataFollower_NumericWidget() {
+ super();
+ setGetter(() -> 0); // fake getter; used only for init
+ setSynced(false, false);
+ setTextColor(Color.WHITE.dark(1));
+ setTextAlignment(Alignment.CenterLeft);
+ setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD.withOffset(-1, -1, 2, 2));
+ }
+
+ @Override
+ public void onPostInit() {
+ // Widget#onPostInit is called earlier than IDataFollowerWidget#onPostInit,
+ // so we make sure cursor is set after text is set
+ super.onPostInit();
+
+ // On first call #handler does not contain text.
+ // On second call, it contains correct text to update #lastText,
+ // but #shouldGetFocus call is skipped by Cursor#updateFocused,
+ // so we need to manually call this.
+ if (focusOnGuiOpen) {
+ shouldGetFocus();
+ }
+ }
+
+ @Override
+ public CoverDataFollower_NumericWidget<T> setDataToStateGetter(Function<T, Double> dataToStateGetter) {
+ this.dataToStateGetter = dataToStateGetter;
+ return this;
+ }
+
+ @Override
+ public CoverDataFollower_NumericWidget<T> setStateSetter(Consumer<Double> setter) {
+ super.setSetter(setter::accept);
+ return this;
+ }
+
+ @Override
+ public void updateState(T data) {
+ setValue(dataToStateGetter.apply(data));
+ }
+
+}
diff --git a/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java b/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java
index df2dfa48f7..1907aaf22f 100644
--- a/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java
+++ b/src/main/java/gregtech/common/gui/modularui/widget/CoverDataFollower_TextFieldWidget.java
@@ -5,9 +5,9 @@ import java.util.function.Function;
import net.minecraft.client.gui.GuiScreen;
+import com.gtnewhorizon.gtnhlib.util.parsing.MathExpressionParser;
import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.math.Color;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
import gregtech.api.gui.modularui.GT_UITextures;
@@ -60,6 +60,10 @@ public class CoverDataFollower_TextFieldWidget<T extends ISerializableObject> ex
setText(dataToStateGetter.apply(data));
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollNumbers(int baseStep, int ctrlStep, int shiftStep) {
setOnScrollNumbers((val, direction) -> {
int step = (GuiScreen.isShiftKeyDown() ? shiftStep : GuiScreen.isCtrlKeyDown() ? ctrlStep : baseStep)
@@ -74,13 +78,21 @@ public class CoverDataFollower_TextFieldWidget<T extends ISerializableObject> ex
return this;
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollNumbers() {
return setOnScrollNumbers(1, 50, 1000);
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollText(int baseStep, int ctrlStep, int shiftStep) {
setOnScroll((text, direction) -> {
- int val = (int) MathExpression.parseMathExpression(text, -1);
+ int val = (int) MathExpressionParser.parse(text);
int step = (GuiScreen.isShiftKeyDown() ? shiftStep : GuiScreen.isCtrlKeyDown() ? ctrlStep : baseStep)
* direction;
try {
@@ -94,10 +106,18 @@ public class CoverDataFollower_TextFieldWidget<T extends ISerializableObject> ex
return this;
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollText() {
return setOnScrollText(1, 5, 50);
}
+ /**
+ * @deprecated Use {@link CoverDataFollower_NumericWidget}
+ */
+ @Deprecated
public CoverDataFollower_TextFieldWidget<T> setOnScrollNumbersLong(long baseStep, long ctrlStep, long shiftStep) {
setOnScrollNumbersLong((val, direction) -> {
long step = (GuiScreen.isShiftKeyDown() ? shiftStep : GuiScreen.isCtrlKeyDown() ? ctrlStep : baseStep)