package net.tropicraft.client.tileentity;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.tropicraft.block.tileentity.TileEntityPurchasePlate;
import net.tropicraft.economy.ItemEntry;
import net.tropicraft.economy.ItemValues;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.client.FMLClientHandler;
public class TileEntityPurchasePlateRenderer extends TileEntitySpecialRenderer
{
/**
* Hash map of the entities that the mob spawner has rendered/rendering spinning inside of them
*/
private Map entityHashMap = new HashMap();
public long lifeTick = 0;
public long lastWorldTick = 0;
public TileEntityPurchasePlateRenderer() {
lifeTick = 0;//rand.nextInt(20);
}
public void renderTileEntityMobSpawner(TileEntityPurchasePlate par1TileEntityMobSpawner, double par2, double par4, double par6, float par8)
{
/*if (ZCGame.instance() != null && ZCGame.instance().mapMan != null && ZCGame.instance().mapMan.editMode && ZCGame.instance().mapMan.infoOverlay) {
}*/
if (par1TileEntityMobSpawner.tradeState == 1) {
if (par1TileEntityMobSpawner.showToolTip) {
renderLivingLabel("Offer Items: right click koa with item", par2+0.5F, par4 + 0.9F, par6+0.5F, 0);
renderLivingLabel("Cycle Items: right click plate", par2+0.5F, par4 + 0.8F, par6+0.5F, 0);
renderLivingLabel("Buy Item: left click plate", par2+0.5F, par4 + 0.7F, par6+0.5F, 0);
}
//Item item = ItemValues.g.getItemBuyable(par1TileEntityMobSpawner.itemIndex);
String name = "???";
//if (item != null) {
ItemEntry ie = ItemValues.itemsBuyable.get(par1TileEntityMobSpawner.itemIndex);
ItemStack is = ie.item;
if (is != null) {
name = is.getDisplayName();// + " x" + ValuedItems.getBuyItemCount(item);//ValuedItems.getItemBuyable(par1TileEntityMobSpawner.itemIndex).getItemName();
if (is.stackSize > 1) {
name += " x" + is.stackSize;
}
if (name.startsWith("item.")) name = name.substring(5);
renderLivingLabel("" + name, par2+0.5F, par4 + 0.45F, par6+0.5F, 0);
}
//}
//renderLivingLabel("cost: " + ValuedItems.getBuyableItemCostByIndex(par1TileEntityMobSpawner.itemIndex), par2+0.5F, par4 + 0.0F, par6+0.5F, 0);
} else if (par1TileEntityMobSpawner.tradeState == 2) {
renderLivingLabel("Confirm Trade", par2+0.5F, par4 + 0.45F, par6+0.5F, 0);
}
if (par1TileEntityMobSpawner.tradeState > 0) {
renderBanner(par1TileEntityMobSpawner, par2, par4, par6, par8);
if (lastWorldTick != par1TileEntityMobSpawner.getWorldObj().getWorldTime()) {
lastWorldTick = par1TileEntityMobSpawner.getWorldObj().getWorldTime();
lifeTick += 1F + (0.5F * FMLClientHandler.instance().getClient().thePlayer.getDistance(par1TileEntityMobSpawner.xCoord, par1TileEntityMobSpawner.yCoord, par1TileEntityMobSpawner.zCoord) / 2);
/*if (lifeTick >= 20) {
lifeTick = 0;
}*/
//System.out.println(FMLClientHandler.instance().getClient().thePlayer.getDistance(par1TileEntityMobSpawner.xCoord, par1TileEntityMobSpawner.yCoord, par1TileEntityMobSpawner.zCoord) / 2);
par1TileEntityMobSpawner.angle += 1F;
if (par1TileEntityMobSpawner.angle >= 360F) par1TileEntityMobSpawner.angle -= 360F;
}
renderEntityItem2(par1TileEntityMobSpawner, par2, par4, par6, par8);
}
//GL11.glPushMatrix();
//GL11.glTranslatef((float)par2 + 0.5F, (float)par4, (float)par6 + 0.5F);
/*Entity var9 = (Entity)this.entityHashMap.get(par1TileEntityMobSpawner.getMobID());
if (var9 == null)
{
var9 = EntityList.createEntityInWorld(par1TileEntityMobSpawner.getMobID(), (World)null);
this.entityHashMap.put(par1TileEntityMobSpawner.getMobID(), var9);
}
if (var9 != null)
{
var9.setWorld(par1TileEntityMobSpawner.worldObj);
float var10 = 0.4375F;
GL11.glTranslatef(0.0F, 0.4F, 0.0F);
GL11.glRotatef((float)(par1TileEntityMobSpawner.yaw2 + (par1TileEntityMobSpawner.yaw - par1TileEntityMobSpawner.yaw2) * (double)par8) * 10.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F);
GL11.glTranslatef(0.0F, -0.4F, 0.0F);
GL11.glScalef(var10, var10, var10);
var9.setLocationAndAngles(par2, par4, par6, 0.0F, 0.0F);
RenderManager.instance.renderEntityWithPosYaw(var9, 0.0D, 0.0D, 0.0D, 0.0F, par8);
}*/
//GL11.glPopMatrix();
}
public void renderEntityItem2(TileEntityPurchasePlate par1TileEntityMobSpawner, double par2, double par4, double par6, float par8) {
GL11.glPushMatrix();
float var10 = 0.3F;
float yOffset = MathHelper.sin(((float)lifeTick + par8) / 10.0F + par1TileEntityMobSpawner.startOffset) * 0.03F + 0.0F;
GL11.glTranslatef((float)par2 + 0.5F, (float)par4 - 0.1F + yOffset + 0.75F * var10, (float)par6 + 0.5F);
float var12 = (((float)lifeTick + par8) / 20.0F + par1TileEntityMobSpawner.startOffset) * (180F / (float)Math.PI);
GL11.glRotatef(-var12, 0.0F, 1.0F, 0.0F);
//GL11.glRotatef(45F, 0.0F, 0.0F, 1.0F);
float var11 = var12;//par1TileEntityMobSpawner.angle;//(float)(1F * 360) / 16.0F;
//GL11.glRotatef(-var11, 0.0F, 1.0F, 0.0F);
//GL11.glRotatef((((float)lifeTick + par8) / 20.0F + par1TileEntityMobSpawner.startOffset) * (180F / (float)Math.PI), 1.0F, 0.0F, 0.0F);
GL11.glScalef(var10, var10, var10);
ItemStack is = ItemValues.itemsBuyable.get(par1TileEntityMobSpawner.itemIndex).item;
if (is != null) {
RenderManager.instance.itemRenderer.renderItem(FMLClientHandler.instance().getClient().thePlayer, is, 0);
} else {
System.out.println("tropicraft tradeblock renderable item is null, bug? itemindex: " + par1TileEntityMobSpawner.itemIndex);
}
GL11.glPopMatrix();
}
public void renderEntityItem() {
GL11.glPushMatrix();
GL11.glTranslatef(0.0F, 1.0F, 0.0F);
float scale = 0.0078125F;
GL11.glScalef(scale, scale, scale);
GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
ResourceLocation res = new ResourceLocation("textures/map/map_background.png");
Minecraft.getMinecraft().renderEngine.bindTexture(res);
Tessellator tessellator = Tessellator.instance;
GL11.glNormal3f(0.0F, 0.0F, -1.0F);
tessellator.startDrawingQuads();
byte margin = 7;
tessellator.addVertexWithUV((double)(0 - margin), (double)(128 + margin), 0.0D, 0.0D, 1.0D);
tessellator.addVertexWithUV((double)(128 + margin), (double)(128 + margin), 0.0D, 1.0D, 1.0D);
tessellator.addVertexWithUV((double)(128 + margin), (double)(0 - margin), 0.0D, 1.0D, 0.0D);
tessellator.addVertexWithUV((double)(0 - margin), (double)(0 - margin), 0.0D, 0.0D, 0.0D);
tessellator.draw();
//MapData data = Item.map.getMapData(entity.item, ModLoader.getMinecraftInstance().theWorld);
//this.mapRenderer.renderMap(mod_ZombieCraft.mc.thePlayer, mod_ZombieCraft.mc.renderEngine, data);
GL11.glPopMatrix();
}
public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8)
{
this.renderTileEntityMobSpawner((TileEntityPurchasePlate)par1TileEntity, par2, par4, par6, par8);
}
protected void renderBanner(TileEntityPurchasePlate par1TileEntityMobSpawner, double par3, double par5, double par7, float par8) {
String par2Str = "Credit: " + par1TileEntityMobSpawner.credit;
String par2Str2 = "Cost: " + ItemValues.itemsBuyable.get(par1TileEntityMobSpawner.itemIndex).value;
FontRenderer var11 = RenderManager.instance.getFontRenderer();
float var12 = 1.2F;
float var13 = 0.016F * var12;
float angle;
float x = 0.5F;
float z = 0.0F;
for (angle = -180; angle <= 90; angle += 90) {
x = z = 0F;
if (angle == -180) {
z = 0.501F;
} else if (angle == -90) {
x = 0.501F;
} else if (angle == 0) {
z = -0.501F;
} else if (angle == 90) {
x = -0.501F;
}
//Mmmmm copypasta
//Cost
GL11.glPushMatrix();
GL11.glTranslatef((float)par3 + 0.5F + x, (float)par5 - 0.1F, (float)par7 + 0.5F + z);
GL11.glNormal3f(0.0F, 1.0F, 0.0F);
GL11.glRotatef(angle, 0.0F, 1.0F, 0.0F);
//GL11.glRotatef(-RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
//GL11.glRotatef(RenderManager.instance.playerViewX, 1.0F, 0.0F, 0.0F);
GL11.glScalef(-var13, -var13, var13);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDepthMask(false);
//GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
Tessellator var14 = Tessellator.instance;
byte var15 = 0;
GL11.glDisable(GL11.GL_TEXTURE_2D);
var14.startDrawingQuads();
int var16 = var11.getStringWidth(par2Str2) / 2;
var14.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F);
var14.addVertex((double)(-var16 - 1), (double)(-1 + var15), 0.0D);
var14.addVertex((double)(-var16 - 1), (double)(8 + var15), 0.0D);
var14.addVertex((double)(var16 + 1), (double)(8 + var15), 0.0D);
var14.addVertex((double)(var16 + 1), (double)(-1 + var15), 0.0D);
var14.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D);
var11.drawString(par2Str2, -var11.getStringWidth(par2Str2) / 2, var15, 553648127);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(true);
var11.drawString(par2Str2, -var11.getStringWidth(par2Str2) / 2, var15, -1);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_BLEND);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glPopMatrix();
//Credit
GL11.glPushMatrix();
GL11.glTranslatef((float)par3 + 0.5F + x, (float)par5 - 0.3F, (float)par7 + 0.5F + z);
GL11.glNormal3f(0.0F, 1.0F, 0.0F);
GL11.glRotatef(angle, 0.0F, 1.0F, 0.0F);
//GL11.glRotatef(-RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
//GL11.glRotatef(RenderManager.instance.playerViewX, 1.0F, 0.0F, 0.0F);
GL11.glScalef(-var13, -var13, var13);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDepthMask(false);
//GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
var14 = Tessellator.instance;
var15 = 0;
GL11.glDisable(GL11.GL_TEXTURE_2D);
var14.startDrawingQuads();
var16 = var11.getStringWidth(par2Str) / 2;
var14.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F);
var14.addVertex((double)(-var16 - 1), (double)(-1 + var15), 0.0D);
var14.addVertex((double)(-var16 - 1), (double)(8 + var15), 0.0D);
var14.addVertex((double)(var16 + 1), (double)(8 + var15), 0.0D);
var14.addVertex((double)(var16 + 1), (double)(-1 + var15), 0.0D);
var14.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D);
var11.drawString(par2Str, -var11.getStringWidth(par2Str) / 2, var15, 553648127);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(true);
var11.drawString(par2Str, -var11.getStringWidth(par2Str) / 2, var15, -1);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_BLEND);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glPopMatrix();
}
}
protected void renderLivingLabel(String par2Str, double par3, double par5, double par7, int par9)
{
//float var10 = par1EntityLiving.getDistanceToEntity(this.renderManager.livingPlayer);
//GL11.glPushMatrix();
//FMLClientHandler.instance().getClient().fontRenderer.drawString("test", 10, 10, 5);
//GL11.glPopMatrix();
//if (true) return;
//if (var10 <= (float)par9)
//{
FontRenderer var11 = RenderManager.instance.getFontRenderer();
float var12 = 0.8F;
float var13 = 0.016666668F * var12;
GL11.glPushMatrix();
GL11.glTranslatef((float)par3 + 0.0F, (float)par5 + 0.2F, (float)par7);
GL11.glNormal3f(0.0F, 1.0F, 0.0F);
GL11.glRotatef(-RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(RenderManager.instance.playerViewX, 1.0F, 0.0F, 0.0F);
GL11.glScalef(-var13, -var13, var13);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDepthMask(false);
//GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
Tessellator var14 = Tessellator.instance;
byte var15 = 0;
GL11.glDisable(GL11.GL_TEXTURE_2D);
var14.startDrawingQuads();
int var16 = var11.getStringWidth(par2Str) / 2;
var14.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F);
var14.addVertex((double)(-var16 - 1), (double)(-1 + var15), 0.0D);
var14.addVertex((double)(-var16 - 1), (double)(8 + var15), 0.0D);
var14.addVertex((double)(var16 + 1), (double)(8 + var15), 0.0D);
var14.addVertex((double)(var16 + 1), (double)(-1 + var15), 0.0D);
var14.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D);
var11.drawString(par2Str, -var11.getStringWidth(par2Str) / 2, var15, 553648127);
//GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(true);
var11.drawString(par2Str, -var11.getStringWidth(par2Str) / 2, var15, -1);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_BLEND);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glPopMatrix();
//}
}
}