package pneumaticCraft.client.render.pneumaticArmor;
import java.util.List;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
import pneumaticCraft.common.item.ItemPneumaticArmor;
import pneumaticCraft.common.util.PneumaticCraftUtils;
import cpw.mods.fml.client.FMLClientHandler;
public class RenderSearchItemBlock{
int blockX;
int blockY;
int blockZ;
World world;
public RenderSearchItemBlock(World world, int x, int y, int z){
this.world = world;
blockX = x;
blockY = y;
blockZ = z;
}
private int getSearchedItemCount(){
if(world.getTileEntity(blockX, blockY, blockZ) instanceof IInventory) {
int itemCount = 0;
IInventory inventory = (IInventory)world.getTileEntity(blockX, blockY, blockZ);
ItemStack searchStack = ItemPneumaticArmor.getSearchedStack(FMLClientHandler.instance().getClient().thePlayer.getCurrentArmor(3));
if(searchStack == null) return 0;
for(int l = 0; l < inventory.getSizeInventory(); l++) {
if(inventory.getStackInSlot(l) != null) {
itemCount += getSearchedItemCount(inventory.getStackInSlot(l), searchStack);
}
}
return itemCount;
}
return 0;
}
public static int getSearchedItemCount(ItemStack stack, ItemStack searchStack){
int itemCount = 0;
if(stack.isItemEqual(searchStack)) {
itemCount += stack.stackSize;
}
List<ItemStack> inventoryItems = PneumaticCraftUtils.getStacksInItem(stack);
for(ItemStack s : inventoryItems) {
itemCount += getSearchedItemCount(s, searchStack);
}
return itemCount;
}
public boolean isAlreadyTrackingCoord(int x, int y, int z){
return blockX == x && blockY == y && blockZ == z;
}
public boolean renderSearchBlock(int totalCount){
int itemCount = getSearchedItemCount();
renderSearch(blockX + 0.5D, blockY + 0.5D, blockZ + 0.5D, itemCount, totalCount);
return itemCount > 0;
}
public static void renderSearch(double x, double y, double z, int itemCount, int totalCount){
GL11.glPushMatrix();
GL11.glTranslated(x, y, z);
GL11.glColor4d(0, 1, 0, 0.5D);
GL11.glRotatef(180.0F - RenderManager.instance.playerViewY, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(180.0F - RenderManager.instance.playerViewX, 1.0F, 0.0F, 0.0F);
// GL11.glLineWidth(1.0F);
double ratio = (double)itemCount / totalCount;
double diff = (1 - ratio) / 1.5D;
double size = 1 - diff;
/*
for(double i = size; i > 0; i -= 0.06D) {
GL11.glPushMatrix();
GL11.glScaled(i, i, i);
renderCircle();
GL11.glPopMatrix();
}
*/
Tessellator tess = Tessellator.instance;
tess.startDrawing(GL11.GL_QUADS);
tess.addVertexWithUV(-size, size, 0, 0, 1);
tess.addVertexWithUV(-size, -size, 0, 0, 0);
tess.addVertexWithUV(size, -size, 0, 1, 0);
tess.addVertexWithUV(size, size, 0, 1, 1);
tess.draw();
GL11.glPopMatrix();
}
/*
private static void renderCircle(){
Tessellator tess = Tessellator.instance;
tess.startDrawing(GL11.GL_POLYGON);
for(int i = 0; i < PneumaticCraftUtils.circlePoints; i++) {
tess.addVertex(PneumaticCraftUtils.sin[i], PneumaticCraftUtils.cos[i], 0);
}
tess.draw();
}
*/
}