    001    package net.minecraft.client.gui;
    002
    003    import cpw.mods.fml.common.Side;
    004    import cpw.mods.fml.common.asm.SideOnly;
    005    import net.minecraft.client.Minecraft;
    006    import net.minecraft.client.settings.EnumOptions;
    007    import org.lwjgl.opengl.GL11;
    008
    009    @SideOnly(Side.CLIENT)
    010    public class GuiSlider extends GuiButton
    011    {
    012        /** The value of this slider control. */
    013        public float sliderValue = 1.0F;
    014
    015        /** Is this slider control being dragged. */
    016        public boolean dragging = false;
    017
    018        /** Additional ID for this slider control. */
    019        private EnumOptions idFloat = null;
    020
    021        public GuiSlider(int par1, int par2, int par3, EnumOptions par4EnumOptions, String par5Str, float par6)
    022        {
    023            super(par1, par2, par3, 150, 20, par5Str);
    024            this.idFloat = par4EnumOptions;
    025            this.sliderValue = par6;
    026        }
    027
    028        /**
    029         * Returns 0 if the button is disabled, 1 if the mouse is NOT hovering over this button and 2 if it IS hovering over
    030         * this button.
    031         */
    032        protected int getHoverState(boolean par1)
    033        {
    034            return 0;
    035        }
    036
    037        /**
    038         * Fired when the mouse button is dragged. Equivalent of MouseListener.mouseDragged(MouseEvent e).
    039         */
    040        protected void mouseDragged(Minecraft par1Minecraft, int par2, int par3)
    041        {
    042            if (this.drawButton)
    043            {
    044                if (this.dragging)
    045                {
    046                    this.sliderValue = (float)(par2 - (this.xPosition + 4)) / (float)(this.width - 8);
    047
    048                    if (this.sliderValue < 0.0F)
    049                    {
    050                        this.sliderValue = 0.0F;
    051                    }
    052
    053                    if (this.sliderValue > 1.0F)
    054                    {
    055                        this.sliderValue = 1.0F;
    056                    }
    057
    058                    par1Minecraft.gameSettings.setOptionFloatValue(this.idFloat, this.sliderValue);
    059                    this.displayString = par1Minecraft.gameSettings.getKeyBinding(this.idFloat);
    060                }
    061
    062                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    063                this.drawTexturedModalRect(this.xPosition + (int)(this.sliderValue * (float)(this.width - 8)), this.yPosition, 0, 66, 4, 20);
    064                this.drawTexturedModalRect(this.xPosition + (int)(this.sliderValue * (float)(this.width - 8)) + 4, this.yPosition, 196, 66, 4, 20);
    065            }
    066        }
    067
    068        /**
    069         * Returns true if the mouse has been pressed on this control. Equivalent of MouseListener.mousePressed(MouseEvent
    070         * e).
    071         */
    072        public boolean mousePressed(Minecraft par1Minecraft, int par2, int par3)
    073        {
    074            if (super.mousePressed(par1Minecraft, par2, par3))
    075            {
    076                this.sliderValue = (float)(par2 - (this.xPosition + 4)) / (float)(this.width - 8);
    077
    078                if (this.sliderValue < 0.0F)
    079                {
    080                    this.sliderValue = 0.0F;
    081                }
    082
    083                if (this.sliderValue > 1.0F)
    084                {
    085                    this.sliderValue = 1.0F;
    086                }
    087
    088                par1Minecraft.gameSettings.setOptionFloatValue(this.idFloat, this.sliderValue);
    089                this.displayString = par1Minecraft.gameSettings.getKeyBinding(this.idFloat);
    090                this.dragging = true;
    091                return true;
    092            }
    093            else
    094            {
    095                return false;
    096            }
    097        }
    098
    099        /**
    100         * Fired when the mouse button is released. Equivalent of MouseListener.mouseReleased(MouseEvent e).
    101         */
    102        public void mouseReleased(int par1, int par2)
    103        {
    104            this.dragging = false;
    105        }
    106    }