package resonantinduction.old.client.render;

import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer;

import org.lwjgl.opengl.GL11;

import resonantinduction.core.Reference;
import resonantinduction.old.client.model.ModelMiningLaserGun;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class RenderMiningLaserGun implements IItemRenderer
{

	private static final ModelMiningLaserGun MODEL = new ModelMiningLaserGun();
	private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + "LaserGun.png");

	@Override
	public boolean handleRenderType(ItemStack item, ItemRenderType type)
	{
		return true;
	}

	@Override
	public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
	{
		return true;
	}

	@Override
	public void renderItem(ItemRenderType type, ItemStack item, Object... data)
	{
		GL11.glPushMatrix();

		FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE);

		if (type == ItemRenderType.EQUIPPED_FIRST_PERSON)
		{
			float scale = 3f;

			if (Minecraft.getMinecraft().thePlayer.getItemInUse() != item)
			{
				GL11.glScalef(scale, scale, scale);
				GL11.glTranslatef(0, 1.5f, .5f);
				GL11.glRotatef(180, 0, 0, 1);
				GL11.glRotatef(30, 0, 1, 0);
				GL11.glRotatef(10, 1, 0, 0);
			}
			else
			{
				scale = 8f;
				GL11.glScalef(scale, scale, scale);
				GL11.glTranslatef(-.01f, 1.0f, .8f);
				GL11.glRotatef(180, 0, 0, 1);
				GL11.glRotatef(40, 0, 1, 0);
				GL11.glRotatef(-20, 1, 0, 0);
			}
		}
		else if (type == ItemRenderType.EQUIPPED)
		{
			float scale = 3f;
			GL11.glScalef(scale, scale, scale);
			GL11.glRotatef(-105, 0, 0, 1);
			GL11.glRotatef(-70, 0, 1, 0);
			GL11.glTranslatef(0.3f, -0.9f, 0.42f);
		}
		else if (type == ItemRenderType.INVENTORY)
		{
			float scale = 2f;
			GL11.glScalef(scale, scale, scale);
			GL11.glRotatef(180, 0, 0, 1);
			GL11.glRotatef(-70, 0, 1, 0);
			GL11.glTranslatef(-0.07f, -1.2f, 0.52f);
		}
		MODEL.render(0.0625F);

		GL11.glPopMatrix();
	}
}
