From c0da2fadf2068ca8220eabcb7195388dcfd3a0cb Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Sat, 7 Oct 2023 21:16:44 -0700 Subject: [PATCH] add text box to slider (still needs to be visually fixed) --- .../images/editors/charter/add-strumline.png | Bin 5712 -> 611 bytes .../images/editors/charter/lock-strumline.png | Bin 5712 -> 949 bytes source/funkin/editors/ui/UISlider.hx | 51 +++++++++++++++--- source/funkin/editors/ui/UITextBox.hx | 2 +- 4 files changed, 45 insertions(+), 8 deletions(-) diff --git a/assets/images/editors/charter/add-strumline.png b/assets/images/editors/charter/add-strumline.png index f2262c21c103dccac52cd3b1713e93412eeeb91a..f6355d051bbc3a2310c2d3006fc8388cbbe13dc7 100644 GIT binary patch delta 586 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 public function new(x:Float, y:Float, width:Int = 120, segments:Array, centered:Bool, defaultStart:Float = 0) { @@ -39,8 +46,8 @@ class UISlider extends UISprite { progressbar = new UISprite(centered ? barWidth/2 : 0); progressbar.makeGraphic(barWidth, 8, 0x00000000, true); - progressbar.drawRoundRect(2, 0, barWidth-4, 8, 8, 2, 0xFF67009B); - progressbar.origin.x = 0; + progressbar.drawRoundRect(2, 0, barWidth-4, 8, 8, 2, 0xFFFFFFFF); + progressbar.origin.x = 0; progressbar.colorTransform.color = 0xFF67009B; members.push(progressbar); __barProgress = defaultStart; @@ -55,16 +62,27 @@ class UISlider extends UISprite { members.push(selectableBar); selectableHitbox = new UISprite(x,y); - selectableHitbox.makeSolid(barWidth, 16, -1); + selectableHitbox.makeSolid(barWidth, 18, -1); selectableHitbox.cursor = BUTTON; selectableHitbox.alpha = 0; members.push(selectableHitbox); + + valueStepper = new UINumericStepper(x - 64 - 64, y, 1, 0.01, 2, segments[0].start, segments[segments.length-1].end, 0, 18); + valueStepper.antialiasing = true; + valueStepper.onChange = function (text:String) { + @:privateAccess valueStepper.__onChange(text); + value = valueStepper.value; + } + members.push(valueStepper); } var __barProgress:Float = 0; public override function update(elapsed:Float) { selectableHitbox.follow(this, 0, (height-selectableHitbox.height)/2); + + valueStepper.bWidth = valueStepper.label.text.length <= 0 ? 25 : Std.int(valueStepper.label.textField.width) + 12; + valueStepper.follow(this, -startText.width-10 - valueStepper.bWidth - 4, (height-valueStepper.bHeight)/2); var lastBarProgress:Float = __barProgress; @@ -74,13 +92,17 @@ class UISlider extends UISprite { mousePos.put(); } - if (__barProgress != lastBarProgress) - onChange(value = calcValue(__barProgress)); + if (__barProgress != lastBarProgress) { + onChange(@:bypassAccessor value = calcValue(__barProgress)); + valueStepper.value = value; + } progressbar.follow(this, progressCentered ? barWidth/2 : 0, (height-progressbar.height)/2); progressbar.scale.x = FlxMath.bound(__barProgress-(progressCentered?0.5:0),-1,1); + progressbar.colorTransform.color = FlxColor.interpolate(progressbar.colorTransform.color, selectableHitbox.hovered ? 0xFFB235F0 : 0xFF67009B, 1/14); selectableBar.follow(this, (__barProgress * barWidth) - (selectableBar.width/2), (height-selectableBar.height)/2); + //selectableBar.colorTransform.color = FlxColor.interpolate(selectableBar.colorTransform.color, selectableHitbox.hovered ? 0x6DFFFFFF : 0x00000000, 1/14); startText.follow(this, -startText.width-10, (height/2) - (startText.height/2)); endText.follow(this, barWidth + 10, (height/2) - (endText.height/2)); @@ -88,7 +110,7 @@ class UISlider extends UISprite { super.update(elapsed); } - function calcValue(progress:Float):Float { + private function calcValue(progress:Float):Float { var totalProgress:Float = 0; for (segment in segments) { if (progress < totalProgress + segment.size) { @@ -99,6 +121,21 @@ class UISlider extends UISprite { } return segments[segments.length-1].end; } + + private function calcProgress(value:Float):Float { + if (value >= segments[segments.length-1].end) return 1; + if (value <= segments[0].start) return 0; + + var totalProgress:Float = 0; + for (segment in segments) { + if (value >= segment.start && value <= segment.end) { + var relativeProgress = FlxMath.remapToRange(value, segment.start, segment.end, 0, 1); + return totalProgress + relativeProgress * segment.size; + } + totalProgress += segment.size; + } + return -1; + } } typedef UISliderPreset = { diff --git a/source/funkin/editors/ui/UITextBox.hx b/source/funkin/editors/ui/UITextBox.hx index 9e7dae4f..8c072e63 100644 --- a/source/funkin/editors/ui/UITextBox.hx +++ b/source/funkin/editors/ui/UITextBox.hx @@ -68,7 +68,7 @@ class UITextBox extends UISliceSprite implements IUIFocusable { } var off = multiline ? 4 : ((bHeight - label.height) / 2); - label.follow(this, 4, off); + label.follow(this, label.autoSize ? (bWidth-label.textField.width)/2 : 4, off); framesOffset = (selected ? 18 : (hovered ? 9 : 0)); @:privateAccess { if (selected) {