diff options
author | Kiwi <42833050+Kiwi233@users.noreply.github.com> | 2020-12-13 21:24:20 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-13 21:24:20 +0800 |
commit | d567ee9f63c6e11f2b21f26687cfc2ecaed200a1 (patch) | |
tree | 8e4c275624a966c4482b90ad85cda2375c6a63b9 /src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java | |
parent | cec32d0a604156802eee3f9e8fefccb40a62d7ef (diff) | |
parent | 7ce77a615de68add2bb0fa71818b3e36241a02a7 (diff) | |
download | GT5-Unofficial-d567ee9f63c6e11f2b21f26687cfc2ecaed200a1.tar.gz GT5-Unofficial-d567ee9f63c6e11f2b21f26687cfc2ecaed200a1.tar.bz2 GT5-Unofficial-d567ee9f63c6e11f2b21f26687cfc2ecaed200a1.zip |
Merge pull request #2 from GTNewHorizons/experimental
5.09.33.57
Diffstat (limited to 'src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java')
-rw-r--r-- | src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java index a359d20aa9..1407311b88 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_RedstoneWirelessBase.java @@ -1,7 +1,12 @@ package gregtech.common.covers; import gregtech.api.GregTech_API; +import gregtech.api.enums.GT_Values; +import gregtech.api.gui.GT_GUICover; +import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; +import gregtech.api.interfaces.IGuiScreen; import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.net.GT_Packet_TileEntityCover; import gregtech.api.util.GT_CoverBehavior; import gregtech.api.util.GT_Utility; import net.minecraft.entity.player.EntityPlayer; @@ -78,4 +83,118 @@ public abstract class GT_Cover_RedstoneWirelessBase public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { return 1; } + /** + * 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); + } + + private class GUI extends GT_GUICover { + private final byte side; + private final int coverID; + private GT_GuiIntegerTextBox fBox; + private int coverVariable; + + private final static int startX = 10; + private final static int startY = 25; + private final static int spaceX = 18; + private final static int spaceY = 18; + + + 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; + + fBox = new GT_GuiIntegerTextBoxWithMinus(this, 2,startX + spaceX*0,startY+spaceY*0 + 2, spaceX*4-3,12); + fBox.setText(String.valueOf(coverVariable)); + fBox.setMaxStringLength(12); + + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + this.getFontRenderer().drawString(trans("246","Frequency" ), startX + spaceX*4, 4+startY+spaceY*0, 0xFF555555); + } + + @Override + protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { + fBox.setFocused(true); + } + + @Override + public void onMouseWheel(int x, int y, int delta) { + for (GT_GuiIntegerTextBox box : textBoxes){ + if (box.isFocused()) { + int step = Math.max(1, Math.abs(delta / 120)); + step = (isShiftKeyDown() ? 1000 : isCtrlKeyDown() ? 50 : 1) * (delta > 0 ? step : -step); + long i; + try { + i = Long.parseLong(box.getText()); + } catch (NumberFormatException e) { + return; + } + i = i + step; + if (i > Integer.MAX_VALUE) + i = Integer.MAX_VALUE; + else if (i < Integer.MIN_VALUE) + i = Integer.MIN_VALUE; + + box.setText(String.valueOf(i)); + return; + } + } + } + + @Override + public void applyTextBox(GT_GuiIntegerTextBox box) { + long i; + String s = box.getText().trim(); + try { + i = Long.parseLong(s); + } catch (NumberFormatException e) { + resetTextBox(box); + return; + } + + if (i > Integer.MAX_VALUE) + i = Integer.MAX_VALUE; + else if (i < Integer.MIN_VALUE) + i = Integer.MIN_VALUE; + + + coverVariable = (int) i; + fBox.setText(String.valueOf(coverVariable)); + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile)); + } + + @Override + public void resetTextBox(GT_GuiIntegerTextBox box) { + box.setText(String.valueOf(coverVariable)); + } + + private class GT_GuiIntegerTextBoxWithMinus extends GT_GuiIntegerTextBox { + + public GT_GuiIntegerTextBoxWithMinus(IGuiScreen gui, int id, int x, int y, int width, int height) { + super(gui, id, x, y, width, height); + } + + @Override + public boolean validChar(char c, int key) { + if (getCursorPosition() == 0 && key == 12) // minus first allowed. + return true; + return super.validChar(c, key); + } + } + } } |