| package calclavia.lib.gui; |
| |
| 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); |
| } |
| } |