package imdutch21.oilcraft.inventory.gui;
import imdutch21.oilcraft.inventory.container.ContainerOilGenerator;
import imdutch21.oilcraft.network.DirectionButtonPacketProcessor;
import imdutch21.oilcraft.network.OCPacketHandler;
import imdutch21.oilcraft.tileentity.TileEntityOilGenerator;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.translation.I18n;
import org.lwjgl.opengl.GL11;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class GuiOilGenerator extends OCGui {
private static ResourceLocation oilGeneratorGui = new ResourceLocation("oilcraft:textures/gui/oil_generator.png");
private TileEntityOilGenerator tileOilGenerator;
private ContainerOilGenerator containerOilGenerator;
private EntityPlayer player;
private int tick = 0;
private int frame = 0;
private GuiButton upButton, downButton, northButton, eastButton, southButton, westButton;
public GuiOilGenerator(EntityPlayer player, TileEntityOilGenerator tile) {
super(new ContainerOilGenerator(player, tile));
tileOilGenerator = tile;
containerOilGenerator = (ContainerOilGenerator) this.inventorySlots;
this.player = player;
}
@Override
public void initGui() {
super.initGui();
int k = (this.width - this.xSize) / 2;
int l = (this.height - this.ySize) / 2;
buttonList.clear();
buttonList.add(this.upButton = new GuiButton(EnumFacing.UP.getIndex(), k + 58, l + 13, 18, 16, "U"));
buttonList.add(this.downButton = new GuiButton(EnumFacing.DOWN.getIndex(), k + 94, l + 13, 18, 16, "D"));
buttonList.add(this.northButton = new GuiButton(EnumFacing.NORTH.getIndex(), k + 76, l + 29, 18, 16, "N"));
buttonList.add(this.eastButton = new GuiButton(EnumFacing.EAST.getIndex(), k + 94, l + 45, 18, 16, "E"));
buttonList.add(this.southButton = new GuiButton(EnumFacing.SOUTH.getIndex(), k + 76, l + 61, 18, 16, "S"));
buttonList.add(this.westButton = new GuiButton(EnumFacing.WEST.getIndex(), k + 58, l + 45, 18, 16, "W"));
}
@Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
this.fontRendererObj.drawString(I18n.translateToLocal("container.oilGenerator"), this.xSize / 2 - this.fontRendererObj.getStringWidth(I18n.translateToLocal("container.oilGenerator")) / 2, 4, 4210752);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
int amount = getScaled(tileOilGenerator.tank.getCapacity(), tileOilGenerator.tank.getFluidAmount(), 58);
if (tileOilGenerator.tank.getFluid() != null) {
mc.getTextureManager().bindTexture(new ResourceLocation("oilcraft:textures/blocks/oil_still.png"));
drawScaledCustomSizeModalRect(143, 72 - amount, 0, frame % 200, 8, amount, 16, amount, 16, 320);
}
tick++;
if (tick % 10 == 0)
frame += 8;
amount = getScaled(tileOilGenerator.energyStorage.getMaxEnergyStored(), tileOilGenerator.energyStorage.getEnergyStored(), 71);
Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("oilcraft:textures/gui/energy_bar.png"));
drawModalRectWithCustomSizedTexture(10, 78 - amount, 16, 71 - amount, 16, amount, 16, 71);
int k = (this.width - this.xSize) / 2;
int l = (this.height - this.ySize) / 2;
if (mouseX >= 143 + k && mouseX <= 159 + k && mouseY >= 14 + l && mouseY <= 72 + l) {
List<String> list = new ArrayList<String>();
list.add("Fluid: Oil");
list.add(String.format("Tank: %s mB / %s mB", tileOilGenerator.tank.getFluidAmount(), tileOilGenerator.tank.getCapacity()));
drawHoveringText(list, mouseX - k, mouseY - l);
}
if (mouseX >= 10 + k && mouseX <= 26 + k && mouseY >= 7 + l && mouseY <= 78 + l) {
List<String> list = new ArrayList<String>();
list.add(String.format("Energie: %s RF / %s RF", tileOilGenerator.energyStorage.getEnergyStored(), tileOilGenerator.energyStorage.getMaxEnergyStored()));
drawHoveringText(list, mouseX - k, mouseY - l);
}
for (GuiButton button : buttonList) {
if (mouseX >= button.xPosition && mouseX <= button.xPosition + button.width && mouseY >= button.yPosition && mouseY <= button.yPosition + button.height) {
List<String> list = new ArrayList<String>();
list.add(String.format("Active: %s", tileOilGenerator.outputEnabled(button.id)));
drawHoveringText(list, mouseX - k, mouseY - l);
}
}
}
private int getScaled(int whole, int part, int height) {
if (whole <= 0)
return height;
return part * height / whole;
}
@Override
protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.getTextureManager().bindTexture(oilGeneratorGui);
int k = (this.width - this.xSize) / 2;
int l = (this.height - this.ySize) / 2;
this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
}
@Override
protected void actionPerformed(GuiButton button) throws IOException {
if (button.enabled) {
if (button.id > -1 && button.id < 7)
OCPacketHandler.INSTANCE.sendToServer(new DirectionButtonPacketProcessor(button.id, tileOilGenerator.getPos(), player.dimension));
}
}
}