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