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 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 }