aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/covers/redstone
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/common/covers/redstone')
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java198
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java101
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java271
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java88
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java200
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java105
6 files changed, 393 insertions, 570 deletions
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java
index d3bf278a94..6b7c7f282e 100644
--- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java
+++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneReceiverBase.java
@@ -1,21 +1,22 @@
package gregtech.common.covers.redstone;
import com.google.common.io.ByteArrayDataInput;
-import gregtech.api.gui.widgets.GT_GuiIcon;
-import gregtech.api.gui.widgets.GT_GuiIconButton;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
+import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
+import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.ITexture;
-import gregtech.api.interfaces.tileentity.ICoverable;
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_ToggleButtonWidget;
import io.netty.buffer.ByteBuf;
+import java.util.Arrays;
import java.util.UUID;
import javax.annotation.Nonnull;
-import net.minecraft.client.gui.GuiButton;
-import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.world.World;
public abstract class GT_Cover_AdvancedRedstoneReceiverBase
extends GT_Cover_AdvancedWirelessRedstoneBase<GT_Cover_AdvancedRedstoneReceiverBase.ReceiverData> {
@@ -34,18 +35,101 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase
return createDataObject();
}
- /**
- * GUI Stuff
- */
+ // GUI stuff
+
@Override
- public Object getClientGUIImpl(
- byte aSide,
- int aCoverID,
- ReceiverData aCoverVariable,
- ICoverable aTileEntity,
- EntityPlayer aPlayer,
- World aWorld) {
- return new ReceiverGUI(aSide, aCoverID, aCoverVariable, aTileEntity);
+ public ModularWindow createWindow(GT_CoverUIBuildContext buildContext) {
+ return new AdvancedRedstoneReceiverBaseUIFactory(buildContext).createWindow();
+ }
+
+ private class AdvancedRedstoneReceiverBaseUIFactory extends AdvancedWirelessRedstoneBaseUIFactory {
+
+ public AdvancedRedstoneReceiverBaseUIFactory(GT_CoverUIBuildContext buildContext) {
+ super(buildContext);
+ }
+
+ @Override
+ protected int getFrequencyRow() {
+ return 0;
+ }
+
+ @Override
+ protected int getButtonRow() {
+ return 1;
+ }
+
+ @Override
+ protected boolean isShiftPrivateLeft() {
+ return false;
+ }
+
+ @Override
+ protected void addUIWidgets(ModularWindow.Builder builder) {
+ super.addUIWidgets(builder);
+ builder.widget(new TextWidget(GT_Utility.trans("335", "Gate Mode"))
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * 5, 4 + startY + spaceY * 2));
+ }
+
+ @SuppressWarnings("PointlessArithmeticExpression")
+ @Override
+ protected void addUIForDataController(CoverDataControllerWidget<ReceiverData> controller) {
+ super.addUIForDataController(controller);
+ controller
+ .addFollower(
+ CoverDataFollower_ToggleButtonWidget.ofDisableable(),
+ coverData -> coverData.mode == GateMode.AND,
+ (coverData, state) -> {
+ coverData.mode = GateMode.AND;
+ return coverData;
+ },
+ widget -> widget.setStaticTexture(GT_UITextures.OVERLAY_BUTTON_GATE_AND)
+ .addTooltip(GT_Utility.trans("331", "AND Gate"))
+ .setPos(spaceX * 0, spaceY * 2))
+ .addFollower(
+ CoverDataFollower_ToggleButtonWidget.ofDisableable(),
+ coverData -> coverData.mode == GateMode.NAND,
+ (coverData, state) -> {
+ coverData.mode = GateMode.NAND;
+ return coverData;
+ },
+ widget -> widget.setStaticTexture(GT_UITextures.OVERLAY_BUTTON_GATE_NAND)
+ .addTooltip(GT_Utility.trans("332", "NAND Gate"))
+ .setPos(spaceX * 1, spaceY * 2))
+ .addFollower(
+ CoverDataFollower_ToggleButtonWidget.ofDisableable(),
+ coverData -> coverData.mode == GateMode.OR,
+ (coverData, state) -> {
+ coverData.mode = GateMode.OR;
+ return coverData;
+ },
+ widget -> widget.setStaticTexture(GT_UITextures.OVERLAY_BUTTON_GATE_OR)
+ .addTooltip(GT_Utility.trans("333", "OR Gate"))
+ .setPos(spaceX * 2, spaceY * 2))
+ .addFollower(
+ CoverDataFollower_ToggleButtonWidget.ofDisableable(),
+ coverData -> coverData.mode == GateMode.NOR,
+ (coverData, state) -> {
+ coverData.mode = GateMode.NOR;
+ return coverData;
+ },
+ widget -> widget.setStaticTexture(GT_UITextures.OVERLAY_BUTTON_GATE_NOR)
+ .addTooltip(GT_Utility.trans("334", "NOR Gate"))
+ .setPos(spaceX * 3, spaceY * 2))
+ .addFollower(
+ CoverDataFollower_ToggleButtonWidget.ofDisableable(),
+ coverData -> coverData.mode == GateMode.SINGLE_SOURCE,
+ (coverData, state) -> {
+ coverData.mode = GateMode.SINGLE_SOURCE;
+ return coverData;
+ },
+ widget -> widget.setStaticTexture(GT_UITextures.OVERLAY_BUTTON_ANALOG)
+ .addTooltips(Arrays.asList(
+ "ANALOG Mode",
+ "Only use this mode with ONE transmitter in total,",
+ "no logic involved"))
+ .setPos(spaceX * 4, spaceY * 2));
+ }
}
public enum GateMode {
@@ -110,84 +194,4 @@ public abstract class GT_Cover_AdvancedRedstoneReceiverBase
return this;
}
}
-
- private static class ReceiverGUI extends WirelessGUI<ReceiverData> {
-
- private static final int gateModeButtonIdStart = 1;
-
- public ReceiverGUI(byte aSide, int aCoverID, ReceiverData aCoverVariable, ICoverable aTileEntity) {
- super(aSide, aCoverID, aCoverVariable, aTileEntity);
-
- new GT_GuiIconButton(
- this,
- gateModeButtonIdStart + 0,
- startX + spaceX * 0,
- startY + spaceY * 2,
- GT_GuiIcon.AND_GATE)
- .setTooltipText(GT_Utility.trans("331", "AND Gate"));
- new GT_GuiIconButton(
- this,
- gateModeButtonIdStart + 1,
- startX + spaceX * 1,
- startY + spaceY * 2,
- GT_GuiIcon.NAND_GATE)
- .setTooltipText(GT_Utility.trans("332", "NAND Gate"));
- new GT_GuiIconButton(
- this,
- gateModeButtonIdStart + 2,
- startX + spaceX * 2,
- startY + spaceY * 2,
- GT_GuiIcon.OR_GATE)
- .setTooltipText(GT_Utility.trans("333", "OR Gate"));
- new GT_GuiIconButton(
- this,
- gateModeButtonIdStart + 3,
- startX + spaceX * 3,
- startY + spaceY * 2,
- GT_GuiIcon.NOR_GATE)
- .setTooltipText(GT_Utility.trans("334", "NOR Gate"));
- new GT_GuiIconButton(
- this,
- gateModeButtonIdStart + 4,
- startX + spaceX * 4,
- startY + spaceY * 2,
- GT_GuiIcon.ANALOG_MODE)
- .setTooltipText(
- "ANALOG Mode", "Only use this mode with ONE transmitter in total,", "no logic involved");
- }
-
- @Override
- public void drawExtras(int mouseX, int mouseY, float parTicks) {
- super.drawExtras(mouseX, mouseY, parTicks);
- this.getFontRenderer()
- .drawString(
- GT_Utility.trans("335", "Gate Mode"),
- startX + spaceX * 5,
- 4 + startY + spaceY * 2,
- textColor);
- }
-
- @Override
- protected void update() {
- super.update();
- updateButtons();
- }
-
- private void updateButtons() {
- GuiButton button;
- for (int i = gateModeButtonIdStart; i < gateModeButtonIdStart + 5; ++i) {
- button = (GuiButton) this.buttonList.get(i);
- button.enabled = (button.id - gateModeButtonIdStart) != coverVariable.mode.ordinal();
- }
- }
-
- @Override
- public void buttonClicked(GuiButton btn) {
- if (btn.id >= gateModeButtonIdStart && btn.enabled) {
- coverVariable.mode = GateMode.values()[btn.id - gateModeButtonIdStart];
- }
-
- super.buttonClicked(btn);
- }
- }
}
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java
index 2af243861a..c065c085b2 100644
--- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java
+++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedRedstoneTransmitterBase.java
@@ -1,22 +1,23 @@
package gregtech.common.covers.redstone;
import com.google.common.io.ByteArrayDataInput;
-import gregtech.api.gui.widgets.GT_GuiIcon;
-import gregtech.api.gui.widgets.GT_GuiIconCheckButton;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
+import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.ICoverable;
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_ToggleButtonWidget;
import io.netty.buffer.ByteBuf;
import java.util.Objects;
import java.util.UUID;
import javax.annotation.Nonnull;
-import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.world.World;
public abstract class GT_Cover_AdvancedRedstoneTransmitterBase<
T extends GT_Cover_AdvancedRedstoneTransmitterBase.TransmitterData>
@@ -126,69 +127,65 @@ public abstract class GT_Cover_AdvancedRedstoneTransmitterBase<
}
}
- /**
- * GUI Stuff
- */
+ // GUI stuff
+
@Override
- public Object getClientGUIImpl(
- byte aSide,
- int aCoverID,
- TransmitterData aCoverVariable,
- ICoverable aTileEntity,
- EntityPlayer aPlayer,
- World aWorld) {
- return new TransmitterGUI<>(aSide, aCoverID, aCoverVariable, aTileEntity);
+ public ModularWindow createWindow(GT_CoverUIBuildContext buildContext) {
+ return new AdvancedRedstoneTransmitterBaseUIFactory(buildContext).createWindow();
}
- protected class TransmitterGUI<X extends TransmitterData> extends WirelessGUI<X> {
-
- private final GT_GuiIconCheckButton invertButton;
-
- private final String INVERTED = GT_Utility.trans("INVERTED", "Inverted");
- private final String NORMAL = GT_Utility.trans("NORMAL", "Normal");
-
- public TransmitterGUI(
- byte aSide, int aCoverID, X aCoverVariable, ICoverable aTileEntity, int frequencyRow, int buttonRow) {
- super(aSide, aCoverID, aCoverVariable, aTileEntity, frequencyRow, buttonRow, true);
- invertButton = new GT_GuiIconCheckButton(
- this,
- 1,
- startX + spaceX * 9,
- startY + spaceY * buttonRow,
- GT_GuiIcon.REDSTONE_ON,
- GT_GuiIcon.REDSTONE_OFF,
- INVERTED,
- NORMAL);
+ protected class AdvancedRedstoneTransmitterBaseUIFactory extends AdvancedWirelessRedstoneBaseUIFactory {
+
+ public AdvancedRedstoneTransmitterBaseUIFactory(GT_CoverUIBuildContext buildContext) {
+ super(buildContext);
}
- public TransmitterGUI(byte aSide, int aCoverID, X aCoverVariable, ICoverable aTileEntity) {
- this(aSide, aCoverID, aCoverVariable, aTileEntity, 0, 1);
+ @Override
+ protected int getFrequencyRow() {
+ return 0;
}
@Override
- public void drawExtras(int mouseX, int mouseY, float parTicks) {
- super.drawExtras(mouseX, mouseY, parTicks);
- this.getFontRenderer()
- .drawString(
- coverVariable.invert ? INVERTED : NORMAL,
- startX + spaceX * 10,
- 4 + startY + spaceY * buttonRow,
- textColor);
+ protected int getButtonRow() {
+ return 1;
}
@Override
- protected void update() {
- super.update();
- invertButton.setChecked(coverVariable.invert);
+ protected boolean isShiftPrivateLeft() {
+ return true;
}
@Override
- public void buttonClicked(GuiButton btn) {
- if (btn == invertButton) {
- coverVariable.invert = !coverVariable.invert;
- }
+ protected void addUIWidgets(ModularWindow.Builder builder) {
+ super.addUIWidgets(builder);
+ builder.widget(TextWidget.dynamicString(() -> {
+ T coverData = getCoverData();
+ if (coverData != null) {
+ return getCoverData().invert
+ ? GT_Utility.trans("INVERTED", "Inverted")
+ : GT_Utility.trans("NORMAL", "Normal");
+ } else {
+ return "";
+ }
+ })
+ .setSynced(false)
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * 10, 4 + startY + spaceY * getButtonRow()));
+ }
- super.buttonClicked(btn);
+ @Override
+ protected void addUIForDataController(CoverDataControllerWidget<T> controller) {
+ super.addUIForDataController(controller);
+ controller.addFollower(
+ CoverDataFollower_ToggleButtonWidget.ofRedstone(),
+ coverData -> coverData.invert,
+ (coverData, state) -> {
+ coverData.invert = state;
+ return coverData;
+ },
+ widget -> widget.addTooltip(0, GT_Utility.trans("NORMAL", "Normal"))
+ .addTooltip(1, GT_Utility.trans("INVERTED", "Inverted"))
+ .setPos(spaceX * 9, spaceY * getButtonRow()));
}
}
}
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java
index a57b99fd83..c63f2f37d9 100644
--- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java
+++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_AdvancedWirelessRedstoneBase.java
@@ -1,32 +1,27 @@
package gregtech.common.covers.redstone;
import com.google.common.io.ByteArrayDataInput;
+import com.gtnewhorizons.modularui.api.math.MathExpression;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
import gregtech.api.GregTech_API;
-import gregtech.api.enums.GT_Values;
-import gregtech.api.gui.GT_GUICover;
-import gregtech.api.gui.widgets.GT_GuiIcon;
-import gregtech.api.gui.widgets.GT_GuiIconCheckButton;
-import gregtech.api.gui.widgets.GT_GuiIntegerTextBox;
-import gregtech.api.interfaces.IGuiScreen;
+import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.ICoverable;
-import gregtech.api.net.GT_Packet_TileEntityCoverNew;
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_ToggleButtonWidget;
import io.netty.buffer.ByteBuf;
-import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
import javax.annotation.Nonnull;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.Fluid;
public abstract class GT_Cover_AdvancedWirelessRedstoneBase<
@@ -219,225 +214,85 @@ public abstract class GT_Cover_AdvancedWirelessRedstoneBase<
}
}
- /**
- * GUI Stuff
- */
+ // GUI stuff
+
@Override
public boolean hasCoverGUI() {
return true;
}
- protected abstract static class WirelessGUI<X extends WirelessData> extends GT_GUICover {
+ @Override
+ public boolean useModularUI() {
+ return true;
+ }
- protected final byte side;
- protected final int coverID;
- protected final GT_GuiIntegerTextBox frequencyBox;
- protected final GT_GuiIconCheckButton privateButton;
- protected final X coverVariable;
+ protected abstract class AdvancedWirelessRedstoneBaseUIFactory extends UIFactory {
protected static final int startX = 10;
protected static final int startY = 25;
protected static final int spaceX = 18;
protected static final int spaceY = 18;
- protected final int frequencyRow;
- protected final int buttonRow;
- private final int privateExtraColumn;
-
- protected final int textColor = this.getTextColorOrDefault("text", 0xFF555555);
-
- private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverLong.png";
-
- public WirelessGUI(
- byte aSide,
- int aCoverID,
- X aCoverVariable,
- ICoverable aTileEntity,
- int frequencyRow,
- int buttonRow,
- boolean shiftPrivateLeft) {
- super(aTileEntity, 250, 107, GT_Utility.intToStack(aCoverID));
- this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath);
- this.side = aSide;
- this.coverID = aCoverID;
- this.coverVariable = aCoverVariable;
- this.frequencyRow = frequencyRow;
- this.buttonRow = buttonRow;
- this.privateExtraColumn = shiftPrivateLeft ? 1 : 5;
-
- frequencyBox =
- new GT_GuiShortTextBox(this, 0, 1 + startX, 2 + startY + spaceY * frequencyRow, spaceX * 5 - 4, 12);
- privateButton =
- new GT_GuiIconCheckButton(this, 0, startX, startY + spaceY * buttonRow, GT_GuiIcon.CHECKMARK, null);
- }
-
- public WirelessGUI(byte aSide, int aCoverID, X aCoverVariable, ICoverable aTileEntity) {
- this(aSide, aCoverID, aCoverVariable, aTileEntity, 0, 1, false);
+ public AdvancedWirelessRedstoneBaseUIFactory(GT_CoverUIBuildContext buildContext) {
+ super(buildContext);
}
@Override
- public void drawExtras(int mouseX, int mouseY, float parTicks) {
- super.drawExtras(mouseX, mouseY, parTicks);
- this.getFontRenderer()
- .drawString(
- GT_Utility.trans("246", "Frequency"),
- startX + spaceX * 5,
- 4 + startY + spaceY * frequencyRow,
- textColor);
- this.getFontRenderer()
- .drawString(
- GT_Utility.trans("602", "Use Private Frequency"),
- startX + spaceX * privateExtraColumn,
- 4 + startY + spaceY * buttonRow,
- textColor);
+ protected int getGUIWidth() {
+ return 250;
}
@Override
- protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) {
- update();
- frequencyBox.setFocused(true);
+ protected void addUIWidgets(ModularWindow.Builder builder) {
+ final int privateExtraColumn = isShiftPrivateLeft() ? 1 : 5;
+
+ CoverDataControllerWidget<T> dataController = new CoverDataControllerWidget<>(
+ this::getCoverData, this::setCoverData, GT_Cover_AdvancedWirelessRedstoneBase.this);
+ dataController.setPos(startX, startY);
+ addUIForDataController(dataController);
+
+ builder.widget(dataController)
+ .widget(new TextWidget(GT_Utility.trans("246", "Frequency"))
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * 5, 4 + startY + spaceY * getFrequencyRow()))
+ .widget(new TextWidget(GT_Utility.trans("602", "Use Private Frequency"))
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * privateExtraColumn, 4 + startY + spaceY * getButtonRow()));
}
- protected void genericMouseWheel(
- GT_GuiIntegerTextBox box,
- int delta,
- int minValue,
- int maxValue,
- int baseStep,
- int ctrlStep,
- int shiftStep) {
- long step = Math.max(1, Math.abs(delta / 120));
- step = (isShiftKeyDown() ? shiftStep : isCtrlKeyDown() ? ctrlStep : baseStep) * (delta > 0 ? step : -step);
-
- long value = parseTextBox(box, minValue, maxValue) + step;
- if (value > maxValue) value = maxValue;
- else if (value < minValue) value = minValue;
-
- box.setText(Long.toString(value));
+ protected void addUIForDataController(CoverDataControllerWidget<T> controller) {
+ controller
+ .addFollower(
+ new CoverDataFollower_TextFieldWidget<>(),
+ coverData -> String.valueOf(coverData.frequency),
+ (coverData, state) -> {
+ coverData.frequency = (int) MathExpression.parseMathExpression(state);
+ return coverData;
+ },
+ widget -> widget.setOnScrollNumbers()
+ .setNumbers(0, Integer.MAX_VALUE)
+ .setFocusOnGuiOpen(true)
+ .setPos(1, 2 + spaceY * getFrequencyRow())
+ .setSize(spaceX * 5 - 4, 12))
+ .addFollower(
+ CoverDataFollower_ToggleButtonWidget.ofCheck(),
+ coverData -> coverData.uuid != null,
+ (coverData, state) -> {
+ if (state) {
+ coverData.uuid =
+ getUIBuildContext().getPlayer().getUniqueID();
+ } else {
+ coverData.uuid = null;
+ }
+ return coverData;
+ },
+ widget -> widget.setPos(0, spaceY * getButtonRow()));
}
- protected void genericMouseWheel(GT_GuiIntegerTextBox box, int delta, int minValue, int maxValue) {
- genericMouseWheel(box, delta, minValue, maxValue, 1, 50, 1000);
- }
+ protected abstract int getFrequencyRow();
- @Override
- public void onMouseWheel(int x, int y, int delta) {
- if (frequencyBox.isFocused()) {
- genericMouseWheel(frequencyBox, delta, 0, Integer.MAX_VALUE);
- }
- }
+ protected abstract int getButtonRow();
- @Override
- public void applyTextBox(GT_GuiIntegerTextBox box) {
- if (box == frequencyBox) {
- coverVariable.frequency = parseTextBox(frequencyBox);
- }
-
- GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile));
- update();
- }
-
- @Override
- public void resetTextBox(GT_GuiIntegerTextBox box) {
- if (box == frequencyBox) {
- frequencyBox.setText(Integer.toString(coverVariable.frequency));
- }
- }
-
- protected void update() {
- privateButton.setChecked(coverVariable.uuid != null);
- resetTextBox(frequencyBox);
- }
-
- @Override
- public void buttonClicked(GuiButton btn) {
- if (btn == privateButton) {
- coverVariable.uuid = coverVariable.uuid == null
- ? Minecraft.getMinecraft().thePlayer.getUniqueID()
- : null;
- }
-
- GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile));
- update();
- }
-
- protected int parseTextBox(GT_GuiIntegerTextBox box, int min, int max) {
- String text = box.getText();
- if (text == null) {
- return 0;
- }
-
- long value;
- try {
- value = Long.parseLong(text.trim());
- } catch (NumberFormatException e) {
- return 0;
- }
-
- if (value >= max) return max;
- else if (value < min) return min;
- return (int) value;
- }
-
- protected int parseTextBox(GT_GuiIntegerTextBox box) {
- return parseTextBox(box, 0, Integer.MAX_VALUE);
- }
-
- protected class GT_GuiShortTextBox extends GT_GuiIntegerTextBox {
-
- private final int min;
- private final int max;
- private final Map<String, String> translation;
- private final Map<String, String> inverseTranslation;
-
- public GT_GuiShortTextBox(
- IGuiScreen gui,
- int id,
- int x,
- int y,
- int width,
- int height,
- int min,
- int max,
- Map<String, String> translate) {
- super(gui, id, x, y, width, height);
- this.min = min;
- this.max = max;
- this.translation = translate;
- this.inverseTranslation =
- translate.entrySet().stream().collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));
- }
-
- public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height, int min, int max) {
- this(gui, id, x, y, width, height, min, max, new HashMap<>());
- }
-
- public GT_GuiShortTextBox(IGuiScreen gui, int id, int x, int y, int width, int height) {
- this(gui, id, x, y, width, height, 0, Integer.MAX_VALUE);
- }
-
- @Override
- public boolean textboxKeyTyped(char c, int key) {
- if (!super.textboxKeyTyped(c, key)) return false;
-
- String text = getText().trim();
- if (text.length() > 0) {
- setText(String.valueOf(parseTextBox(this, min, max)));
- }
-
- return true;
- }
-
- @Override
- public String getText() {
- String text = super.getText();
- return inverseTranslation.getOrDefault(text, text);
- }
-
- @Override
- public void setText(String text) {
- super.setText(translation.getOrDefault(text, text));
- }
- }
+ protected abstract boolean isShiftPrivateLeft();
}
}
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java
index 772332820b..67b931dd99 100644
--- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java
+++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessFluidDetector.java
@@ -1,20 +1,23 @@
package gregtech.common.covers.redstone;
import com.google.common.io.ByteArrayDataInput;
-import gregtech.api.gui.widgets.GT_GuiIntegerTextBox;
+import com.gtnewhorizons.modularui.api.math.MathExpression;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
+import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.covers.GT_Cover_LiquidMeter;
+import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
import io.netty.buffer.ByteBuf;
import java.util.UUID;
import javax.annotation.Nonnull;
-import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.world.World;
public class GT_Cover_WirelessFluidDetector
extends GT_Cover_AdvancedRedstoneTransmitterBase<GT_Cover_WirelessFluidDetector.FluidTransmitterData> {
@@ -114,72 +117,51 @@ public class GT_Cover_WirelessFluidDetector
}
}
- /**
- * GUI Stuff
- */
+ // GUI stuff
+
@Override
- public Object getClientGUIImpl(
- byte aSide,
- int aCoverID,
- FluidTransmitterData aCoverVariable,
- ICoverable aTileEntity,
- EntityPlayer aPlayer,
- World aWorld) {
- return new FluidTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity);
+ public ModularWindow createWindow(GT_CoverUIBuildContext buildContext) {
+ return new WirelessFluidDetectorUIFactory(buildContext).createWindow();
}
- private class FluidTransmitterGUI extends TransmitterGUI<FluidTransmitterData> {
- private final GT_GuiIntegerTextBox thresholdBox;
-
- public FluidTransmitterGUI(
- byte aSide, int aCoverID, FluidTransmitterData aCoverVariable, ICoverable aTileEntity) {
- super(aSide, aCoverID, aCoverVariable, aTileEntity, 1, 2);
+ private class WirelessFluidDetectorUIFactory extends AdvancedRedstoneTransmitterBaseUIFactory {
- thresholdBox = new GT_GuiShortTextBox(this, 1, 1 + startX, 2 + startY, spaceX * 5 - 4, 12);
+ public WirelessFluidDetectorUIFactory(GT_CoverUIBuildContext buildContext) {
+ super(buildContext);
}
@Override
- public void drawExtras(int mouseX, int mouseY, float parTicks) {
- super.drawExtras(mouseX, mouseY, parTicks);
- this.getFontRenderer()
- .drawString(GT_Utility.trans("222", "Fluid threshold"), startX + spaceX * 5, 4 + startY, textColor);
+ protected int getFrequencyRow() {
+ return 1;
}
@Override
- protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) {
- update();
- thresholdBox.setFocused(true);
- }
-
- @Override
- public void onMouseWheel(int x, int y, int delta) {
- super.onMouseWheel(x, y, delta);
- if (thresholdBox.isFocused()) {
- genericMouseWheel(thresholdBox, delta, 0, Integer.MAX_VALUE);
- }
- }
-
- @Override
- public void applyTextBox(GT_GuiIntegerTextBox box) {
- if (box == thresholdBox) {
- coverVariable.threshold = parseTextBox(thresholdBox);
- }
-
- super.applyTextBox(box);
+ protected int getButtonRow() {
+ return 2;
}
@Override
- public void resetTextBox(GT_GuiIntegerTextBox box) {
- super.resetTextBox(box);
- if (box == thresholdBox) {
- thresholdBox.setText(Integer.toString(coverVariable.threshold));
- }
+ protected void addUIWidgets(ModularWindow.Builder builder) {
+ super.addUIWidgets(builder);
+ builder.widget(new TextWidget(GT_Utility.trans("222", "Fluid threshold"))
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * 5, 4 + startY));
}
@Override
- protected void update() {
- super.update();
- resetTextBox(thresholdBox);
+ protected void addUIForDataController(CoverDataControllerWidget<FluidTransmitterData> controller) {
+ super.addUIForDataController(controller);
+ controller.addFollower(
+ new CoverDataFollower_TextFieldWidget<>(),
+ coverData -> String.valueOf(coverData.threshold),
+ (coverData, state) -> {
+ coverData.threshold = (int) MathExpression.parseMathExpression(state);
+ return coverData;
+ },
+ widget -> widget.setOnScrollNumbers()
+ .setNumbers(0, Integer.MAX_VALUE)
+ .setPos(1, 2)
+ .setSize(spaceX * 5 - 4, 12));
}
}
}
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java
index 46e428e1e9..620f0bc35e 100644
--- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java
+++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java
@@ -1,27 +1,31 @@
package gregtech.common.covers.redstone;
import com.google.common.io.ByteArrayDataInput;
-import gregtech.api.gui.widgets.GT_GuiFakeItemButton;
-import gregtech.api.gui.widgets.GT_GuiIcon;
-import gregtech.api.gui.widgets.GT_GuiIntegerTextBox;
+import com.gtnewhorizons.modularui.api.forge.ItemStackHandler;
+import com.gtnewhorizons.modularui.api.math.MathExpression;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
+import com.gtnewhorizons.modularui.common.widget.textfield.BaseTextFieldWidget;
+import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
+import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.ISerializableObject;
import gregtech.common.covers.GT_Cover_ItemMeter;
+import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_TextFieldWidget;
+import gregtech.common.gui.modularui.widget.ItemWatcherSlotWidget;
import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalChestBase;
import io.netty.buffer.ByteBuf;
-import java.util.Collections;
import java.util.UUID;
import javax.annotation.Nonnull;
-import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
-import net.minecraft.world.World;
public class GT_Cover_WirelessItemDetector
extends GT_Cover_AdvancedRedstoneTransmitterBase<GT_Cover_WirelessItemDetector.ItemTransmitterData> {
@@ -133,128 +137,126 @@ public class GT_Cover_WirelessItemDetector
}
}
- /**
- * GUI Stuff
- */
+ // GUI stuff
+
@Override
- public Object getClientGUIImpl(
- byte aSide,
- int aCoverID,
- ItemTransmitterData aCoverVariable,
- ICoverable aTileEntity,
- EntityPlayer aPlayer,
- World aWorld) {
- return new ItemTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity);
+ public ModularWindow createWindow(GT_CoverUIBuildContext buildContext) {
+ return new WirelessItemDetectorUIFactory(buildContext).createWindow();
}
- private class ItemTransmitterGUI extends TransmitterGUI<ItemTransmitterData> {
- private final GT_GuiIntegerTextBox thresholdBox;
- private final GT_GuiIntegerTextBox slotBox;
-
- private final GT_GuiFakeItemButton fakeItemSlot;
+ private class WirelessItemDetectorUIFactory extends AdvancedRedstoneTransmitterBaseUIFactory {
- private final int maxSlot;
+ private static final String ALL_TEXT = "All";
- public ItemTransmitterGUI(
- byte aSide, int aCoverID, ItemTransmitterData aCoverVariable, ICoverable aTileEntity) {
- super(aSide, aCoverID, aCoverVariable, aTileEntity, 0, 1);
+ private int maxSlot;
+ private final ItemStackHandler targetSlotHandler = new ItemStackHandler(1);
- if (tile instanceof TileEntity
- && !super.tile.isDead()
- && tile instanceof IGregTechTileEntity
- && !(((IGregTechTileEntity) tile).getMetaTileEntity()
- instanceof GT_MetaTileEntity_DigitalChestBase)) {
- maxSlot = tile.getSizeInventory() - 1;
- } else {
- maxSlot = -1;
- }
+ public WirelessItemDetectorUIFactory(GT_CoverUIBuildContext buildContext) {
+ super(buildContext);
+ }
- thresholdBox = new GT_GuiShortTextBox(
- this, 1, 1 + startX, 2 + startY + spaceY * 2, spaceX * 5 - 4, 12, 0, getMaxCount());
- slotBox = new GT_GuiShortTextBox(
- this,
- 2,
- 1 + startX,
- 2 + startY + spaceY * 3,
- spaceX * 4 - 8,
- 12,
- -1,
- maxSlot,
- Collections.singletonMap("-1", "All"));
- fakeItemSlot =
- new GT_GuiFakeItemButton(this, startX + spaceX * 4 - 1, startY + spaceY * 3, GT_GuiIcon.SLOT_GRAY);
-
- slotBox.setEnabled(maxSlot >= 0);
- fakeItemSlot.setMimicSlot(true);
+ @Override
+ protected int getFrequencyRow() {
+ return 0;
}
@Override
- public void drawExtras(int mouseX, int mouseY, float parTicks) {
- super.drawExtras(mouseX, mouseY, parTicks);
- this.getFontRenderer()
- .drawString(
- GT_Utility.trans("221", "Item threshold"),
- startX + spaceX * 5,
- 4 + startY + spaceY * 2,
- textColor);
- this.getFontRenderer()
- .drawString(
- GT_Utility.trans("254.0", "Detect Slot"),
- startX + spaceX * 5,
- 4 + startY + spaceY * 3,
- textColor);
+ protected int getButtonRow() {
+ return 1;
}
@Override
- public void onMouseWheel(int x, int y, int delta) {
- super.onMouseWheel(x, y, delta);
- if (thresholdBox.isFocused()) {
- genericMouseWheel(thresholdBox, delta, 0, getMaxCount(), 1, 10, 64);
- } else if (slotBox.isFocused()) {
- genericMouseWheel(slotBox, delta, -1, maxSlot, 1, 5, 50);
- }
+ protected void addUIWidgets(ModularWindow.Builder builder) {
+ maxSlot = getMaxSlot();
+ super.addUIWidgets(builder);
+ builder.widget(new ItemWatcherSlotWidget()
+ .setGetter(this::getTargetItem)
+ .setPos(startX + spaceX * 4 - 1, startY + spaceY * 3))
+ .widget(new TextWidget(GT_Utility.trans("221", "Item threshold"))
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * 5, 4 + startY + spaceY * 2))
+ .widget(new TextWidget(GT_Utility.trans("254.0", "Detect Slot"))
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * 5, 4 + startY + spaceY * 3));
}
@Override
- public void applyTextBox(GT_GuiIntegerTextBox box) {
- if (box == thresholdBox) {
- coverVariable.threshold = parseTextBox(thresholdBox, 0, getMaxCount());
- } else if (box == slotBox) {
- coverVariable.slot = parseTextBox(slotBox, -1, maxSlot);
+ protected void addUIForDataController(CoverDataControllerWidget<ItemTransmitterData> controller) {
+ super.addUIForDataController(controller);
+ controller
+ .addFollower(
+ new CoverDataFollower_TextFieldWidget<>(),
+ coverData -> String.valueOf(coverData.threshold),
+ (coverData, state) -> {
+ coverData.threshold = (int) MathExpression.parseMathExpression(state);
+ return coverData;
+ },
+ widget -> widget.setOnScrollNumbers(1, 10, 64)
+ .setNumbers(() -> 0, this::getMaxItemCount)
+ .setPos(1, 2 + spaceY * 2)
+ .setSize(spaceX * 5 - 4, 12))
+ .addFollower(
+ new CoverDataFollower_TextFieldWidget<>(),
+ coverData -> getSlotTextFieldContent(coverData.slot),
+ (coverData, state) -> {
+ coverData.slot = getIntFromText(state);
+ return coverData;
+ },
+ widget -> widget.setOnScrollText()
+ .setValidator(val -> {
+ final int valSlot = getIntFromText(val);
+ if (valSlot > -1) {
+ return TextFieldWidget.format.format(Math.min(valSlot, maxSlot));
+ } else {
+ return ALL_TEXT;
+ }
+ })
+ .setPattern(BaseTextFieldWidget.NATURAL_NUMS)
+ .setPos(1, 2 + spaceY * 3)
+ .setSize(spaceX * 4 - 8, 12));
+ }
+
+ private int getMaxSlot() {
+ final ICoverable tile = getUIBuildContext().getTile();
+ if (tile instanceof TileEntity
+ && !tile.isDead()
+ && tile instanceof IGregTechTileEntity
+ && !(((IGregTechTileEntity) tile).getMetaTileEntity()
+ instanceof GT_MetaTileEntity_DigitalChestBase)) {
+ return tile.getSizeInventory() - 1;
+ } else {
+ return -1;
}
+ }
- super.applyTextBox(box);
+ private int getMaxItemCount() {
+ return maxSlot > 0 ? maxSlot * 64 : Integer.MAX_VALUE;
}
- @Override
- public void resetTextBox(GT_GuiIntegerTextBox box) {
- super.resetTextBox(box);
- if (box == thresholdBox) {
- thresholdBox.setText(Integer.toString(coverVariable.threshold));
- } else if (box == slotBox) {
- slotBox.setText(Integer.toString(coverVariable.slot));
+ private int getIntFromText(String text) {
+ try {
+ return (int) MathExpression.parseMathExpression(text, -1);
+ } catch (Exception e) {
+ return -1;
}
}
- @Override
- protected void update() {
- super.update();
- resetTextBox(thresholdBox);
- resetTextBox(slotBox);
+ private String getSlotTextFieldContent(int val) {
+ return val < 0 ? ALL_TEXT : String.valueOf(val);
+ }
- if (coverVariable.slot >= 0
+ private ItemStack getTargetItem() {
+ final ICoverable tile = getUIBuildContext().getTile();
+ final ItemTransmitterData coverVariable = getCoverData();
+ if (coverVariable != null
+ && coverVariable.slot >= 0
&& tile instanceof TileEntity
&& !tile.isDead()
&& tile.getSizeInventory() >= coverVariable.slot) {
- ItemStack itemStack = tile.getStackInSlot(coverVariable.slot);
- fakeItemSlot.setItem(itemStack);
+ return tile.getStackInSlot(coverVariable.slot);
} else {
- fakeItemSlot.setItem(null);
+ return null;
}
}
-
- private int getMaxCount() {
- return maxSlot > 0 ? maxSlot * 64 : Integer.MAX_VALUE;
- }
}
}
diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java
index 2505ce8d80..598e289c66 100644
--- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java
+++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessMaintenanceDetector.java
@@ -1,8 +1,10 @@
package gregtech.common.covers.redstone;
import com.google.common.io.ByteArrayDataInput;
-import gregtech.api.gui.widgets.GT_GuiIcon;
-import gregtech.api.gui.widgets.GT_GuiIconCheckButton;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.common.widget.TextWidget;
+import gregtech.api.gui.modularui.GT_CoverUIBuildContext;
+import gregtech.api.gui.modularui.GT_UITextures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.ICoverable;
@@ -11,17 +13,15 @@ import gregtech.api.items.GT_MetaGenerated_Tool;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.util.ISerializableObject;
import gregtech.common.covers.GT_Cover_NeedMaintainance;
+import gregtech.common.gui.modularui.widget.CoverDataControllerWidget;
+import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget;
import io.netty.buffer.ByteBuf;
import java.util.UUID;
import javax.annotation.Nonnull;
-import net.minecraft.client.gui.GuiButton;
-import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.world.World;
public class GT_Cover_WirelessMaintenanceDetector
extends GT_Cover_AdvancedRedstoneTransmitterBase<
@@ -188,82 +188,65 @@ public class GT_Cover_WirelessMaintenanceDetector
}
}
- /**
- * GUI Stuff
- */
+ // GUI stuff
+
private static final String[] extraTexts = new String[] {
"No Issues", ">= 1 Issue", ">= 2 Issues", ">= 3 Issues",
">= 4 Issues", ">= 5 Issues", "Rotor < 80%", "Rotor < 100%"
};
@Override
- public Object getClientGUIImpl(
- byte aSide,
- int aCoverID,
- MaintenanceTransmitterData aCoverVariable,
- ICoverable aTileEntity,
- EntityPlayer aPlayer,
- World aWorld) {
- return new MaintenanceTransmitterGUI(aSide, aCoverID, aCoverVariable, aTileEntity);
+ public ModularWindow createWindow(GT_CoverUIBuildContext buildContext) {
+ return new WirelessMaintenanceDetectorUIFactory(buildContext).createWindow();
}
- private class MaintenanceTransmitterGUI extends TransmitterGUI<MaintenanceTransmitterData> {
-
- private static final String guiTexturePath = "gregtech:textures/gui/GuiCoverBig.png";
- private static final int maintenanceButtonIdStart = 2;
-
- public MaintenanceTransmitterGUI(
- byte aSide, int aCoverID, MaintenanceTransmitterData aCoverVariable, ICoverable aTileEntity) {
- super(aSide, aCoverID, aCoverVariable, aTileEntity);
- this.mGUIbackgroundLocation = new ResourceLocation(guiTexturePath);
- this.gui_height = 143;
-
- for (int i = 0; i < 8; ++i) {
- new GT_GuiIconCheckButton(
- this,
- maintenanceButtonIdStart + i,
- startX + spaceX * (i % 2 == 0 ? 0 : 6),
- startY + spaceY * (2 + i / 2),
- GT_GuiIcon.CHECKMARK,
- null);
- }
+ private class WirelessMaintenanceDetectorUIFactory extends AdvancedRedstoneTransmitterBaseUIFactory {
+
+ public WirelessMaintenanceDetectorUIFactory(GT_CoverUIBuildContext buildContext) {
+ super(buildContext);
}
@Override
- public void drawExtras(int mouseX, int mouseY, float parTicks) {
- super.drawExtras(mouseX, mouseY, parTicks);
- for (int i = 0; i < 8; ++i) {
- this.getFontRenderer()
- .drawString(
- extraTexts[i],
- startX + spaceX * (i % 2 == 0 ? 1 : 7),
- 4 + startY + spaceY * (2 + i / 2),
- textColor);
- }
+ protected int getGUIHeight() {
+ return 143;
}
@Override
- protected void update() {
- super.update();
- updateButtons();
+ protected int getFrequencyRow() {
+ return 0;
}
- private void updateButtons() {
- GT_GuiIconCheckButton button;
- for (int i = maintenanceButtonIdStart; i < maintenanceButtonIdStart + 8; ++i) {
- button = (GT_GuiIconCheckButton) this.buttonList.get(i);
- button.enabled = (button.id - maintenanceButtonIdStart) != coverVariable.mode.ordinal();
- button.setChecked(!button.enabled);
- }
+ @Override
+ protected int getButtonRow() {
+ return 1;
}
@Override
- public void buttonClicked(GuiButton btn) {
- if (btn.id >= maintenanceButtonIdStart && btn.enabled) {
- coverVariable.mode = MaintenanceMode.values()[btn.id - maintenanceButtonIdStart];
+ protected void addUIWidgets(ModularWindow.Builder builder) {
+ super.addUIWidgets(builder);
+ for (int i = 0; i < 8; i++) {
+ builder.widget(new TextWidget(extraTexts[i])
+ .setDefaultColor(COLOR_TEXT_GRAY.get())
+ .setPos(startX + spaceX * (i % 2 == 0 ? 1 : 7), 4 + startY + spaceY * (2 + i / 2)));
}
+ }
- super.buttonClicked(btn);
+ @Override
+ protected void addUIForDataController(CoverDataControllerWidget<MaintenanceTransmitterData> controller) {
+ super.addUIForDataController(controller);
+ for (int i = 0; i < 8; i++) {
+ final int index = i;
+ controller.addFollower(
+ CoverDataFollower_ToggleButtonWidget.ofDisableable(),
+ coverData -> coverData.mode == MaintenanceMode.values()[index],
+ (coverData, state) -> {
+ coverData.mode = MaintenanceMode.values()[index];
+ return coverData;
+ },
+ widget -> widget.setToggleTexture(
+ GT_UITextures.OVERLAY_BUTTON_CHECKMARK, GT_UITextures.TRANSPARENT)
+ .setPos(spaceX * (index % 2 == 0 ? 0 : 6), spaceY * (2 + index / 2)));
+ }
}
}
}