    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    }