001 package net.minecraft.client.gui;
002
003 import cpw.mods.fml.relauncher.Side;
004 import cpw.mods.fml.relauncher.SideOnly;
005 import net.minecraft.client.Minecraft;
006 import org.lwjgl.opengl.GL11;
007
008 @SideOnly(Side.CLIENT)
009 public class GuiButton extends Gui
010 {
011 /** Button width in pixels */
012 protected int width;
013
014 /** Button height in pixels */
015 protected int height;
016
017 /** The x position of this control. */
018 public int xPosition;
019
020 /** The y position of this control. */
021 public int yPosition;
022
023 /** The string displayed on this control. */
024 public String displayString;
025
026 /** ID for this control. */
027 public int id;
028
029 /** True if this control is enabled, false to disable. */
030 public boolean enabled;
031
032 /** Hides the button completely if false. */
033 public boolean drawButton;
034 protected boolean field_82253_i;
035
036 public GuiButton(int par1, int par2, int par3, String par4Str)
037 {
038 this(par1, par2, par3, 200, 20, par4Str);
039 }
040
041 public GuiButton(int par1, int par2, int par3, int par4, int par5, String par6Str)
042 {
043 this.width = 200;
044 this.height = 20;
045 this.enabled = true;
046 this.drawButton = true;
047 this.id = par1;
048 this.xPosition = par2;
049 this.yPosition = par3;
050 this.width = par4;
051 this.height = par5;
052 this.displayString = par6Str;
053 }
054
055 /**
056 * Returns 0 if the button is disabled, 1 if the mouse is NOT hovering over this button and 2 if it IS hovering over
057 * this button.
058 */
059 protected int getHoverState(boolean par1)
060 {
061 byte var2 = 1;
062
063 if (!this.enabled)
064 {
065 var2 = 0;
066 }
067 else if (par1)
068 {
069 var2 = 2;
070 }
071
072 return var2;
073 }
074
075 /**
076 * Draws this button to the screen.
077 */
078 public void drawButton(Minecraft par1Minecraft, int par2, int par3)
079 {
080 if (this.drawButton)
081 {
082 FontRenderer var4 = par1Minecraft.fontRenderer;
083 GL11.glBindTexture(GL11.GL_TEXTURE_2D, par1Minecraft.renderEngine.getTexture("/gui/gui.png"));
084 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
085 this.field_82253_i = par2 >= this.xPosition && par3 >= this.yPosition && par2 < this.xPosition + this.width && par3 < this.yPosition + this.height;
086 int var5 = this.getHoverState(this.field_82253_i);
087 this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + var5 * 20, this.width / 2, this.height);
088 this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + var5 * 20, this.width / 2, this.height);
089 this.mouseDragged(par1Minecraft, par2, par3);
090 int var6 = 14737632;
091
092 if (!this.enabled)
093 {
094 var6 = -6250336;
095 }
096 else if (this.field_82253_i)
097 {
098 var6 = 16777120;
099 }
100
101 this.drawCenteredString(var4, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, var6);
102 }
103 }
104
105 /**
106 * Fired when the mouse button is dragged. Equivalent of MouseListener.mouseDragged(MouseEvent e).
107 */
108 protected void mouseDragged(Minecraft par1Minecraft, int par2, int par3) {}
109
110 /**
111 * Fired when the mouse button is released. Equivalent of MouseListener.mouseReleased(MouseEvent e).
112 */
113 public void mouseReleased(int par1, int par2) {}
114
115 /**
116 * Returns true if the mouse has been pressed on this control. Equivalent of MouseListener.mousePressed(MouseEvent
117 * e).
118 */
119 public boolean mousePressed(Minecraft par1Minecraft, int par2, int par3)
120 {
121 return this.enabled && this.drawButton && par2 >= this.xPosition && par3 >= this.yPosition && par2 < this.xPosition + this.width && par3 < this.yPosition + this.height;
122 }
123
124 public boolean func_82252_a()
125 {
126 return this.field_82253_i;
127 }
128
129 public void func_82251_b(int par1, int par2) {}
130 }