package com.irtimaled.bbor.client.gui;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiButton;
import net.minecraft.util.math.MathHelper;
import org.lwjgl.opengl.GL11;
-abstract class AbstractSlider extends GuiButton implements IRenderableControl {
+abstract class AbstractSlider extends AbstractControl {
double progress;
+ private boolean isDragging;
- AbstractSlider(int id, int x, int y, int width) {
- super(id, x, y, width, 20, "");
+ AbstractSlider(int x, int y, int width) {
+ super(x, y, width, "");
}
@Override
- public void render(int mouseX, int mouseY) {
- super.render(mouseX, mouseY, 0f);
- }
-
- @Override
- protected void renderBg(Minecraft minecraft, int mouseX, int mouseY) {
- minecraft.getTextureManager().bindTexture(BUTTON_TEXTURES);
+ protected void renderBackground(int mouseX, int mouseY) {
+ this.minecraft.getTextureManager().bindTexture(BUTTON_TEXTURES);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
- this.drawTexturedModalRect(this.x + (int) (this.progress * (double) (this.width - 8)), this.y, 0, 66, 4, 20);
- this.drawTexturedModalRect(this.x + (int) (this.progress * (double) (this.width - 8)) + 4, this.y, 196, 66, 4, 20);
+ if(isDragging) {
+ changeProgress(mouseX);
+ }
+
+ int hoverState = super.getHoverState(this.hovered);
+ this.drawTexturedModalRect(this.x + (int) (this.progress * (double) (this.width - 8)), this.y, 0, 46 + hoverState * 20, 4, this.height);
+ this.drawTexturedModalRect(this.x + (int) (this.progress * (double) (this.width - 8)) + 4, this.y, 196, 46 + hoverState * 20, 4, 20);
}
boolean setProgress(double progress) {
@Override
protected void onDrag(double mouseX, double mouseY, double deltaX, double deltaY) {
changeProgress(mouseX);
- super.onDrag(mouseX, mouseY, deltaX, deltaY);
}
@Override
public void onClick(double mouseX, double mouseY) {
changeProgress(mouseX);
- super.onClick(mouseX, mouseY);
+ isDragging = true;
+ }
+
+ @Override
+ public void onRelease(double mouseX, double mouseY) {
+ this.isDragging = false;
}
protected abstract void updateText();