package crazypants.enderio.machine.transceiver.gui;
import java.awt.Color;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.List;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import org.lwjgl.opengl.GL11;
import com.enderio.core.api.client.gui.ITabPanel;
import com.enderio.core.client.gui.button.ToggleButton;
import com.enderio.core.client.gui.widget.GuiToolTip;
import com.enderio.core.client.render.ColorUtil;
import com.enderio.core.client.render.RenderUtil;
import crazypants.enderio.EnderIO;
import crazypants.enderio.config.Config;
import crazypants.enderio.gui.IconEIO;
import crazypants.enderio.machine.PacketItemBuffer;
import crazypants.enderio.machine.power.PowerDisplayUtil;
import crazypants.enderio.network.PacketHandler;
public class GeneralTab implements ITabPanel {
private static final int SEND_BAR_OFFSET = 13;
ContainerTransceiver container;
GuiTransceiver parent;
GuiToolTip sendPowerBarTT;
ToggleButton bufferSizeB;
public GeneralTab(GuiTransceiver guiTransceiver) {
parent = guiTransceiver;
container = parent.getContainer();
int x = parent.getXSize() - 5 - 16;
int y = 43;
bufferSizeB = new ToggleButton(parent, 4327, x, y, IconEIO.ITEM_SINGLE, IconEIO.ITEM_STACK);
bufferSizeB.setSelectedToolTip(EnderIO.lang.localize("gui.machine.bufferingstacks"));
bufferSizeB.setUnselectedToolTip(EnderIO.lang.localize("gui.machine.bufferingsingle"));
bufferSizeB.setSelected(parent.getTransciever().isBufferStacks());
sendPowerBarTT = new GuiToolTip(new Rectangle(parent.getPowerX() + SEND_BAR_OFFSET, parent.getPowerY(), parent.getPowerWidth(), parent.getPowerHeight()), "") {
@Override
protected void updateText() {
text.clear();
if(parent.renderPowerBar()) {
updateSendPowerBarTooltip(text);
}
}
};
parent.addToolTip(sendPowerBarTT);
}
@Override
public void onGuiInit(int x, int y, int width, int height) {
container.setPlayerInventoryVisible(true);
container.setBufferSlotsVisible(true);
bufferSizeB.onGuiInit();
}
@Override
public void deactivate() {
container.setPlayerInventoryVisible(false);
container.setBufferSlotsVisible(false);
bufferSizeB.detach();
}
@Override
public IconEIO getIcon() {
return IconEIO.IO_CONFIG_UP;
}
@Override
public void render(float par1, int par2, int par3) {
int top = parent.getGuiTop();
int left = parent.getGuiLeft();
GL11.glColor3f(1, 1, 1);
//Inventory
parent.bindGuiTexture();
Point invRoot = container.getPlayerInventoryOffset();
parent.drawTexturedModalRect(left + invRoot.x - 1, top + invRoot.y - 1, 24, 180, 162, 76);
invRoot = container.getItemInventoryOffset();
parent.drawTexturedModalRect(left + invRoot.x - 1, top + invRoot.y - 1, 24, 180, 72, 36);
parent.drawTexturedModalRect(left + invRoot.x - 1 + (18 * 4) + container.getItemBufferSpacing(), top + invRoot.y - 1, 24, 180, 72, 36);
FontRenderer fr = parent.getFontRenderer();
String sendTxt = EnderIO.lang.localize("gui.send");
int x = left + invRoot.x + 36 - fr.getStringWidth(sendTxt)/2;
int y = top + invRoot.y - fr.FONT_HEIGHT - 3;
fr.drawStringWithShadow(sendTxt, x, y, ColorUtil.getRGB(Color.WHITE));
String recText = EnderIO.lang.localize("gui.receive");
x = left + invRoot.x + 72 + container.getItemBufferSpacing() + 36 - fr.getStringWidth(recText)/2;
fr.drawStringWithShadow(recText, x, y, ColorUtil.getRGB(Color.WHITE));
//Highlights
parent.renderSlotHighlights();
//Power
parent.bindGuiTexture();
GL11.glColor3f(1, 1, 1);
x = left + parent.getPowerX() - 1;
y = top + parent.getPowerY() - 1;
int maxHeight = parent.getPowerHeight();
parent.drawTexturedModalRect(x, y, 233, 196, 12, maxHeight + 2);
parent.drawTexturedModalRect(x + SEND_BAR_OFFSET, y, 233, 196, 12, maxHeight + 2);
int totalPixelHeight = parent.getTransciever().getEnergyStoredScaled(maxHeight * 2);
int fillHeight = Math.min(totalPixelHeight,maxHeight);
int fillY = y + 1 + parent.getPowerHeight() - fillHeight;
x += 1;
parent.drawTexturedModalRect(x, fillY, parent.getPowerU(), parent.getPowerV(), parent.getPowerWidth(), fillHeight);
fillHeight = Math.max(0, totalPixelHeight - maxHeight);
fillY = y + 1 + parent.getPowerHeight() - fillHeight;
parent.drawTexturedModalRect(x + SEND_BAR_OFFSET, fillY, parent.getPowerU() - 25, parent.getPowerV(), parent.getPowerWidth(), fillHeight);
}
public void updatePowerBarTooltip(List<String> text) {
text.add(EnderIO.lang.localize("gui.machine.localbuffer"));
text.add(EnderIO.lang.localize("gui.machine.upkeep") + " " + PowerDisplayUtil.formatPowerPerTick(parent.getPowerOutputValue()));
int maxEnergy = parent.getTransciever().getCapacitor().getMaxEnergyStored()/2;
int energyStored = Math.min(parent.getTransciever().getEnergyStored(), maxEnergy);
text.add(PowerDisplayUtil.formatStoredPower(energyStored, maxEnergy));
}
private void updateSendPowerBarTooltip(List<String> text) {
text.add(EnderIO.lang.localize("gui.machine.sendReceivebuffer"));
text.add(EnderIO.lang.localize("itemGasConduit.tooltip.maxIo") + " " + PowerDisplayUtil.formatPowerPerTick(Config.transceiverMaxIoRF));
int maxEnergy = parent.getTransciever().getCapacitor().getMaxEnergyStored()/2;
int energyStored = Math.max(0, parent.getTransciever().getEnergyStored() - maxEnergy);
text.add(PowerDisplayUtil.formatStoredPower(energyStored, maxEnergy));
}
@Override
public void actionPerformed(GuiButton guiButton) {
if(guiButton == bufferSizeB) {
parent.getTransciever().setBufferStacks(bufferSizeB.isSelected());
PacketHandler.INSTANCE.sendToServer(new PacketItemBuffer(parent.getTransciever()));
}
}
@Override
public void mouseClicked(int x, int y, int par3) {
}
@Override
public void updateScreen() {
}
@Override
public void keyTyped(char par1, int par2) {
}
}