diff options
author | Florexiz <florexiz.nm@gmail.com> | 2022-08-05 13:01:25 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-05 17:01:25 +0700 |
commit | b294448b7e9da8d3e2580e29efab106f13c2de17 (patch) | |
tree | 13969f43e092d640f717c9ca92f2ca3dc0e5c56e | |
parent | e9c6895f3551d11cefc2f57ab49b5a290c3b00d9 (diff) | |
download | GT5-Unofficial-b294448b7e9da8d3e2580e29efab106f13c2de17.tar.gz GT5-Unofficial-b294448b7e9da8d3e2580e29efab106f13c2de17.tar.bz2 GT5-Unofficial-b294448b7e9da8d3e2580e29efab106f13c2de17.zip |
GUI for facade covers (#1201)
-rw-r--r-- | src/main/java/gregtech/common/covers/GT_Cover_FacadeBase.java | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_FacadeBase.java b/src/main/java/gregtech/common/covers/GT_Cover_FacadeBase.java index 17aafef79e..bfdc56c157 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_FacadeBase.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_FacadeBase.java @@ -2,9 +2,14 @@ package gregtech.common.covers; import com.google.common.io.ByteArrayDataInput; import cpw.mods.fml.common.network.ByteBufUtils; +import gregtech.api.enums.GT_Values; import gregtech.api.enums.Textures; +import gregtech.api.gui.GT_GUICover; +import gregtech.api.gui.widgets.GT_GuiIcon; +import gregtech.api.gui.widgets.GT_GuiIconCheckButton; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.ICoverable; +import gregtech.api.net.GT_Packet_TileEntityCoverNew; import gregtech.api.render.TextureFactory; import gregtech.api.util.GT_CoverBehaviorBase; import gregtech.api.util.GT_RenderingWorld; @@ -12,11 +17,13 @@ import gregtech.api.util.GT_Utility; import gregtech.api.util.ISerializableObject; import io.netty.buffer.ByteBuf; import net.minecraft.block.Block; +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.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; @@ -233,4 +240,91 @@ public abstract class GT_Cover_FacadeBase extends GT_CoverBehaviorBase<GT_Cover_ return this; } } + + /** + * GUI Stuff + */ + + @Override + public boolean hasCoverGUI() { + return true; + } + + @Override + protected Object getClientGUIImpl(byte aSide, int aCoverID, FacadeData coverData, ICoverable aTileEntity, EntityPlayer aPlayer, World aWorld) { + return new GT_Cover_FacadeBase.GUI(aSide, aCoverID, coverData, aTileEntity); + } + + private class GUI extends GT_GUICover { + private final byte side; + private final int coverID; + private FacadeData coverVariable; + + private static final int startX = 10; + private static final int startY = 25; + private static final int spaceX = 18; + private static final int spaceY = 18; + + public GUI(byte aSide, int aCoverID, FacadeData aCoverVariable, ICoverable aTileEntity) { + super(aTileEntity, 176, 107, aCoverVariable.mStack); + this.side = aSide; + this.coverID = aCoverID; + this.coverVariable = aCoverVariable; + + new GT_GuiIconCheckButton(this, 0, startX + spaceX * 0, startY + spaceY * 0, GT_GuiIcon.CHECKMARK, GT_GuiIcon.CROSS).setChecked((coverVariable.mFlags & 0x1) == 0); + new GT_GuiIconCheckButton(this, 1, startX + spaceX * 0, startY + spaceY * 1, GT_GuiIcon.CHECKMARK, GT_GuiIcon.CROSS).setChecked((coverVariable.mFlags & 0x2) == 0); + new GT_GuiIconCheckButton(this, 2, startX + spaceX * 0, startY + spaceY * 2, GT_GuiIcon.CHECKMARK, GT_GuiIcon.CROSS).setChecked((coverVariable.mFlags & 0x4) == 0); + new GT_GuiIconCheckButton(this, 3, startX + spaceX * 0, startY + spaceY * 3, GT_GuiIcon.CHECKMARK, GT_GuiIcon.CROSS).setChecked((coverVariable.mFlags & 0x8) == 0); + } + + @Override + public void drawExtras(int mouseX, int mouseY, float parTicks) { + super.drawExtras(mouseX, mouseY, parTicks); + this.fontRendererObj.drawString(GT_Utility.trans("128", "Redstone"), 3 + startX + spaceX * 1, 4 + startY + spaceY * 0, 0xFF555555); + this.fontRendererObj.drawString(GT_Utility.trans("129", "Energy"), 3 + startX + spaceX * 1, 4 + startY + spaceY * 1, 0xFF555555); + this.fontRendererObj.drawString(GT_Utility.trans("130", "Fluids"), 3 + startX + spaceX * 1, 4 + startY + spaceY * 2, 0xFF555555); + this.fontRendererObj.drawString(GT_Utility.trans("131", "Items"), 3 + startX + spaceX * 1, 4 + startY + spaceY * 3, 0xFF555555); + } + + @Override + protected void onInitGui(int guiLeft, int guiTop, int gui_width, int gui_height) { + updateButtons(); + } + + @Override + public void buttonClicked(GuiButton btn) { + if (getClickable(btn.id)) { + coverVariable.mFlags = getNewCoverVariable(btn.id); + GT_Values.NW.sendToServer(new GT_Packet_TileEntityCoverNew(side, coverID, coverVariable, tile)); + } + updateButtons(); + } + + private void updateButtons() { + GT_GuiIconCheckButton b; + for (Object o : buttonList) { + b = (GT_GuiIconCheckButton) o; + b.enabled = getClickable(b.id); + b.setChecked((coverVariable.mFlags & (1 << b.id)) != 0); + } + } + + private int getNewCoverVariable(int id) { + switch (id) { + case 0: + return coverVariable.mFlags ^ 0x1; + case 1: + return coverVariable.mFlags ^ 0x2; + case 2: + return coverVariable.mFlags ^ 0x4; + case 3: + return coverVariable.mFlags ^ 0x8; + } + return coverVariable.mFlags; + } + + private boolean getClickable(int id) { + return coverVariable.mFlags >= 0 && coverVariable.mFlags <= 15; + } + } } |