aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/covers
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2020-05-10 16:06:29 +0200
committerGitHub <noreply@github.com>2020-05-10 16:06:29 +0200
commit87321491668b5b07801eaafb22390051c97fd9d8 (patch)
tree95107a6dac84a67dfea6aa49254efaa0f6d978d9 /src/main/java/gregtech/common/covers
parent92662137b00d39424b910846f63094a4c07e6589 (diff)
parentea1bf1b9b362f64b3c6d82c269ce9f66c82ee559 (diff)
downloadGT5-Unofficial-87321491668b5b07801eaafb22390051c97fd9d8.tar.gz
GT5-Unofficial-87321491668b5b07801eaafb22390051c97fd9d8.tar.bz2
GT5-Unofficial-87321491668b5b07801eaafb22390051c97fd9d8.zip
Merge pull request #281 from moller21/coverguis2
Cover GUI's take 2
Diffstat (limited to 'src/main/java/gregtech/common/covers')
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_FluidRegulator.java164
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java153
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_Pump.java128
3 files changed, 436 insertions, 9 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 a398f7d17f..0a213bb844 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_Fluidfilter.java
@@ -1,24 +1,32 @@
package gregtech.common.covers;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.gui.GT_GUICover;
+import gregtech.api.gui.widgets.GT_GuiFakeItemButton;
+import gregtech.api.gui.widgets.GT_GuiIcon;
+import gregtech.api.gui.widgets.GT_GuiIconButton;
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.minecraft.item.ItemStack;
import net.minecraftforge.fluids.*;
+
import static gregtech.api.enums.GT_Values.E;
public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
// Uses the lower 3 bits of the cover variable, so we have 8 options to work with (0-7)
- private final int FILTER_INPUT_DENY_OUTPUT = 0;
- private final int INVERT_INPUT_DENY_OUTPUT = 1;
- private final int FILTER_INPUT_ANY_OUTPUT = 2;
- private final int INVERT_INPUT_ANY_OUTPUT = 3;
- private final int DENY_INPUT_FILTER_OUTPUT = 4;
- private final int DENY_INPUT_INVERT_OUTPUT = 5;
- private final int ANY_INPUT_FILTER_OUTPUT = 6;
- private final int ANY_INPUT_INVERT_OUTPUT = 7;
+ private final int FILTER_INPUT_DENY_OUTPUT = 0; // 000
+ private final int INVERT_INPUT_DENY_OUTPUT = 1; // 001
+ private final int FILTER_INPUT_ANY_OUTPUT = 2; // 010
+ private final int INVERT_INPUT_ANY_OUTPUT = 3; // 011
+ private final int DENY_INPUT_FILTER_OUTPUT = 4; // 100
+ private final int DENY_INPUT_INVERT_OUTPUT = 5; // 101
+ private final int ANY_INPUT_FILTER_OUTPUT = 6; // 110
+ private final int ANY_INPUT_INVERT_OUTPUT = 7; // 111
public String getDescription(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
int aFilterMode = aCoverVariable & 7;
@@ -142,4 +150,133 @@ public class GT_Cover_Fluidfilter extends GT_CoverBehavior {
public int getTickRate(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {
return 0;
}
+ /**
+ * GUI Stuff
+ */
+
+ @Override
+ public boolean hasCoverGUI() {
+ return true;
+ }
+
+ @Override
+ public Object getClientGUI(byte aSide, int aCoverID, int coverData, ICoverable aTileEntity) {
+ return new GT_FluidFilterGUICover(aSide, aCoverID, coverData, aTileEntity);
+ }
+
+ private class GT_FluidFilterGUICover extends GT_GUICover {
+ private final byte side;
+ private final int coverID;
+ private int coverVariable;
+ private final GT_GuiFakeItemButton fluidFilterButton;
+ protected String fluidFilterName;
+
+ 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 GT_FluidFilterGUICover(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;
+
+ GT_GuiIconButton b;
+ b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.EXPORT).setTooltipText(trans("232","Filter Input"));
+ b = new GT_GuiIconButton(this, 1, startX + spaceX*1, startY+spaceY*0, GT_GuiIcon.IMPORT).setTooltipText(trans("233","Filter Output"));
+ b = new GT_GuiIconButton(this, 2, startX + spaceX*0, startY+spaceY*2, GT_GuiIcon.BLOCK_INPUT).setTooltipText(trans("234", "Block Output"));
+ b = new GT_GuiIconButton(this, 3, startX + spaceX*1, startY+spaceY*2, GT_GuiIcon.ALLOW_INPUT).setTooltipText(trans("235", "Allow Output"));
+ b = new GT_GuiIconButton(this, 4, startX + spaceX*0, startY+spaceY*1, GT_GuiIcon.WHITELIST).setTooltipText(trans("236","Whitelist Fluid"));
+ b = new GT_GuiIconButton(this, 5, startX + spaceX*1, startY+spaceY*1, GT_GuiIcon.BLACKLIST).setTooltipText(trans("237","Blacklist Fluid"));
+
+ fluidFilterButton = new GT_GuiFakeItemButton(this, startX, startY+spaceY*3+2, GT_GuiIcon.SLOT_DARKGRAY);
+ }
+
+ private int getNewCoverVariable(int id) {
+ switch (id) {
+ case 0:
+ return (coverVariable & ~0x7) | (coverVariable & 0x3);
+ case 1:
+ return (coverVariable & ~0x7) | (coverVariable | 0x4);
+ case 2:
+ return (coverVariable & ~0x7) | (coverVariable & 0x5);
+ case 3:
+ return (coverVariable & ~0x7) | (coverVariable | 0x2);
+ case 4:
+ return (coverVariable & ~0x7) | (coverVariable & 0x6);
+ case 5:
+ return (coverVariable & ~0x7) | (coverVariable | 0x1);
+ }
+ return coverVariable;
+ }
+
+ private boolean getClickable(int id) {
+ switch (id) {
+ case 0: case 1:
+ return (coverVariable>>2 & 0x1) != (id & 0x1);
+ case 2: case 3:
+ return (coverVariable>>1 & 0x1) != (id & 0x1);
+ case 4: case 5:
+ return (coverVariable & 0x1) != (id & 0x1);
+ }
+ return false;
+ }
+
+
+ @Override
+ public void drawExtras(int mouseX, int mouseY, float parTicks) {
+ super.drawExtras(mouseX, mouseY, parTicks);
+ this.fontRendererObj.drawString(trans("238","Filter Direction" ), startX + spaceX*2, 3+startY+spaceY*0, 0xFF555555);
+ this.fontRendererObj.drawString(trans("239", "Filter Type"), startX + spaceX*2, 3+startY+spaceY*1, 0xFF555555);
+ this.fontRendererObj.drawString(trans("240","Block Flow"), startX + spaceX*2, 3+startY+spaceY*2, 0xFF555555);
+ this.fontRendererObj.drawSplitString(fluidFilterName, startX + spaceX+3, 4+startY+spaceY*3, gui_width-40 , 0xFF222222);
+ }
+
+ @Override
+ protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) {
+ updateButtons();
+ }
+
+ 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();
+ }
+
+ private void updateButtons(){
+ GT_GuiIconButton b;
+ for (Object o : buttonList) {
+ if (o instanceof GT_GuiIconButton) {
+ b = (GT_GuiIconButton) o;
+ b.enabled = getClickable(b.id);
+ if (getClickable(1)) { //filtering input
+ if (b.id == 2)
+ b.setTooltipText(trans("219", "Block Output"));
+ else if (b.id == 3)
+ b.setTooltipText(trans("220", "Allow Output"));
+ } else {
+ if (b.id == 2)
+ b.setTooltipText(trans("221", "Block Input"));
+ else if (b.id == 3)
+ b.setTooltipText(trans("222", "Allow Input"));
+ }
+ }
+ }
+ Fluid f = FluidRegistry.getFluid(coverVariable >>> 3);
+ if (f != null) {
+ ItemStack item = GT_Utility.getFluidDisplayStack(f);
+ if (item != null) {
+ fluidFilterButton.setItem(item);
+ fluidFilterName = item.getDisplayName();
+ return;
+ }
+ }
+ fluidFilterButton.setItem(null);
+ fluidFilterName = trans("224", "Filter Empty");
+ }
+ }
}
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 466f6566c0..364229f6f8 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_Pump.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_Pump.java
@@ -1,9 +1,15 @@
package gregtech.common.covers;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.gui.GT_GUICover;
+import gregtech.api.gui.widgets.GT_GuiIconButton;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IMachineProgress;
+import gregtech.api.net.GT_Packet_TileEntityCover;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_Utility;
+import gregtech.api.gui.widgets.GT_GuiIcon;
+import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
@@ -11,7 +17,7 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
public class GT_Cover_Pump
- extends GT_CoverBehavior {
+ extends GT_CoverBehavior{
public final int mTransferRate;
public GT_Cover_Pump(int aTransferRate) {
@@ -136,4 +142,124 @@ public class GT_Cover_Pump
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_PumpGUICover(aSide, aCoverID, coverData, aTileEntity);
+ }
+
+ private class GT_PumpGUICover extends GT_GUICover {
+ private final byte side;
+ private final int coverID;
+ 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 GT_PumpGUICover(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;
+
+ GT_GuiIconButton b;
+ b = new GT_GuiIconButton(this, 0, startX + spaceX*0, startY+spaceY*0, GT_GuiIcon.EXPORT).setTooltipText(trans("006","Export"));
+ b = new GT_GuiIconButton(this, 1, startX + spaceX*1, startY+spaceY*0, GT_GuiIcon.IMPORT).setTooltipText(trans("007","Import"));
+ b = new GT_GuiIconButton(this, 2, startX + spaceX*0, startY+spaceY*1, GT_GuiIcon.CHECKMARK).setTooltipText(trans("224","Ignore"));
+ b = new GT_GuiIconButton(this, 3, startX + spaceX*1, startY+spaceY*1, GT_GuiIcon.REDSTONE_ON).setTooltipText(trans("225","Conditional"));
+ b = new GT_GuiIconButton(this, 4, startX + spaceX*2, startY+spaceY*1, GT_GuiIcon.REDSTONE_OFF).setTooltipText(trans("226","Invert Condition"));
+ b = new GT_GuiIconButton(this, 5, startX + spaceX*0, startY+spaceY*2, GT_GuiIcon.ALLOW_INPUT).setTooltipText(trans("227","Allow Input"));
+ b = new GT_GuiIconButton(this, 6, startX + spaceX*1, startY+spaceY*2, GT_GuiIcon.BLOCK_INPUT).setTooltipText(trans("228","Block Input"));
+ }
+
+ @Override
+ public void drawExtras(int mouseX, int mouseY, float parTicks) {
+ super.drawExtras(mouseX, mouseY, parTicks);
+ this.fontRendererObj.drawString(trans("229","Import/Export" ), startX + spaceX*3, 3+startY+spaceY*0, 0xFF555555);
+ this.fontRendererObj.drawString(trans("230","Conditional"), startX + spaceX*3, 3+startY+spaceY*1, 0xFF555555);
+ this.fontRendererObj.drawString(trans("231", "Enable Input"), startX + spaceX*3, 3+startY+spaceY*2, 0xFF555555);
+ }
+
+ @Override
+ protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) {
+ updateButtons();
+ }
+
+ 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();
+ }
+
+ 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:
+ return coverVariable & ~0x1;
+ case 1:
+ return coverVariable | 0x1;
+ case 2:
+ if (coverVariable > 5)
+ return 0x6 | (coverVariable & ~0xE);
+ return (coverVariable & ~0xE);
+ case 3:
+ if (coverVariable > 5)
+ return 0x8 | (coverVariable & ~0xE);
+ return 0x2 | (coverVariable & ~0xE);
+ case 4:
+ if (coverVariable > 5)
+ return 0xA | (coverVariable & ~0xE);
+ return (0x4 | (coverVariable & ~0xE));
+ case 5:
+ if (coverVariable <= 5)
+ return coverVariable + 6;
+ break;
+ case 6:
+ if (coverVariable > 5)
+ return coverVariable - 6;
+ }
+ return coverVariable;
+ }
+
+ private boolean getClickable(int id) {
+ if (coverVariable < 0 | 11 < coverVariable)
+ return false;
+
+ switch (id) {
+ case 0: case 1:
+ return (0x1 & coverVariable) != id;
+ case 2:
+ return (coverVariable % 6) >= 2;
+ case 3:
+ return (coverVariable % 6) < 2 | 4 <= (coverVariable % 6);
+ case 4:
+ return (coverVariable % 6) < 4;
+ case 5:
+ return coverVariable < 6;
+ case 6:
+ return coverVariable >= 6;
+ }
+ return false;
+ }
+ }
}