package portables.client.gui;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import portables.common.core.CommonProxy;
import portables.common.entity.CustomEntityFallingSand;
import portables.common.util.Util;
@SideOnly(Side.CLIENT)
public class GuiPortableBlock extends GuiScreen
{
public static ResourceLocation texture = new ResourceLocation("simpleportables", "textures/gui/guiRemote.png");
public final int xSizeOfTexture = 176;
public final int ySizeOfTexture = 167;
private static float yaw;
private static float roll;
private static boolean rollDown;
public GuiPortableBlock()
{
}
@Override
public void drawScreen(int par1, int par2, float par3)
{
drawDefaultBackground();
int x = (this.width - xSizeOfTexture) / 2;
int y = (this.height - ySizeOfTexture) / 2;
ItemStack currentItem = Minecraft.getMinecraft().thePlayer.getCurrentEquippedItem();
GuiButton button = (GuiButton) buttonList.get(1);
GuiButton button1 = (GuiButton) buttonList.get(2);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(texture);
drawTexturedModalRect(x, y, 0, 0, xSizeOfTexture, ySizeOfTexture);
if (currentItem != null)
{
if (Item.getIdFromItem(currentItem.getItem()) == Item.getIdFromItem(CommonProxy.portableBlock))
{
if (currentItem.stackTagCompound.getCompoundTag("info").getBoolean("linked"))
{
renderSolidBlock(x, y, currentItem.stackTagCompound.getCompoundTag("info").getInteger("blockID"), Block.getBlockById(currentItem.stackTagCompound.getCompoundTag("info").getInteger("blockID")));
drawInformation(currentItem, x, y);
}
if (currentItem.stackTagCompound.getCompoundTag("info").hasKey("locked"))
{
button.visible = false;
button1.visible = true;
} else
{
button.visible = true;
button1.visible = false;
}
}
}
super.drawScreen(par1, par2, par3);
}
@Override
public boolean doesGuiPauseGame()
{
return false;
}
@Override
protected void keyTyped(char par1, int par2)
{
if (par2 == 1 || par2 == this.mc.gameSettings.keyBindInventory.getKeyCode())
{
this.mc.thePlayer.closeScreen();
}
}
@SuppressWarnings("unchecked")
@Override
public void initGui()
{
int x = (this.width - xSizeOfTexture) / 2;
int y = (this.height - ySizeOfTexture) / 2;
buttonList.clear();
buttonList.add(new GuiButton(0, x + 10, y + 135, 100, 20, "Remove Connection"));
buttonList.add(new GuiButton(1, x + 115, y + 135, 50, 20, "Lock"));
buttonList.add(new GuiButton(2, x + 115, y + 135, 50, 20, "Unlock"));
}
@Override
protected void actionPerformed(GuiButton button)
{
switch (button.id)
{
case 0:
Util.sendModPacket(4);
break;
case 1:
Util.sendModPacket(5);
break;
case 2:
Util.sendModPacket(6);
break;
}
}
public static void renderSolidBlock(int x, int y, int id, Block block)
{
CustomEntityFallingSand entity = new CustomEntityFallingSand(Minecraft.getMinecraft().theWorld, 0, 0, 0, block, id);
GL11.glPushMatrix();
GL11.glTranslatef(x + 90, y + 65, 100);
float scale = 60F;
GL11.glScalef(-scale, scale, scale);
RenderHelper.enableStandardItemLighting();
GL11.glRotatef(180, 0, 0, 1);
GL11.glRotatef(roll, 1, 0, 0);
GL11.glRotatef(yaw, 0, 1, 0);
RenderManager.instance.renderEntityWithPosYaw(entity, 0, 0, 0, 0, 0);
RenderHelper.disableStandardItemLighting();
GL11.glPopMatrix();
yaw += 0.5F;
if (rollDown)
{
roll -= 0.05F;
if (roll < -5)
{
rollDown = false;
roll = -5;
}
} else
{
roll += 0.05F;
if (roll > 25)
{
rollDown = true;
roll = 25;
}
}
}
public void drawInformation(ItemStack item, int x, int y)
{
if (item.stackTagCompound.getCompoundTag("info").getString("blockName") != null)
{
drawCenteredString(Minecraft.getMinecraft().fontRenderer, item.stackTagCompound.getCompoundTag("info").getString("blockName"), x + 90, y + 5, 0x404040);
}
drawCenteredString(Minecraft.getMinecraft().fontRenderer, "X:" + item.stackTagCompound.getCompoundTag("info").getInteger("tileX") + " Y:" + item.stackTagCompound.getCompoundTag("info").getInteger("tileY") + " Z:" + item.stackTagCompound.getCompoundTag("info").getInteger("tileZ"), x + 90, y + 124, 0x404040);
}
public void drawCenteredString(FontRenderer par1FontRenderer, String xStr, int y, int z, int par5)
{
par1FontRenderer.drawString(xStr, y - par1FontRenderer.getStringWidth(xStr) / 2, z, par5);
}
}