package crazypants.enderio.machine.tank; import java.awt.Rectangle; import java.util.List; import java.util.Locale; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Slot; import org.lwjgl.opengl.GL11; import com.enderio.core.api.client.render.IWidgetIcon; import com.enderio.core.client.gui.button.CycleButton; import com.enderio.core.client.gui.button.CycleButton.ICycleEnum; import com.enderio.core.client.gui.widget.GuiToolTip; import com.enderio.core.client.render.RenderUtil; import com.google.common.collect.Lists; import crazypants.enderio.EnderIO; import crazypants.enderio.fluid.Fluids; import crazypants.enderio.gui.IconEIO; import crazypants.enderio.machine.gui.GuiMachineBase; import crazypants.enderio.machine.killera.ContainerKillerJoe; import crazypants.enderio.network.PacketHandler; public class GuiTank extends GuiMachineBase<TileTank> { public enum VoidMode implements ICycleEnum { ALWAYS(IconEIO.TICK), IF_NOT_CONTAINER(IconEIO.ITEM_SINGLE), NEVER(IconEIO.CROSS); private final IWidgetIcon icon; private final List<String> unlocTooltips; private VoidMode(IWidgetIcon icon) { this.icon = icon; String prefix = "gui.void.mode"; String mode = prefix + "." + name().toLowerCase(Locale.US); this.unlocTooltips = Lists.newArrayList(prefix, mode, mode + ".desc"); } @Override public IWidgetIcon getIcon() { return icon; } @Override public List<String> getTooltipLines() { return EnderIO.lang.localizeAll(unlocTooltips); } } private CycleButton<VoidMode> voidBut; public GuiTank(InventoryPlayer par1InventoryPlayer, TileTank te) { super(te, new ContainerTank(par1InventoryPlayer, te), "tank"); addToolTip(new GuiToolTip(new Rectangle(80, 21, 16, 47), "") { @Override protected void updateText() { text.clear(); String heading = EnderIO.lang.localize("tank.tank"); if(getTileEntity().tank.getFluid() != null) { heading += ": " + getTileEntity().tank.getFluid().getLocalizedName(); } text.add(heading); text.add(Fluids.toCapactityString(getTileEntity().tank)); } }); addToolTip(new GuiToolTip(new Rectangle(14, 35, 18, 18), EnderIO.lang.localize("gui.tooltip.voidslot")) { public boolean shouldDraw() { return super.shouldDraw() && getTileEntity().canVoidItems(); } }); voidBut = new CycleButton<VoidMode>(this, 123, 155, 43, VoidMode.class); } @Override public void initGui() { super.initGui(); voidBut.onGuiInit(); voidBut.setMode(getTileEntity().getVoidMode()); ((ContainerTank) inventorySlots).createGhostSlots(getGhostSlots()); } @Override public void updateScreen() { Slot slot = (Slot) inventorySlots.inventorySlots.get(2); if (getTileEntity().canVoidItems()) { slot.xDisplayPosition = 15; slot.yDisplayPosition = 36; voidBut.onGuiInit(); } else { slot.xDisplayPosition = 10000; slot.yDisplayPosition = 10000; voidBut.detach(); } } @Override protected void actionPerformed(GuiButton button) { super.actionPerformed(button); if (button.id == voidBut.id) { getTileEntity().setVoidMode(voidBut.getMode()); PacketHandler.INSTANCE.sendToServer(new PacketTankVoidMode(getTileEntity())); } } @Override protected boolean showRecipeButton() { return false; } @Override protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); bindGuiTexture(); int sx = (width - xSize) / 2; int sy = (height - ySize) / 2; drawTexturedModalRect(sx, sy, 0, 0, xSize, ySize); if (getTileEntity().canVoidItems()) { Slot slot = (Slot) inventorySlots.inventorySlots.get(2); drawTexturedModalRect(sx + slot.xDisplayPosition - 1, sy + slot.yDisplayPosition - 1, xSize, 0, 18, 18); IconEIO.map.render(IconEIO.MINUS, sx + slot.xDisplayPosition, sy + slot.yDisplayPosition, true); } super.drawGuiContainerBackgroundLayer(par1, par2, par3); RenderUtil.bindBlockTexture(); RenderUtil.renderGuiTank(getTileEntity().tank, guiLeft + 80, guiTop + 21, zLevel, 16,47); } }