package crazypants.enderio.machine.gui; import java.awt.Rectangle; import java.util.List; import net.minecraft.inventory.Container; import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; import com.enderio.core.client.gui.widget.GuiToolTip; import crazypants.enderio.machine.AbstractPoweredMachineEntity; import crazypants.enderio.machine.power.PowerDisplayUtil; public abstract class GuiPoweredMachineBase<T extends AbstractPoweredMachineEntity> extends GuiMachineBase<T> { protected static final int POWER_Y = 14; protected final int POWER_X = 15; protected static final int POWER_WIDTH = 10; protected static final int POWER_HEIGHT = 42; protected static final int BOTTOM_POWER_Y = POWER_Y + POWER_HEIGHT; public GuiPoweredMachineBase(T machine, Container container, String... guiTexture) { super(machine, container, guiTexture); if(renderPowerBar()) { addToolTip(new GuiToolTip(new Rectangle(getPowerX(), getPowerY(), getPowerWidth(), getPowerHeight()), "") { @Override protected void updateText() { text.clear(); if(renderPowerBar()) { updatePowerBarTooltip(text); } } }); } } protected String getPowerOutputLabel() { return StatCollector.translateToLocal("enderio.gui.max"); } protected int getPowerOutputValue() { return getTileEntity().getPowerUsePerTick(); } protected void updatePowerBarTooltip(List<String> text) { text.add(getPowerOutputLabel() + " " + PowerDisplayUtil.formatPower(getPowerOutputValue()) + " " + PowerDisplayUtil.abrevation() + PowerDisplayUtil.perTickStr()); text.add(PowerDisplayUtil.formatStoredPower(getTileEntity().getEnergyStored(), getTileEntity().getMaxEnergyStored())); } public void renderPowerBar(int k, int l) { if(renderPowerBar()) { int i1 = getTileEntity().getEnergyStoredScaled(getPowerHeight()); // x, y, u, v, width, height drawTexturedModalRect(k + getPowerX(), l + (getPowerY() + getPowerHeight()) - i1, getPowerU(), getPowerV(), getPowerWidth(), i1); } } protected int getPowerX() { return POWER_X; } protected int getPowerY() { return POWER_Y; } protected int getPowerWidth() { return POWER_WIDTH; } protected int getPowerHeight() { return POWER_HEIGHT; } @Override protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int k = (width - xSize) / 2; int l = (height - ySize) / 2; renderPowerBar(k, l); super.drawGuiContainerBackgroundLayer(par1, par2, par3); } protected int getPowerV() { return 31; } protected int getPowerU() { return 176; } protected boolean renderPowerBar() { return true; } }