package net.minecraft.client.gui;
import com.google.common.collect.Maps;
import java.util.Iterator;
import java.util.Map;
import net.minecraft.block.material.MapColor;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.texture.DynamicTexture;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Vec4b;
import net.minecraft.world.storage.MapData;
public class MapItemRenderer
{
private static final ResourceLocation mapIcons = new ResourceLocation("textures/map/map_icons.png");
private final TextureManager textureManager;
private final Map loadedMaps = Maps.newHashMap();
private static final String __OBFID = "CL_00000663";
public MapItemRenderer(TextureManager p_i45009_1_)
{
this.textureManager = p_i45009_1_;
}
public void func_148246_a(MapData p_148246_1_)
{
this.func_148248_b(p_148246_1_).func_148236_a();
}
public void func_148250_a(MapData p_148250_1_, boolean p_148250_2_)
{
this.func_148248_b(p_148250_1_).func_148237_a(p_148250_2_);
}
private MapItemRenderer.Instance func_148248_b(MapData p_148248_1_)
{
MapItemRenderer.Instance var2 = (MapItemRenderer.Instance)this.loadedMaps.get(p_148248_1_.mapName);
if (var2 == null)
{
var2 = new MapItemRenderer.Instance(p_148248_1_, null);
this.loadedMaps.put(p_148248_1_.mapName, var2);
}
return var2;
}
public void func_148249_a()
{
Iterator var1 = this.loadedMaps.values().iterator();
while (var1.hasNext())
{
MapItemRenderer.Instance var2 = (MapItemRenderer.Instance)var1.next();
this.textureManager.deleteTexture(var2.field_148240_d);
}
this.loadedMaps.clear();
}
class Instance
{
private final MapData field_148242_b;
private final DynamicTexture field_148243_c;
private final ResourceLocation field_148240_d;
private final int[] field_148241_e;
private static final String __OBFID = "CL_00000665";
private Instance(MapData p_i45007_2_)
{
this.field_148242_b = p_i45007_2_;
this.field_148243_c = new DynamicTexture(128, 128);
this.field_148241_e = this.field_148243_c.getTextureData();
this.field_148240_d = MapItemRenderer.this.textureManager.getDynamicTextureLocation("map/" + p_i45007_2_.mapName, this.field_148243_c);
for (int var3 = 0; var3 < this.field_148241_e.length; ++var3)
{
this.field_148241_e[var3] = 0;
}
}
private void func_148236_a()
{
for (int var1 = 0; var1 < 16384; ++var1)
{
int var2 = this.field_148242_b.colors[var1] & 255;
if (var2 / 4 == 0)
{
this.field_148241_e[var1] = (var1 + var1 / 128 & 1) * 8 + 16 << 24;
}
else
{
this.field_148241_e[var1] = MapColor.mapColorArray[var2 / 4].func_151643_b(var2 & 3);
}
}
this.field_148243_c.updateDynamicTexture();
}
private void func_148237_a(boolean p_148237_1_)
{
byte var2 = 0;
byte var3 = 0;
Tessellator var4 = Tessellator.getInstance();
WorldRenderer var5 = var4.getWorldRenderer();
float var6 = 0.0F;
MapItemRenderer.this.textureManager.bindTexture(this.field_148240_d);
GlStateManager.enableBlend();
GlStateManager.tryBlendFuncSeparate(1, 771, 0, 1);
GlStateManager.disableAlpha();
var5.startDrawingQuads();
var5.addVertexWithUV((double)((float)(var2 + 0) + var6), (double)((float)(var3 + 128) - var6), -0.009999999776482582D, 0.0D, 1.0D);
var5.addVertexWithUV((double)((float)(var2 + 128) - var6), (double)((float)(var3 + 128) - var6), -0.009999999776482582D, 1.0D, 1.0D);
var5.addVertexWithUV((double)((float)(var2 + 128) - var6), (double)((float)(var3 + 0) + var6), -0.009999999776482582D, 1.0D, 0.0D);
var5.addVertexWithUV((double)((float)(var2 + 0) + var6), (double)((float)(var3 + 0) + var6), -0.009999999776482582D, 0.0D, 0.0D);
var4.draw();
GlStateManager.enableAlpha();
GlStateManager.disableBlend();
MapItemRenderer.this.textureManager.bindTexture(MapItemRenderer.mapIcons);
int var7 = 0;
Iterator var8 = this.field_148242_b.playersVisibleOnMap.values().iterator();
while (var8.hasNext())
{
Vec4b var9 = (Vec4b)var8.next();
if (!p_148237_1_ || var9.func_176110_a() == 1)
{
GlStateManager.pushMatrix();
GlStateManager.translate((float)var2 + (float)var9.func_176112_b() / 2.0F + 64.0F, (float)var3 + (float)var9.func_176113_c() / 2.0F + 64.0F, -0.02F);
GlStateManager.rotate((float)(var9.func_176111_d() * 360) / 16.0F, 0.0F, 0.0F, 1.0F);
GlStateManager.scale(4.0F, 4.0F, 3.0F);
GlStateManager.translate(-0.125F, 0.125F, 0.0F);
byte var10 = var9.func_176110_a();
float var11 = (float)(var10 % 4 + 0) / 4.0F;
float var12 = (float)(var10 / 4 + 0) / 4.0F;
float var13 = (float)(var10 % 4 + 1) / 4.0F;
float var14 = (float)(var10 / 4 + 1) / 4.0F;
var5.startDrawingQuads();
var5.addVertexWithUV(-1.0D, 1.0D, (double)((float)var7 * 0.001F), (double)var11, (double)var12);
var5.addVertexWithUV(1.0D, 1.0D, (double)((float)var7 * 0.001F), (double)var13, (double)var12);
var5.addVertexWithUV(1.0D, -1.0D, (double)((float)var7 * 0.001F), (double)var13, (double)var14);
var5.addVertexWithUV(-1.0D, -1.0D, (double)((float)var7 * 0.001F), (double)var11, (double)var14);
var4.draw();
GlStateManager.popMatrix();
++var7;
}
}
GlStateManager.pushMatrix();
GlStateManager.translate(0.0F, 0.0F, -0.04F);
GlStateManager.scale(1.0F, 1.0F, 1.0F);
GlStateManager.popMatrix();
}
Instance(MapData p_i45008_2_, Object p_i45008_3_)
{
this(p_i45008_2_);
}
}
}