package crazypants.enderio.machine.obelisk.weather; import java.awt.Color; import java.awt.Rectangle; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.InventoryPlayer; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import org.lwjgl.opengl.GL11; import com.enderio.core.client.gui.button.IconButton; import com.enderio.core.client.gui.widget.GuiToolTip; import com.enderio.core.client.render.RenderUtil; import crazypants.enderio.EnderIO; import crazypants.enderio.fluid.Fluids; import crazypants.enderio.gui.IconEIO; import crazypants.enderio.machine.gui.GuiPoweredMachineBase; import crazypants.enderio.machine.obelisk.weather.TileWeatherObelisk.WeatherTask; import crazypants.enderio.network.PacketHandler; public class GuiWeatherObelisk extends GuiPoweredMachineBase<TileWeatherObelisk> { private IconButton buttonStart; public GuiWeatherObelisk(InventoryPlayer inventory, TileWeatherObelisk tileEntity) { super(tileEntity, new ContainerWeatherObelisk(inventory, tileEntity), "weatherObelisk"); addProgressTooltip(79, 29, 18, 31); addToolTip(new GuiToolTip(new Rectangle(22, 11, 16, 63), "") { @Override protected void updateText() { text.clear(); FluidTank tank = getTileEntity().getInputTank(); String heading = EnderIO.lang.localize("tank.tank"); if (tank.getFluid() != null) { heading += ": " + tank.getFluid().getLocalizedName(); } text.add(heading); text.add(Fluids.toCapactityString(getTileEntity().getInputTank())); } }); } @Override public void initGui() { super.initGui(); int x = (xSize / 2) - (BUTTON_SIZE / 2); int y = 58; addButton(buttonStart = new IconButton(this, 0, x, y, IconEIO.TICK)); buttonStart.onGuiInit(); refreshButtons(); } @Override public void updateScreen() { super.updateScreen(); if(getTileEntity().getWorldObj().getTotalWorldTime() % 20 == 0) { refreshButtons(); } } private void refreshButtons() { FluidStack fs = getTileEntity().getInputTank().getFluid(); if (fs == null) { buttonStart.enabled = false; return; } WeatherTask task = WeatherTask.fromFluid(fs.getFluid()); buttonStart.enabled = getTileEntity().canStartTask(task); } @Override protected boolean showRecipeButton() { return false; } @Override protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { bindGuiTexture(); this.drawTexturedModalRect(getGuiLeft(), getGuiTop(), 0, 0, getXSize(), getYSize()); int x = getGuiLeft() + 22; int y = getGuiTop() + 11; RenderUtil.renderGuiTank(getTileEntity().getInputTank(), x, y, 0, 16, 63); bindGuiTexture(); drawTexturedModalRect(x, y, 186, 33, 16, 63); if(shouldRenderProgress() && getTileEntity().getActiveTask() != null) { // TODO test int barHeight = getProgressScaled(ContainerWeatherObelisk.MAX_SCALE); Color color = getTileEntity().getActiveTask().color; GL11.glColor3f((float) color.getRed() / 255f, (float) color.getGreen() / 255f, (float) color.getBlue() / 255f); this.drawTexturedModalRect(getGuiLeft() + 81, getGuiTop() + 58 - barHeight, getXSize(), 32 - barHeight, 12, barHeight); } super.drawGuiContainerBackgroundLayer(par1, par2, par3); } @Override protected int getPowerHeight() { return 63; } @Override protected int getPowerU() { return super.getPowerU(); } @Override protected int getPowerV() { return 33; } @Override protected int getPowerX() { return super.getPowerX() - 7; } @Override protected int getPowerY() { return super.getPowerY() - 3; } @Override protected void actionPerformed(GuiButton b) { super.actionPerformed(b); if (b.id >= 0 && b.id <= 2) { getTileEntity().startTask(); PacketHandler.INSTANCE.sendToServer(new PacketActivateWeather(getTileEntity())); } } }