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 }