diff options
Diffstat (limited to 'src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java')
-rw-r--r-- | src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java | 214 |
1 files changed, 111 insertions, 103 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java b/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java index 2ea5a2c951..5dfb837499 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_NeedMaintainance.java @@ -1,19 +1,19 @@ package gregtech.common.covers; -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 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.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.items.GT_MetaGenerated_Tool; import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase; -import gregtech.api.net.GT_Packet_TileEntityCover; import gregtech.api.util.GT_CoverBehavior; import gregtech.api.util.GT_Utility; -import net.minecraft.client.gui.GuiButton; +import gregtech.api.util.ISerializableObject; +import gregtech.common.gui.modularui.widget.CoverDataControllerWidget; +import gregtech.common.gui.modularui.widget.CoverDataFollower_ToggleButtonWidget; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.Fluid; @@ -192,122 +192,130 @@ public class GT_Cover_NeedMaintainance extends GT_CoverBehavior { public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { return 60; } - /** - * GUI Stuff - */ + + // GUI stuff + @Override public boolean hasCoverGUI() { return true; } @Override - public Object getClientGUI(byte aSide, int aCoverID, int coverData, ICoverable aTileEntity) { - return new GUI(aSide, aCoverID, coverData, aTileEntity); + public boolean useModularUI() { + return true; } - private class GUI extends GT_GUICover { - private final byte side; - private final int coverID; - private int coverVariable; - - private final String[] tooltiptext = { - GT_Utility.trans("056", "Emit if 1 Maintenance Needed"), - GT_Utility.trans("058", "Emit if 2 Maintenance Needed"), - GT_Utility.trans("060", "Emit if 3 Maintenance Needed"), - GT_Utility.trans("062", "Emit if 4 Maintenance Needed"), - GT_Utility.trans("064", "Emit if 5 Maintenance Needed"), - GT_Utility.trans("066", "Emit if rotor needs maintenance low accuracy mod"), - GT_Utility.trans("068", "Emit if rotor needs maintenance high accuracy mod"), - }; + @Override + public ModularWindow createWindow(GT_CoverUIBuildContext buildContext) { + return new NeedMaintainanceUIFactory(buildContext).createWindow(); + } - private final String[] buttontext = { - GT_Utility.trans("247", "1 Issue"), - GT_Utility.trans("248", "2 Issues"), - GT_Utility.trans("249", "3 Issues"), - GT_Utility.trans("250", "4 Issues"), - GT_Utility.trans("251", "5 Issues"), - GT_Utility.trans("252", "Rotor < 80%"), - GT_Utility.trans("253", "Rotor < 100%"), - GT_Utility.trans("INVERTED", "Inverted"), - GT_Utility.trans("NORMAL", "Normal"), - }; + private class NeedMaintainanceUIFactory extends UIFactory { private static final int startX = 10; private static final int startY = 25; private static final int spaceX = 18; private static final int spaceY = 18; - private final int textColor = this.getTextColorOrDefault("text", 0xFF555555); - - public GUI(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - super(aTileEntity, 176, 107, GT_Utility.intToStack(aCoverID)); - this.side = aSide; - this.coverID = aCoverID; - this.coverVariable = aCoverVariable; - - GuiButton b; - b = new GT_GuiIconCheckButton(this, 0, startX + spaceX * 0, startY + spaceY * 0, GT_GuiIcon.CHECKMARK, null) - .setTooltipText(tooltiptext[0]); - b = new GT_GuiIconCheckButton(this, 1, startX + spaceX * 0, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null) - .setTooltipText(tooltiptext[1]); - b = new GT_GuiIconCheckButton(this, 2, startX + spaceX * 0, startY + spaceY * 2, GT_GuiIcon.CHECKMARK, null) - .setTooltipText(tooltiptext[2]); - b = new GT_GuiIconCheckButton(this, 3, startX + spaceX * 0, startY + spaceY * 3, GT_GuiIcon.CHECKMARK, null) - .setTooltipText(tooltiptext[3]); - b = new GT_GuiIconCheckButton( - this, 4, startX + spaceX * 4 + 4, startY + spaceY * 0, GT_GuiIcon.CHECKMARK, null) - .setTooltipText(tooltiptext[4]); - b = new GT_GuiIconCheckButton( - this, 5, startX + spaceX * 4 + 4, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, null) - .setTooltipText(tooltiptext[5]); - b = new GT_GuiIconCheckButton( - this, 6, startX + spaceX * 4 + 4, startY + spaceY * 2, GT_GuiIcon.CHECKMARK, null) - .setTooltipText(tooltiptext[6]); - b = new GT_GuiIconCheckButton( - this, - 7, - startX + spaceX * 4 + 4, - startY + spaceY * 3, - GT_GuiIcon.REDSTONE_ON, - GT_GuiIcon.REDSTONE_OFF); + public NeedMaintainanceUIFactory(GT_CoverUIBuildContext buildContext) { + super(buildContext); } + @SuppressWarnings("PointlessArithmeticExpression") @Override - public void drawExtras(int mouseX, int mouseY, float parTicks) { - super.drawExtras(mouseX, mouseY, parTicks); - - this.fontRendererObj.drawString(buttontext[0], startX + spaceX * 1, 4 + startY + spaceY * 0, textColor); - this.fontRendererObj.drawString(buttontext[1], startX + spaceX * 1, 4 + startY + spaceY * 1, textColor); - this.fontRendererObj.drawString(buttontext[2], startX + spaceX * 1, 4 + startY + spaceY * 2, textColor); - this.fontRendererObj.drawString(buttontext[3], startX + spaceX * 1, 4 + startY + spaceY * 3, textColor); - this.fontRendererObj.drawString(buttontext[4], startX + spaceX * 5 + 4, 4 + startY + spaceY * 0, textColor); - this.fontRendererObj.drawString(buttontext[5], startX + spaceX * 5 + 4, 4 + startY + spaceY * 1, textColor); - this.fontRendererObj.drawString(buttontext[6], startX + spaceX * 5 + 4, 4 + startY + spaceY * 2, textColor); - // inverted normal - String s2 = ((coverVariable & 0x1) > 0) ? buttontext[7] : buttontext[8]; - this.fontRendererObj.drawString(s2, startX + spaceX * 5 + 4, 4 + startY + spaceY * 3, textColor); - } - - @Override - protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { - updateButtons(); - } - - @Override - public void buttonClicked(GuiButton btn) { - if (btn.id == 7 || !isEnabled(btn.id)) { - coverVariable = getNewCoverVariable(btn.id, ((GT_GuiIconCheckButton) btn).isChecked()); - GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile)); - } - updateButtons(); - } - - private void updateButtons() { - for (Object o : buttonList) - ((GT_GuiIconCheckButton) o).setChecked(isEnabled(((GT_GuiIconCheckButton) o).id)); + protected void addUIWidgets(ModularWindow.Builder builder) { + final String[] tooltipText = { + GT_Utility.trans("056", "Emit if 1 Maintenance Needed"), + GT_Utility.trans("058", "Emit if 2 Maintenance Needed"), + GT_Utility.trans("060", "Emit if 3 Maintenance Needed"), + GT_Utility.trans("062", "Emit if 4 Maintenance Needed"), + GT_Utility.trans("064", "Emit if 5 Maintenance Needed"), + GT_Utility.trans("066", "Emit if rotor needs maintenance low accuracy mod"), + GT_Utility.trans("068", "Emit if rotor needs maintenance high accuracy mod"), + }; + + final String[] buttonText = { + GT_Utility.trans("247", "1 Issue"), + GT_Utility.trans("248", "2 Issues"), + GT_Utility.trans("249", "3 Issues"), + GT_Utility.trans("250", "4 Issues"), + GT_Utility.trans("251", "5 Issues"), + GT_Utility.trans("252", "Rotor < 80%"), + GT_Utility.trans("253", "Rotor < 100%"), + GT_Utility.trans("INVERTED", "Inverted"), + GT_Utility.trans("NORMAL", "Normal"), + }; + + builder.widget(new CoverDataControllerWidget.CoverDataIndexedControllerWidget_ToggleButtons<>( + this::getCoverData, + this::setCoverData, + GT_Cover_NeedMaintainance.this, + (index, coverData) -> isEnabled(index, convert(coverData)), + (index, coverData) -> new ISerializableObject.LegacyCoverData( + getNewCoverVariable(index, convert(coverData)))) + .addToggleButton( + 0, + CoverDataFollower_ToggleButtonWidget.ofCheck(), + widget -> widget.addTooltip(tooltipText[0]).setPos(spaceX * 0, spaceY * 0)) + .addToggleButton( + 1, + CoverDataFollower_ToggleButtonWidget.ofCheck(), + widget -> widget.addTooltip(tooltipText[1]).setPos(spaceX * 0, spaceY * 1)) + .addToggleButton( + 2, + CoverDataFollower_ToggleButtonWidget.ofCheck(), + widget -> widget.addTooltip(tooltipText[2]).setPos(spaceX * 0, spaceY * 2)) + .addToggleButton( + 3, + CoverDataFollower_ToggleButtonWidget.ofCheck(), + widget -> widget.addTooltip(tooltipText[3]).setPos(spaceX * 0, spaceY * 3)) + .addToggleButton( + 4, + CoverDataFollower_ToggleButtonWidget.ofCheck(), + widget -> widget.addTooltip(tooltipText[4]).setPos(spaceX * 4 + 4, spaceY * 0)) + .addToggleButton( + 5, + CoverDataFollower_ToggleButtonWidget.ofCheck(), + widget -> widget.addTooltip(tooltipText[5]).setPos(spaceX * 4 + 4, spaceY * 1)) + .addToggleButton( + 6, + CoverDataFollower_ToggleButtonWidget.ofCheck(), + widget -> widget.addTooltip(tooltipText[6]).setPos(spaceX * 4 + 4, spaceY * 2)) + .addToggleButton( + 7, + CoverDataFollower_ToggleButtonWidget.ofRedstone(), + widget -> widget.setPos(spaceX * 4 + 4, spaceY * 3)) + .setPos(startX, startY)) + .widget(new TextWidget(buttonText[0]) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setPos(startX + spaceX * 1, 4 + startY + spaceY * 0)) + .widget(new TextWidget(buttonText[1]) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setPos(startX + spaceX * 1, 4 + startY + spaceY * 1)) + .widget(new TextWidget(buttonText[2]) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setPos(startX + spaceX * 1, 4 + startY + spaceY * 2)) + .widget(new TextWidget(buttonText[3]) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setPos(startX + spaceX * 1, 4 + startY + spaceY * 3)) + .widget(new TextWidget(buttonText[4]) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setPos(startX + spaceX * 5 + 4, 4 + startY + spaceY * 0)) + .widget(new TextWidget(buttonText[5]) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setPos(startX + spaceX * 5 + 4, 4 + startY + spaceY * 1)) + .widget(new TextWidget(buttonText[6]) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setPos(startX + spaceX * 5 + 4, 4 + startY + spaceY * 2)) + .widget(TextWidget.dynamicString( + () -> isEnabled(7, convert(getCoverData())) ? buttonText[7] : buttonText[8]) + .setSynced(false) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setPos(startX + spaceX * 5 + 4, 4 + startY + spaceY * 3)); } - private int getNewCoverVariable(int id, boolean checked) { + private int getNewCoverVariable(int id, int coverVariable) { + final boolean checked = (coverVariable & 0x1) > 0; if (id == 7) { if (checked) return coverVariable & ~0x1; else return coverVariable | 0x1; @@ -315,7 +323,7 @@ public class GT_Cover_NeedMaintainance extends GT_CoverBehavior { return (coverVariable & 0x1) | (id << 1); } - private boolean isEnabled(int id) { + private boolean isEnabled(int id, int coverVariable) { if (id == 7) return (coverVariable & 0x1) > 0; return (coverVariable >>> 1) == id; } |