aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
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/covers/GT_Cover_ItemMeter.java
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/covers/GT_Cover_ItemMeter.java')
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java90
1 files changed, 43 insertions, 47 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
index 2339bd2243..bb2364cf0e 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java
@@ -1,5 +1,7 @@
package gregtech.common.covers;
+import java.text.FieldPosition;
+
import javax.annotation.Nonnull;
import net.minecraft.entity.player.EntityPlayer;
@@ -12,10 +14,9 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import com.google.common.io.ByteArrayDataInput;
-import com.gtnewhorizons.modularui.api.math.MathExpression;
+import com.gtnewhorizons.modularui.api.NumberFormatMUI;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.common.widget.TextWidget;
-import com.gtnewhorizons.modularui.common.widget.textfield.BaseTextFieldWidget;
import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.interfaces.ITexture;
@@ -26,7 +27,7 @@ import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
-import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_NumericWidget;
import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
import gregtech.common.gui.modularui.widget.ItemWatcherSlotWidget;
import gregtech.common.tileentities.machines.GT_MetaTileEntity_Hatch_OutputBus_ME;
@@ -204,7 +205,21 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter.
private static final int startY = 25;
private static final int spaceX = 18;
private static final int spaceY = 18;
- private static final String ALL_TEXT = "All";
+
+ /**
+ * Display the text "All" instead of a number when the slot is set to -1.
+ */
+ protected static final NumberFormatMUI numberFormatAll = new NumberFormatMUI() {
+
+ @Override
+ public StringBuffer format(double number, StringBuffer toAppendTo, FieldPosition pos) {
+ if (number < 0) {
+ return toAppendTo.append(GT_Utility.trans("ALL", "All"));
+ } else {
+ return super.format(number, toAppendTo, pos);
+ }
+ }
+ };
private int maxSlot;
private int maxThreshold;
@@ -234,53 +249,46 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter.
.addTooltip(1, INVERTED)
.setPos(0, 0))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> getSlotTextFieldContent(coverData.slot),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.threshold,
(coverData, state) -> {
- coverData.slot = getIntFromText(state);
+ coverData.threshold = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollText()
- .setValidator(val -> {
- final int valSlot = getIntFromText(val);
- if (valSlot > -1) {
- return widget.getDecimalFormatter()
- .format(Math.min(valSlot, maxSlot));
- } else {
- return ALL_TEXT;
- }
- })
- .setPattern(BaseTextFieldWidget.NATURAL_NUMS)
+ widget -> widget.setBounds(0, maxThreshold)
+ .setScrollValues(1, 64, 1000)
.setFocusOnGuiOpen(true)
- .setPos(0, spaceY + 2)
- .setSize(spaceX * 2 + 5, 12))
+ .setPos(0, 2 + spaceY)
+ .setSize(spaceX * 4 + 5, 12))
.addFollower(
- new CoverDataFollower_TextFieldWidget<>(),
- coverData -> String.valueOf(coverData.threshold),
+ new CoverDataFollower_NumericWidget<>(),
+ coverData -> (double) coverData.slot,
(coverData, state) -> {
- coverData.threshold = (int) MathExpression.parseMathExpression(state);
+ coverData.slot = state.intValue();
return coverData;
},
- widget -> widget.setOnScrollNumbers(1, 10, 64)
- .setNumbers(0, maxThreshold)
- .setPos(0, spaceY * 2 + 2)
- .setSize(spaceX * 4 + 5, 12))
+ widget -> widget.setBounds(-1, maxSlot)
+ .setDefaultValue(-1)
+ .setScrollValues(1, 100, 10)
+ .setNumberFormat(numberFormatAll)
+ .setPos(0, 2 + spaceY * 2)
+ .setSize(spaceX * 3 + 1, 12))
.setPos(startX, startY))
.widget(
new ItemWatcherSlotWidget().setGetter(this::getTargetItem)
- .setPos(startX + spaceX * 8 - 4, startY + spaceY))
+ .setPos(startX + spaceX * 3 + 8, startY + spaceY * 2))
.widget(
- TextWidget
- .dynamicString(() -> getCoverData() != null ? getCoverData().inverted ? INVERTED : NORMAL : "")
- .setSynced(false)
+ new TextWidget()
+ .setStringSupplier(
+ () -> getCoverData() != null ? getCoverData().inverted ? INVERTED : NORMAL : "")
.setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX + spaceX * 3, 4 + startY))
+ .setPos(startX + spaceX, 4 + startY))
.widget(
- new TextWidget(GT_Utility.trans("254", "Detect slot#")).setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX + spaceX * 3, 4 + startY + spaceY))
+ new TextWidget(GT_Utility.trans("254", "Detect slot #")).setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * 4 + 9, 4 + startY + spaceY * 2))
.widget(
new TextWidget(GT_Utility.trans("221", "Item threshold")).setDefaultColor(COLOR_TEXT_GRAY.get())
- .setPos(startX + spaceX * 5 - 10, startY + spaceY * 2 + 4));
+ .setPos(startX + spaceX * 4 + 9, 4 + startY + spaceY));
}
private void setMaxSlot() {
@@ -303,18 +311,6 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter.
}
}
- private int getIntFromText(String text) {
- try {
- return (int) MathExpression.parseMathExpression(text, -1);
- } catch (Exception e) {
- return -1;
- }
- }
-
- private String getSlotTextFieldContent(int val) {
- return val < 0 ? ALL_TEXT : String.valueOf(val);
- }
-
private ItemStack getTargetItem() {
ItemMeterData coverVariable = getCoverData();
if (coverVariable == null || coverVariable.slot < 0) {