package micdoodle8.mods.galacticraft.planets.mars.client.gui;
import micdoodle8.mods.galacticraft.api.entity.IRocketType.EnumRocketType;
import micdoodle8.mods.galacticraft.api.prefab.entity.EntitySpaceshipBase.EnumLaunchPhase;
import micdoodle8.mods.galacticraft.core.Constants;
import micdoodle8.mods.galacticraft.core.GalacticraftCore;
import micdoodle8.mods.galacticraft.core.client.gui.container.GuiContainerGC;
import micdoodle8.mods.galacticraft.core.client.gui.element.GuiElementInfoRegion;
import micdoodle8.mods.galacticraft.core.inventory.ContainerRocketInventory;
import micdoodle8.mods.galacticraft.core.util.EnumColor;
import micdoodle8.mods.galacticraft.core.util.GCCoreUtil;
import micdoodle8.mods.galacticraft.planets.mars.entities.EntityCargoRocket;
import micdoodle8.mods.galacticraft.planets.mars.network.PacketSimpleMars;
import micdoodle8.mods.galacticraft.planets.mars.network.PacketSimpleMars.EnumSimplePacketMars;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.inventory.IInventory;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.client.FMLClientHandler;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.lwjgl.opengl.GL11;
import java.util.ArrayList;
import java.util.List;
@SideOnly(Side.CLIENT)
public class GuiCargoRocket extends GuiContainerGC
{
private static ResourceLocation[] rocketTextures = new ResourceLocation[4];
static
{
for (int i = 0; i < 4; i++)
{
GuiCargoRocket.rocketTextures[i] = new ResourceLocation(Constants.ASSET_PREFIX, "textures/gui/rocket_" + i * 18 + ".png");
}
}
private final IInventory upperChestInventory;
private final EnumRocketType rocketType;
private EntityCargoRocket rocket;
private GuiButton launchButton;
public GuiCargoRocket(IInventory par1IInventory, EntityCargoRocket rocket)
{
this(par1IInventory, rocket, rocket.rocketType);
}
public GuiCargoRocket(IInventory par1IInventory, EntityCargoRocket rocket, EnumRocketType rocketType)
{
super(new ContainerRocketInventory(par1IInventory, rocket, rocketType, FMLClientHandler.instance().getClient().thePlayer));
this.upperChestInventory = par1IInventory;
this.rocket = rocket;
this.allowUserInput = false;
this.ySize = rocketType.getInventorySpace() <= 3 ? 132 : 145 + rocketType.getInventorySpace() * 2;
this.rocketType = rocketType;
}
@Override
protected void actionPerformed(GuiButton button)
{
switch (button.id)
{
case 0:
GalacticraftCore.packetPipeline.sendToServer(new PacketSimpleMars(EnumSimplePacketMars.S_UPDATE_CARGO_ROCKET_STATUS, GCCoreUtil.getDimensionID(mc.theWorld), new Object[] { this.rocket.getEntityId(), 0 }));
break;
default:
break;
}
}
@SuppressWarnings("unchecked")
@Override
public void initGui()
{
super.initGui();
final int var6 = (this.height - this.ySize) / 2;
final int var7 = (this.width - this.xSize) / 2;
this.launchButton = new GuiButton(0, var7 + 116, var6 + 26, 50, 20, GCCoreUtil.translate("gui.message.launch.name"));
this.buttonList.add(this.launchButton);
List<String> fuelTankDesc = new ArrayList<String>();
fuelTankDesc.add(GCCoreUtil.translate("gui.fuel_tank.desc.0"));
fuelTankDesc.add(GCCoreUtil.translate("gui.fuel_tank.desc.1"));
this.infoRegions.add(new GuiElementInfoRegion((this.width - this.xSize) / 2 + (this.rocket.rocketType.getInventorySpace() == 2 ? 70 : 71), (this.height - this.ySize) / 2 + 6, 36, 40, fuelTankDesc, this.width, this.height, this));
}
@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2)
{
if (this.rocket.rocketType.getInventorySpace() == 2)
{
this.fontRendererObj.drawString(GCCoreUtil.translate(this.upperChestInventory.getName()), 8, 76 + (this.rocket.rocketType.getInventorySpace() - 20) / 9 * 18, 4210752);
}
else
{
this.fontRendererObj.drawString(GCCoreUtil.translate(this.upperChestInventory.getName()), 8, 89 + (this.rocket.rocketType.getInventorySpace() - 20) / 9 * 18, 4210752);
}
String str = GCCoreUtil.translate("gui.message.fuel.name") + ":";
this.fontRendererObj.drawString(str, 140 - this.fontRendererObj.getStringWidth(str) / 2, 5, 4210752);
final double percentage = this.rocket.getScaledFuelLevel(100);
String color = percentage > 80.0D ? EnumColor.BRIGHT_GREEN.getCode() : percentage > 40.0D ? EnumColor.ORANGE.getCode() : EnumColor.RED.getCode();
str = percentage + "% " + GCCoreUtil.translate("gui.message.full.name");
this.fontRendererObj.drawString(color + str, 140 - this.fontRendererObj.getStringWidth(str) / 2, 15, 4210752);
str = GCCoreUtil.translate("gui.message.status.name") + ":";
this.fontRendererObj.drawString(str, 40 - this.fontRendererObj.getStringWidth(str) / 2, 9, 4210752);
String[] spltString = { "" };
String colour = EnumColor.YELLOW.toString();
if (this.rocket.statusMessageCooldown == 0 || this.rocket.statusMessage == null)
{
spltString = new String[2];
spltString[0] = GCCoreUtil.translate("gui.cargorocket.status.waiting.0");
spltString[1] = GCCoreUtil.translate("gui.cargorocket.status.waiting.1");
if (this.rocket.launchPhase != EnumLaunchPhase.UNIGNITED.ordinal())
{
spltString = new String[2];
spltString[0] = GCCoreUtil.translate("gui.cargorocket.status.launched.0");
spltString[1] = GCCoreUtil.translate("gui.cargorocket.status.launched.1");
this.launchButton.enabled = false;
}
}
else
{
spltString = this.rocket.statusMessage.split("#");
colour = this.rocket.statusColour;
}
int y = 2;
for (String splitString : spltString)
{
this.fontRendererObj.drawString(colour + splitString, 35 - this.fontRendererObj.getStringWidth(splitString) / 2, 9 * y, 4210752);
y++;
}
if (this.rocket.statusValid && this.rocket.statusMessageCooldown > 0 && this.rocket.statusMessageCooldown < 4)
{
this.mc.displayGuiScreen(null);
}
}
@Override
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
{
this.mc.getTextureManager().bindTexture(GuiCargoRocket.rocketTextures[(this.rocketType.getInventorySpace() - 2) / 18]);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
final int var5 = (this.width - this.xSize) / 2;
final int var6 = (this.height - this.ySize) / 2;
this.drawTexturedModalRect(var5, var6, 0, 0, 176, this.ySize);
final int fuelLevel = this.rocket.getScaledFuelLevel(38);
this.drawTexturedModalRect((this.width - this.xSize) / 2 + (this.rocket.rocketType.getInventorySpace() == 2 ? 71 : 72), (this.height - this.ySize) / 2 + 45 - fuelLevel, 176, 38 - fuelLevel, 42, fuelLevel);
}
}