package org.halvors.electrometrics.client.gui.machine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiButton; import net.minecraft.entity.player.EntityPlayer; import org.halvors.electrometrics.client.gui.component.GuiPowerBar; import org.halvors.electrometrics.common.base.tile.ITileOwnable; import org.halvors.electrometrics.common.network.NetworkHandler; import org.halvors.electrometrics.common.network.packet.PacketTileEntityElectricityMeter; import org.halvors.electrometrics.common.tile.machine.TileEntityElectricityMeter; import org.halvors.electrometrics.common.util.LanguageUtils; import org.halvors.electrometrics.common.util.PlayerUtils; import org.halvors.electrometrics.common.util.energy.EnergyUtils; /** * This is the GUI of the Electricity Meter which provides a simple way to keep count of the electricity you use. * Especially suitable for pay-by-use applications where a player buys electricity from another player on multiplayer worlds. * * @author halvors */ @SideOnly(Side.CLIENT) public class GuiElectricityMeter extends GuiElectricMachine { private final TileEntityElectricityMeter tileEntityElectricityMeter; private int ticker = 0; public GuiElectricityMeter(final TileEntityElectricityMeter tileEntity) { super(tileEntity); this.tileEntityElectricityMeter = tileEntity; components.add(new GuiPowerBar(this, tileEntity.getStorage(), defaultResource, 164, 15)); } @SuppressWarnings("unchecked") @Override public void initGui() { super.initGui(); int guiWidth = (width - xSize) / 2; int guiHeight = (height - ySize) / 2; // Create buttons. GuiButton resetButton = new GuiButton(0, guiWidth + 6, (guiHeight + ySize) - (20 + 6), 60, 20, LanguageUtils.localize("gui.reset")); // If this has a owner, restrict the reset button to that player. if (tileEntity instanceof ITileOwnable) { ITileOwnable ownable = (ITileOwnable) tileEntity; EntityPlayer player = PlayerUtils.getClientPlayer(); resetButton.enabled = ownable.isOwner(player); } // Add buttons. buttonList.clear(); buttonList.add(resetButton); } @Override protected void actionPerformed(GuiButton guiButton) { switch (guiButton.id) { case 0: // Update the server-side TileEntity. NetworkHandler.sendToServer(new PacketTileEntityElectricityMeter(tileEntityElectricityMeter, PacketTileEntityElectricityMeter.PacketType.RESET)); break; } } @Override protected void drawGuiScreenForegroundLayer(int mouseX, int mouseY) { int x = 6 + 12; int y = ySize / 2; String measured = LanguageUtils.localize("gui.measured"); String usage = LanguageUtils.localize("gui.usage"); int xOffset = Math.max(fontRendererObj.getStringWidth(measured), fontRendererObj.getStringWidth(usage)) + 8; drawString(measured + ":", x, y - 24); drawString(EnergyUtils.getEnergyDisplay(tileEntityElectricityMeter.getElectricityCount()), x + xOffset, y - 24); drawString(usage + ":", x, y - 12); drawString(EnergyUtils.getEnergyDisplay(tileEntityElectricityMeter.getElectricityUsage()) + "/t", x + xOffset, y - 12); if (ticker > 0) { ticker--; } else { ticker = 5; // Request the latest data from the server-side TileEntity. NetworkHandler.sendToServer(new PacketTileEntityElectricityMeter(tileEntityElectricityMeter, PacketTileEntityElectricityMeter.PacketType.REQUEST)); } super.drawGuiScreenForegroundLayer(mouseX, mouseY); } }