1 package com.irtimaled.bbor.client.gui;
3 import net.minecraft.util.math.MathHelper;
4 import org.lwjgl.opengl.GL11;
6 abstract class AbstractSlider extends AbstractControl {
8 private boolean isDragging;
10 AbstractSlider(int x, int y, int width) {
11 super(x, y, width, "");
15 protected void renderBackground(int mouseX, int mouseY) {
16 this.minecraft.getTextureManager().bindTexture(WIDGETS_LOCATION);
17 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
19 changeProgress(mouseX);
22 int hoverState = super.getYImage(this.isHovered);
23 this.blit(this.x + (int) (this.progress * (double) (this.width - 8)), this.y, 0, 46 + hoverState * 20, 4, this.height);
24 this.blit(this.x + (int) (this.progress * (double) (this.width - 8)) + 4, this.y, 196, 46 + hoverState * 20, 4, 20);
27 boolean setProgress(double progress) {
28 progress = MathHelper.clamp(progress, 0d, 1d);
29 if (this.progress == progress) return false;
31 this.progress = progress;
35 private void changeProgress(double mouseX) {
36 double progress = (mouseX - (double) (this.x + 4)) / (double) (this.width - 8);
37 if (setProgress(progress)) {
44 protected int getYImage(boolean hovered) {
49 protected void onDrag(double mouseX, double mouseY, double deltaX, double deltaY) {
50 changeProgress(mouseX);
54 public void onClick(double mouseX, double mouseY) {
55 changeProgress(mouseX);
60 public void onRelease(double mouseX, double mouseY) {
61 this.isDragging = false;
64 protected abstract void updateText();
66 protected abstract void onProgressChanged();