aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/ColorSelector.java41
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/gui/elements/Slider.java25
-rw-r--r--src/main/resources/assets/oneconfig/colorui/huegradient.pngbin223 -> 229 bytes
3 files changed, 40 insertions, 26 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/ColorSelector.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/ColorSelector.java
index f80ce97..dc257a8 100644
--- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/ColorSelector.java
+++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/ColorSelector.java
@@ -43,6 +43,7 @@ public class ColorSelector {
private final ColorSlider bottomSlider = new ColorSlider(384, 0, 100, 100);
private final Slider speedSlider = new Slider(296, 1, 30, 20);
private int mode = 0;
+ private boolean dragging, mouseWasDown;
public ColorSelector(OneColor color, int mouseX, int mouseY) {
@@ -153,23 +154,26 @@ public class ColorSelector {
RenderManager.drawSvg(vg, SVGs.POP_OUT, x + 369, y + 631, 18, 18);
- boolean drag;
+ boolean isMouseDown = Mouse.isButtonDown(0);
+ boolean hovered = Mouse.isButtonDown(0) && InputUtils.isAreaHovered(x + 16, y + 120, 384, 288);
+ if (hovered && isMouseDown && !mouseWasDown) dragging = true;
+ mouseWasDown = isMouseDown;
if(mode != 2) color.setChromaSpeed(-1);
switch (mode) {
default:
case 0:
case 2:
buttons.get(mode).currentColor = OneConfigConfig.TRANSPARENT;
- if(mouseX < x + 16 && mouseY < y + 120) {
- this.mouseX = (int) (color.getSaturation() / 100f * 384 + x + 16);
- this.mouseY = (int) (Math.abs(color.getBrightness() / 100f - 1f) * 288 + y + 120);
- }
+ topSlider.setImage(Images.HUE_GRADIENT);
RenderManager.drawHSBBox(vg, x + 16, y + 120, 384, 288, color.getRGBMax(false));
- drag = Mouse.isButtonDown(0) && InputUtils.isAreaHovered(x + 16, y + 120, 384, 288);
- if(drag) {
+ if(dragging) {
mouseX = InputUtils.mouseX();
mouseY = InputUtils.mouseY();
}
+ if(mouseX < x + 16) mouseX = x + 16;
+ if(mouseY < y + 120) mouseY = y + 120;
+ if(mouseX > x + 400) mouseX = x + 400;
+ if(mouseY > y + 408) mouseY = y + 408;
float progressX = (mouseX - x - 16f) / 384f;
float progressY = Math.abs((mouseY - y - 120f) / 288f - 1f);
color.setHSBA((int) topSlider.getValue(), Math.round(progressX * 100), Math.round(progressY * 100), (int) ((bottomSlider.getValue() / 100f) * 255));
@@ -190,23 +194,25 @@ public class ColorSelector {
break;
case 1:
buttons.get(1).currentColor = OneConfigConfig.TRANSPARENT;
+ topSlider.setImage(null);
RenderManager.drawRoundImage(vg, Images.COLOR_WHEEL, x + 64, y + 120, 288, 288, 144f);
int circleCenterX = x + 208;
int circleCenterY = y + 264;
- drag = false;
double squareDist = Math.pow((circleCenterX - InputUtils.mouseX()), 2) + Math.pow((circleCenterY - InputUtils.mouseY()), 2);
- if( squareDist < 144 * 144) {
- drag = Mouse.isButtonDown(0);
- }
+ hovered = squareDist < 144 * 144 && Mouse.isButtonDown(0);
+ isMouseDown = Mouse.isButtonDown(0);
+ if (hovered && isMouseDown && !mouseWasDown) dragging = true;
+ mouseWasDown = isMouseDown;
+
int angle = 0;
- if(drag) {
+ if(dragging) {
+ //if(!(squareDist / (144 * 144) > 1f)
mouseX = InputUtils.mouseX();
mouseY = InputUtils.mouseY();
angle = (int) Math.toDegrees(Math.atan2(mouseY - circleCenterY, mouseX - circleCenterX));
if(angle < 0) angle += 360;
-
}
- color.setHSBA(drag ? angle : color.getHue(), drag ? (int) (squareDist / (144 * 144) * 100) : color.getSaturation(), (int) (topSlider.getValue() / 360 * 100), (int) ((bottomSlider.getValue() / 100f) * 255));
+ color.setHSBA(dragging ? angle : color.getHue(), dragging ? (int) (squareDist / (144 * 144) * 100) : color.getSaturation(), (int) (topSlider.getValue() / 360 * 100), (int) ((bottomSlider.getValue() / 100f) * 255));
topSlider.setGradient(OneConfigConfig.BLACK, color.getRGBMax(true));
topSlider.setImage(null);
RenderManager.drawString(vg, "Hue", x + 16, y + 560, OneConfigConfig.WHITE_80, 12f, Fonts.MEDIUM);
@@ -214,6 +220,9 @@ public class ColorSelector {
topSlider.draw(vg, x + 16, y + 424);
break;
}
+ if(dragging && InputUtils.isClicked()) {
+ dragging = false;
+ }
bottomSlider.setGradient(OneConfigConfig.TRANSPARENT_25, color.getRGBNoAlpha());
RenderManager.drawImage(vg, Images.ALPHA_GRID, x + 16, y + 456, 384, 16);
bottomSlider.draw(vg, x + 16, y + 456);
@@ -229,6 +238,7 @@ public class ColorSelector {
if(mode == 2) {
color.setHSBA(color.getHue(), (int) saturationInput.getCurrentValue(), (int) brightnessInput.getCurrentValue(), (int) ((alphaInput.getCurrentValue() / 100f) * 255f));
color.setChromaSpeed((int) (hueInput.getCurrentValue() / 360f * 30f));
+ speedSlider.setValue(hueInput.getCurrentValue() / 360f * 30f);
}
bottomSlider.setValue(color.getAlpha() / 255f * 100f);
if(mode == 0 || mode == 2) {
@@ -242,9 +252,6 @@ public class ColorSelector {
if(mode == 0) {
topSlider.setValue(color.getHue());
}
- if(mode == 2) {
- speedSlider.setValue(hueInput.getCurrentValue() / 360f * 30f);
- }
}
else if(OneConfigGui.INSTANCE.mouseDown) {
if(mode != 2) {
diff --git a/src/main/java/cc/polyfrost/oneconfig/gui/elements/Slider.java b/src/main/java/cc/polyfrost/oneconfig/gui/elements/Slider.java
index 360d78e..f03ecfc 100644
--- a/src/main/java/cc/polyfrost/oneconfig/gui/elements/Slider.java
+++ b/src/main/java/cc/polyfrost/oneconfig/gui/elements/Slider.java
@@ -10,6 +10,8 @@ public class Slider extends BasicElement {
protected float value;
protected float currentDragPoint;
protected float dragPointerSize = 8f;
+ private boolean dragging = false;
+ private boolean mouseWasDown = false;
public Slider(int length, float min, float max, float startValue) {
super(length, 8, false);
@@ -30,15 +32,16 @@ public class Slider extends BasicElement {
public void update(int x, int y) {
super.update(x, y);
- if (InputUtils.isAreaHovered((int) ((x + width * value)), y - 12, 32, 32)) {
- boolean drag = Mouse.isButtonDown(0);
- if (drag) {
- value = ((float) InputUtils.mouseX() - x) / width;
- }
- } else if (InputUtils.isAreaHovered(x - 20, y - 4, width + 40, height + 8)) {
- if (Mouse.isButtonDown(0)) {
- value = ((float) InputUtils.mouseX() - x) / width;
- }
+ boolean isMouseDown = Mouse.isButtonDown(0);
+ boolean hovered = InputUtils.isAreaHovered(x - 6, y - 3, width + 12, height + 6);
+ if (hovered && isMouseDown && !mouseWasDown) dragging = true;
+ mouseWasDown = isMouseDown;
+ if (dragging) {
+ value = ((float) InputUtils.mouseX() - x) / width;
+ }
+ if (dragging && InputUtils.isClicked()) {
+ dragging = false;
+ value = ((float) InputUtils.mouseX() - x) / width;
}
if (value < 0) value = 0;
@@ -55,4 +58,8 @@ public class Slider extends BasicElement {
public void setValue(float value) {
this.value = (value - min) / (max - min);
}
+
+ public boolean isDragging() {
+ return dragging;
+ }
}
diff --git a/src/main/resources/assets/oneconfig/colorui/huegradient.png b/src/main/resources/assets/oneconfig/colorui/huegradient.png
index 7807dc4..b725d2f 100644
--- a/src/main/resources/assets/oneconfig/colorui/huegradient.png
+++ b/src/main/resources/assets/oneconfig/colorui/huegradient.png
Binary files differ