package org.ultramine.gui;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
public class GuiUtils
{
public static final RenderItem itemRenderer = new RenderItem();
public static void closeGUI()
{
Minecraft.getMinecraft().displayGuiScreen(null);
}
public static void openGUI(IGui gui)
{
Minecraft.getMinecraft().displayGuiScreen(new GuiScreenToGui(gui));
}
private static double zLevel = 0.0F;
public static void drawHorizontalLine(int par1, int par2, int par3, int par4)
{
if (par2 < par1)
{
int var5 = par1;
par1 = par2;
par2 = var5;
}
drawRect(par1, par3, par2 + 1, par3 + 1, par4);
}
public static void drawVerticalLine(int par1, int par2, int par3, int par4)
{
if (par3 < par2)
{
int var5 = par2;
par2 = par3;
par3 = var5;
}
drawRect(par1, par2 + 1, par1 + 1, par3, par4);
}
/**
* Draws a solid color rectangle with the specified coordinates and color.
*/
public static void drawRect(int par1, int par2, int par3, int par4, int par5)
{
int var5;
if (par1 < par3)
{
var5 = par1;
par1 = par3;
par3 = var5;
}
if (par2 < par4)
{
var5 = par2;
par2 = par4;
par4 = var5;
}
float var10 = (float)(par5 >> 24 & 255) / 255.0F;
float var6 = (float)(par5 >> 16 & 255) / 255.0F;
float var7 = (float)(par5 >> 8 & 255) / 255.0F;
float var8 = (float)(par5 & 255) / 255.0F;
Tessellator var9 = Tessellator.instance;
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glColor4f(var6, var7, var8, var10);
var9.startDrawingQuads();
var9.addVertex((double)par1, (double)par4, 0.0D);
var9.addVertex((double)par3, (double)par4, 0.0D);
var9.addVertex((double)par3, (double)par2, 0.0D);
var9.addVertex((double)par1, (double)par2, 0.0D);
var9.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_BLEND);
}
/**
* Draws a rectangle with a vertical gradient between the specified colors.
*/
public static void drawGradientRect(int par1, int par2, int par3, int par4, int par5, int par6)
{
float var7 = (float)(par5 >> 24 & 255) / 255.0F;
float var8 = (float)(par5 >> 16 & 255) / 255.0F;
float var9 = (float)(par5 >> 8 & 255) / 255.0F;
float var10 = (float)(par5 & 255) / 255.0F;
float var11 = (float)(par6 >> 24 & 255) / 255.0F;
float var12 = (float)(par6 >> 16 & 255) / 255.0F;
float var13 = (float)(par6 >> 8 & 255) / 255.0F;
float var14 = (float)(par6 & 255) / 255.0F;
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glShadeModel(GL11.GL_SMOOTH);
Tessellator var15 = Tessellator.instance;
var15.startDrawingQuads();
var15.setColorRGBA_F(var8, var9, var10, var7);
var15.addVertex((double)par3, (double)par2, zLevel);
var15.addVertex((double)par1, (double)par2, zLevel);
var15.setColorRGBA_F(var12, var13, var14, var11);
var15.addVertex((double)par1, (double)par4, zLevel);
var15.addVertex((double)par3, (double)par4, zLevel);
var15.draw();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
/**
* Draws a textured rectangle at the stored z-value. Args: x, y, u, v, width, height
*/
public static void drawTexturedModalRect(int par1, int par2, int par3, int par4, int par5, int par6)
{
float var7 = 0.00390625F;
float var8 = 0.00390625F;
Tessellator var9 = Tessellator.instance;
var9.startDrawingQuads();
var9.addVertexWithUV((double)(par1 + 0), (double)(par2 + par6), zLevel, (double)((float)(par3 + 0) * var7), (double)((float)(par4 + par6) * var8));
var9.addVertexWithUV((double)(par1 + par5), (double)(par2 + par6), zLevel, (double)((float)(par3 + par5) * var7), (double)((float)(par4 + par6) * var8));
var9.addVertexWithUV((double)(par1 + par5), (double)(par2 + 0), zLevel, (double)((float)(par3 + par5) * var7), (double)((float)(par4 + 0) * var8));
var9.addVertexWithUV((double)(par1 + 0), (double)(par2 + 0), zLevel, (double)((float)(par3 + 0) * var7), (double)((float)(par4 + 0) * var8));
var9.draw();
}
public static void drawTexturedModelRectFromIcon(int par1, int par2, IIcon par3Icon, int par4, int par5)
{
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)(par1 + 0), (double)(par2 + par5), zLevel, (double)par3Icon.getMinU(), (double)par3Icon.getMaxV());
tessellator.addVertexWithUV((double)(par1 + par4), (double)(par2 + par5), zLevel, (double)par3Icon.getMaxU(), (double)par3Icon.getMaxV());
tessellator.addVertexWithUV((double)(par1 + par4), (double)(par2 + 0), zLevel, (double)par3Icon.getMaxU(), (double)par3Icon.getMinV());
tessellator.addVertexWithUV((double)(par1 + 0), (double)(par2 + 0), zLevel, (double)par3Icon.getMinU(), (double)par3Icon.getMinV());
tessellator.draw();
}
public static void drawString(String str, int x, int y, int color)
{
Minecraft.getMinecraft().fontRenderer.drawStringWithShadow(str, x, y, color);
}
public static void drawCenteredString(FontRenderer fr, String str, int x, int y, int color)
{
fr.drawString(str, x - fr.getStringWidth(str) / 2, y, color);
}
public static void drawCenteredString(String str, int x, int y, int color)
{
drawCenteredString(Minecraft.getMinecraft().fontRenderer, str, x, y, color);
}
public static void drawDefaultBackground(int width, int height)
{
drawGradientRect(0, 0, width, height, -1072689136, -804253680);
}
public static void drawHoveringText(List<String> lines, int x, int y, FontRenderer font, int width, int height)
{
if (!lines.isEmpty())
{
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_DEPTH_TEST);
int k = 0;
for(String s : lines)
{
int l = font.getStringWidth(s);
if (l > k)
{
k = l;
}
}
int j2 = x + 12;
int k2 = y - 12;
int i1 = 8;
if (lines.size() > 1)
{
i1 += 2 + (lines.size() - 1) * 10;
}
if (j2 + k > width)
{
j2 -= 28 + k;
}
if (k2 + i1 + 6 > height)
{
k2 = height - i1 - 6;
}
zLevel = 300.0F;
itemRenderer.zLevel = 300.0F;
int j1 = -267386864;
drawGradientRect(j2 - 3, k2 - 4, j2 + k + 3, k2 - 3, j1, j1);
drawGradientRect(j2 - 3, k2 + i1 + 3, j2 + k + 3, k2 + i1 + 4, j1, j1);
drawGradientRect(j2 - 3, k2 - 3, j2 + k + 3, k2 + i1 + 3, j1, j1);
drawGradientRect(j2 - 4, k2 - 3, j2 - 3, k2 + i1 + 3, j1, j1);
drawGradientRect(j2 + k + 3, k2 - 3, j2 + k + 4, k2 + i1 + 3, j1, j1);
int k1 = 1347420415;
int l1 = (k1 & 16711422) >> 1 | k1 & -16777216;
drawGradientRect(j2 - 3, k2 - 3 + 1, j2 - 3 + 1, k2 + i1 + 3 - 1, k1, l1);
drawGradientRect(j2 + k + 2, k2 - 3 + 1, j2 + k + 3, k2 + i1 + 3 - 1, k1, l1);
drawGradientRect(j2 - 3, k2 - 3, j2 + k + 3, k2 - 3 + 1, k1, k1);
drawGradientRect(j2 - 3, k2 + i1 + 2, j2 + k + 3, k2 + i1 + 3, l1, l1);
for (int i2 = 0; i2 < lines.size(); ++i2)
{
String s1 = (String)lines.get(i2);
font.drawStringWithShadow(s1, j2, k2, -1);
if (i2 == 0)
{
k2 += 2;
}
k2 += 10;
}
zLevel = 0.0F;
itemRenderer.zLevel = 0.0F;
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_DEPTH_TEST);
RenderHelper.enableStandardItemLighting();
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
}
}
public static void drawToolTip(ItemStack is, int x, int y, int width, int height)
{
@SuppressWarnings("unchecked")
List<String> lines = is.getTooltip(Minecraft.getMinecraft().thePlayer, Minecraft.getMinecraft().gameSettings.advancedItemTooltips);
drawToolTip(is, lines, x, y, width, height);
}
public static void drawToolTip(ItemStack is, List<String> lines, int x, int y, int width, int height)
{
for (int k = 0; k < lines.size(); ++k)
{
if (k == 0)
{
lines.set(k, is.getRarity().rarityColor + (String) lines.get(k));
}
else
{
lines.set(k, EnumChatFormatting.GRAY + (String) lines.get(k));
}
}
FontRenderer font1 = is.getItem().getFontRenderer(is);
drawHoveringText(lines, x, y, (font1 == null ? Minecraft.getMinecraft().fontRenderer : font1), width, height);
}
}