197 lines
4.9 KiB
Java
197 lines
4.9 KiB
Java
|
package universalelectricity.prefab;
|
||
|
|
||
|
import net.minecraft.client.gui.GuiScreen;
|
||
|
import net.minecraft.client.renderer.OpenGlHelper;
|
||
|
import net.minecraft.client.renderer.RenderHelper;
|
||
|
|
||
|
import org.lwjgl.opengl.GL11;
|
||
|
import org.lwjgl.opengl.GL12;
|
||
|
|
||
|
import cpw.mods.fml.relauncher.Side;
|
||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||
|
|
||
|
@SideOnly(Side.CLIENT)
|
||
|
public abstract class GuiBase extends GuiScreen
|
||
|
{
|
||
|
/**
|
||
|
* The X size of the inventory window in pixels.
|
||
|
*/
|
||
|
protected int xSize = 176;
|
||
|
|
||
|
/**
|
||
|
* The Y size of the inventory window in pixels.
|
||
|
*/
|
||
|
protected int ySize = 166;
|
||
|
|
||
|
/**
|
||
|
* Starting X position for the Gui. Inconsistent use for Gui backgrounds.
|
||
|
*/
|
||
|
protected int guiLeft;
|
||
|
|
||
|
/**
|
||
|
* Starting Y position for the Gui. Inconsistent use for Gui backgrounds.
|
||
|
*/
|
||
|
protected int guiTop;
|
||
|
|
||
|
/**
|
||
|
* Adds the buttons (and other controls) to the screen in question.
|
||
|
*/
|
||
|
@Override
|
||
|
public void initGui()
|
||
|
{
|
||
|
super.initGui();
|
||
|
this.guiLeft = (this.width - this.xSize) / 2;
|
||
|
this.guiTop = (this.height - this.ySize) / 2;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Draws the screen and all the components in it.
|
||
|
*/
|
||
|
@Override
|
||
|
public void drawScreen(int par1, int par2, float par3)
|
||
|
{
|
||
|
this.drawDefaultBackground();
|
||
|
int var4 = this.guiLeft;
|
||
|
int var5 = this.guiTop;
|
||
|
this.drawBackgroundLayer(par1, par2, par3);
|
||
|
GL11.glPushMatrix();
|
||
|
GL11.glTranslatef(var4, var5, 0.0F);
|
||
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||
|
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||
|
short var7 = 240;
|
||
|
short var8 = 240;
|
||
|
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, var7 / 1.0F, var8 / 1.0F);
|
||
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||
|
|
||
|
this.drawForegroundLayer(par1, par2, par3);
|
||
|
|
||
|
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
|
||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||
|
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||
|
|
||
|
GL11.glPopMatrix();
|
||
|
super.drawScreen(par1, par2, par3);
|
||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||
|
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Draws the foreground layer for the GUI
|
||
|
*/
|
||
|
protected abstract void drawForegroundLayer(int var2, int var3, float var1);
|
||
|
|
||
|
/**
|
||
|
* Draws the background layer for the GUI
|
||
|
*/
|
||
|
|
||
|
protected abstract void drawBackgroundLayer(int var2, int var3, float var1);
|
||
|
|
||
|
/**
|
||
|
* Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
|
||
|
*/
|
||
|
@Override
|
||
|
protected void keyTyped(char x, int y)
|
||
|
{
|
||
|
if (y == 1 || y == this.mc.gameSettings.keyBindInventory.keyCode)
|
||
|
{
|
||
|
this.mc.thePlayer.closeScreen();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns true if this GUI should pause the game when it is displayed in single-player
|
||
|
*/
|
||
|
@Override
|
||
|
public boolean doesGuiPauseGame()
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Called from the main game loop to update the screen.
|
||
|
*/
|
||
|
@Override
|
||
|
public void updateScreen()
|
||
|
{
|
||
|
super.updateScreen();
|
||
|
|
||
|
if (!this.mc.thePlayer.isEntityAlive() || this.mc.thePlayer.isDead)
|
||
|
{
|
||
|
this.mc.thePlayer.closeScreen();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void drawTooltip(int x, int y, String... toolTips)
|
||
|
{
|
||
|
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
|
||
|
RenderHelper.disableStandardItemLighting();
|
||
|
GL11.glDisable(GL11.GL_LIGHTING);
|
||
|
GL11.glDisable(GL11.GL_DEPTH_TEST);
|
||
|
|
||
|
if (toolTips != null)
|
||
|
{
|
||
|
int var5 = 0;
|
||
|
int var6;
|
||
|
int var7;
|
||
|
|
||
|
for (var6 = 0; var6 < toolTips.length; ++var6)
|
||
|
{
|
||
|
var7 = this.fontRenderer.getStringWidth(toolTips[var6]);
|
||
|
|
||
|
if (var7 > var5)
|
||
|
{
|
||
|
var5 = var7;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var6 = x + 12;
|
||
|
var7 = y - 12;
|
||
|
int var9 = 8;
|
||
|
|
||
|
if (toolTips.length > 1)
|
||
|
{
|
||
|
var9 += 2 + (toolTips.length - 1) * 10;
|
||
|
}
|
||
|
|
||
|
if (this.guiTop + var7 + var9 + 6 > this.height)
|
||
|
{
|
||
|
var7 = this.height - var9 - this.guiTop - 6;
|
||
|
}
|
||
|
|
||
|
this.zLevel = 300.0F;
|
||
|
int var10 = -267386864;
|
||
|
this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var10, var10);
|
||
|
this.drawGradientRect(var6 - 3, var7 + var9 + 3, var6 + var5 + 3, var7 + var9 + 4, var10, var10);
|
||
|
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var9 + 3, var10, var10);
|
||
|
this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var10, var10);
|
||
|
this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var7 + var9 + 3, var10, var10);
|
||
|
int var11 = 1347420415;
|
||
|
int var12 = (var11 & 16711422) >> 1 | var11 & -16777216;
|
||
|
this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1, var7 + var9 + 3 - 1, var11, var12);
|
||
|
this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, var7 + var9 + 3 - 1, var11, var12);
|
||
|
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var11, var11);
|
||
|
this.drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3, var7 + var9 + 3, var12, var12);
|
||
|
|
||
|
for (int var13 = 0; var13 < toolTips.length; ++var13)
|
||
|
{
|
||
|
String var14 = toolTips[var13];
|
||
|
|
||
|
this.fontRenderer.drawStringWithShadow(var14, var6, var7, -1);
|
||
|
|
||
|
if (var13 == 0)
|
||
|
{
|
||
|
var7 += 2;
|
||
|
}
|
||
|
|
||
|
var7 += 10;
|
||
|
}
|
||
|
|
||
|
this.zLevel = 0.0F;
|
||
|
}
|
||
|
|
||
|
GL11.glEnable(GL11.GL_DEPTH_TEST);
|
||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||
|
RenderHelper.enableGUIStandardItemLighting();
|
||
|
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||
|
}
|
||
|
}
|