diff options
author | moller21 <42100910+moller21@users.noreply.github.com> | 2020-05-10 15:18:48 +0200 |
---|---|---|
committer | moller21 <42100910+moller21@users.noreply.github.com> | 2020-05-10 15:18:48 +0200 |
commit | ea1bf1b9b362f64b3c6d82c269ce9f66c82ee559 (patch) | |
tree | 4628c9cf669be314bfb80afb2bc8bd9f6be8ece7 /src/main/java/gregtech/common/covers | |
parent | 4dec88757f64c0bdf4a87eff8f3d5c7ba65b7217 (diff) | |
download | GT5-Unofficial-ea1bf1b9b362f64b3c6d82c269ce9f66c82ee559.tar.gz GT5-Unofficial-ea1bf1b9b362f64b3c6d82c269ce9f66c82ee559.tar.bz2 GT5-Unofficial-ea1bf1b9b362f64b3c6d82c269ce9f66c82ee559.zip |
Cover GUI: added fluid regulator, finished open on shiftrightclick.
Diffstat (limited to 'src/main/java/gregtech/common/covers')
3 files changed, 167 insertions, 7 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java b/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java index 3587829177..39c87669f1 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java @@ -1,8 +1,15 @@ 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_GuiIconButton; +import gregtech.api.gui.widgets.GT_GuiIntegerTextBox; 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.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; @@ -134,4 +141,161 @@ public class GT_Cover_FluidRegulator extends GT_CoverBehavior { 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 GT_Cover_FluidRegulator.GUI(aSide, aCoverID, coverData, aTileEntity); + } + + private class GUI extends GT_GUICover { + private final byte side; + private final int coverID; + private GT_GuiIntegerTextBox tBox, lBox; + 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; + + private int speed; + private boolean export; + + 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; + + this.speed = Math.abs(coverVariable); + this.export = coverVariable >= 0; + new GT_GuiIconButton(this, 0,startX + spaceX*0,startY+spaceY*0, GT_GuiIcon.EXPORT).setTooltipText(trans("006","Export")); + new GT_GuiIconButton(this, 1,startX + spaceX*1,startY+spaceY*0, GT_GuiIcon.IMPORT).setTooltipText(trans("007","Import")); + + tBox = new GT_GuiIntegerTextBox(this, 2,startX + spaceX*0,startY+spaceY*1 + 2, spaceX*4-3,12); + tBox.setText(String.valueOf(speed)); + tBox.setMaxStringLength(10); + + lBox = new GT_GuiIntegerTextBox(this, 3,startX + spaceX*0,startY+spaceY*2 + 2, spaceX*4-3,12); + lBox.setText(String.valueOf(speed*20L)); + lBox.setMaxStringLength(10); + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + this.getFontRenderer().drawString(trans("229","Import/Export" ), startX + spaceX*4, 4+startY+spaceY*0, 0xFF555555); + this.getFontRenderer().drawString(trans("049", "L/tick "), startX + spaceX*4, 4+startY+spaceY*1, 0xFF555555); + this.getFontRenderer().drawString(trans("050", "L/sec"), startX + spaceX*4, 4+startY+spaceY*2, 0xFF555555); + } + + @Override + protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { + updateButtons(); + tBox.setFocused(true); + } + + public void buttonClicked(GuiButton btn){ + if (getClickable(btn.id)){ + coverVariable = getNewCoverVariable(btn.id); + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile)); + } + updateButtons(); + } + + @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() ? 50 : isCtrlKeyDown() ? 5 : 1) * (delta > 0 ? step : -step); + long i; + try { + i = Long.parseLong(box.getText()); + } catch (NumberFormatException e) { + return; + } + if (i > (Long.MAX_VALUE-1000)) + break; + + i = i + step; + if (i <= 0) + i = 0; + box.setText(String.valueOf(i)); + break; + } + } + } + + @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 (box.id == 3) + i = i / 20; + + if (i > mTransferRate) + i = mTransferRate; + else if (i <= 0) + i = 0; + + speed = (int) i; + + tBox.setText(String.valueOf(speed)); + lBox.setText(String.valueOf(speed*20)); + + coverVariable = getNewCoverVariable(2); + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCover(side, coverID, coverVariable, tile)); + } + + @Override + public void resetTextBox(GT_GuiIntegerTextBox box) { + box.setText(String.valueOf(speed)); + } + + private void updateButtons(){ + GuiButton b; + for (Object o : buttonList) { + b = (GuiButton) o; + b.enabled = getClickable(b.id); + } + } + + private int getNewCoverVariable(int id) { + switch (id) { + case 0: + export = true; + return speed; + case 1: + export = false; + return -speed; + case 2: + if (export) + return speed; + else + return -speed; + } + return coverVariable; + } + + private boolean getClickable(int id) { + return (id == 0) ^ (export); + } + } } diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java b/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java index 1fcdf9fccf..0a213bb844 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java @@ -168,8 +168,7 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior { private final byte side; private final int coverID; private int coverVariable; - private final ICoverable tile; - private GT_GuiFakeItemButton fluidFilterButton; + private final GT_GuiFakeItemButton fluidFilterButton; protected String fluidFilterName; private final static int startX = 10; @@ -179,11 +178,10 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior { public GT_FluidFilterGUICover(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - super(176, 107, GT_Utility.intToStack(aCoverID)); + super(aTileEntity, 176, 107, GT_Utility.intToStack(aCoverID)); this.side = aSide; this.coverID = aCoverID; this.coverVariable = aCoverVariable; - this.tile = aTileEntity; GT_GuiIconButton b; b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.EXPORT).setTooltipText(trans("232","Filter Input")); diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Pump.java b/src/main/java/gregtech/common/covers/GT_Cover_Pump.java index 7b98b18a31..364229f6f8 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_Pump.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_Pump.java @@ -161,7 +161,6 @@ public class GT_Cover_Pump private final byte side; private final int coverID; private int coverVariable; - private final ICoverable tile; private final static int startX = 10; private final static int startY = 25; @@ -169,11 +168,10 @@ public class GT_Cover_Pump private final static int spaceY = 18; public GT_PumpGUICover(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) { - super(176, 107, GT_Utility.intToStack(aCoverID)); + super(aTileEntity, 176, 107, GT_Utility.intToStack(aCoverID)); this.side = aSide; this.coverID = aCoverID; this.coverVariable = aCoverVariable; - this.tile = aTileEntity; GT_GuiIconButton b; b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.EXPORT).setTooltipText(trans("006","Export")); |