From 0f0d116fb2a082452614eaaa3fe2671eaf5b06c7 Mon Sep 17 00:00:00 2001 From: TheZoroForce240 <86524550+TheZoroForce240@users.noreply.github.com> Date: Sun, 2 Feb 2025 12:29:42 +0000 Subject: [PATCH] more event icon stuff --- source/funkin/editors/charter/CharterEvent.hx | 80 ++++++++++--------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/source/funkin/editors/charter/CharterEvent.hx b/source/funkin/editors/charter/CharterEvent.hx index 939082a6..9dcee4b1 100644 --- a/source/funkin/editors/charter/CharterEvent.hx +++ b/source/funkin/editors/charter/CharterEvent.hx @@ -89,6 +89,9 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { script.set("getIconFromStrumline", getIconFromStrumline); script.set("getIconFromCharName", getIconFromCharName); script.set("generateDefaultIcon", generateDefaultIcon); + script.set("generateEventIconDurationArrow", generateEventIconDurationArrow); + script.set("generateEventIconNumbers", generateEventIconNumbers); + script.set("generateEventIconWarning", generateEventIconWarning); script.set("getPackData", getPackData); script.set("getEventComponent", getEventComponent); // data @@ -181,6 +184,7 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { public static function generateEventIcon(event:ChartEvent, inMenu:Bool = true):FlxSprite { var script = getUIScript(event, "event-icon"); if(script != null && !(script is DummyScript)) { + script.set("inMenu", inMenu); if(script.get("generateIcon") != null) { var res:FlxSprite = script.call("generateIcon"); if(res != null) @@ -208,16 +212,13 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { } case "Continuous BPM Change": if(event.params != null && event.params[1] != null) { - if (inMenu) { - var group = new EventIconGroup(); - group.add(generateDefaultIcon("BPM Change Start")); - if (Conductor.invalidEvents.contains(event)) generateEventIconWarning(group); - return group; + var group = new EventIconGroup(); + group.add(generateDefaultIcon("BPM Change Start")); + if (!inMenu) { + generateEventIconDurationArrow(group, event.params[1]); + group.members[0].y -= 2; + generateEventIconNumbers(group, event.params[0], 3); } - - var group = generateEventIconWithDuration(event.params[1], "BPM Change Start"); - group.members[0].y -= 2; - generateEventIconNumbers(group, event.params[0], 15); if (Conductor.invalidEvents.contains(event)) generateEventIconWarning(group); return group; } else { @@ -225,21 +226,26 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { } case "BPM Change": if(event.params != null && event.params[0] != null) { - if (inMenu) { - var group = new EventIconGroup(); - group.add(generateDefaultIcon(event.name)); - if (Conductor.invalidEvents.contains(event)) generateEventIconWarning(group); - return group; - } - var group = new EventIconGroup(); group.add(generateDefaultIcon(event.name)); - group.members[0].y -= 2; - generateEventIconNumbers(group, event.params[0], 15); + if (!inMenu) { + group.members[0].y -= 2; + generateEventIconNumbers(group, event.params[0], 3); + } if (Conductor.invalidEvents.contains(event)) generateEventIconWarning(group); return group; } + case "Scroll Speed Change": + if(event.params != null && !inMenu) { + var group = new EventIconGroup(); + group.add(generateDefaultIcon(event.name)); + if (event.params[0]) generateEventIconDurationArrow(group, event.params[2]); + group.members[0].y -= 2; + generateEventIconNumbers(group, event.params[1]); + return group; + } + case "Camera Movement": // camera movement, use health icon if(event.params != null) { @@ -250,26 +256,28 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { return generateDefaultIcon(event.name); } - private static function generateEventIconNumbers(group:EventIconGroup, number:Float, y:Float) { + private static function generateEventIconNumbers(group:EventIconGroup, number:Float, x:Float = 4, y:Float = 15, spacing:Float = 5, precision:Int = 3) { group.add({ - var num = new EventNumber(3, y, number, EventNumber.ALIGN_CENTER, 5); + var num = new EventNumber(x, y, number, EventNumber.ALIGN_CENTER, spacing, precision); + if (num.numWidth > 20) { + num.scale.x = num.scale.y = 20 / num.numWidth; + } num.active = false; num; }); } - private static function generateEventIconWithDuration(duration:Float, startIcon:String, endIcon:String = "") { - var group = new EventIconGroup(); - group.add(generateDefaultIcon(startIcon)); + private static function generateEventIconDurationArrow(group:EventIconGroup, stepDuration:Float) { + //var group = new EventIconGroup(); + //group.add(generateDefaultIcon(startIcon)); var xOffset = 4; var yGap = 24; - var endGap = 7; - if (endIcon == "") endGap = -2; + var endGap = 2; - if (duration >= 0.65) { //min time for showing arrow + if (stepDuration >= 0.55) { //min time for showing arrow var tail = new FlxSprite(xOffset, yGap); - var arrow = new FlxSprite(xOffset, (duration * 40) + endGap); + var arrow = new FlxSprite(xOffset, (stepDuration * 40) + endGap); var arrowSegment = new FlxSprite(xOffset, yGap); tail.frames = arrow.frames = arrowSegment.frames = Paths.getSparrowAtlas("editors/charter/event-icons/components/arrow-down"); @@ -282,7 +290,7 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { group.add({ arrowSegment.animation.addByPrefix("segment", "segment"); arrowSegment.animation.play("segment"); - arrowSegment.scale.y = (duration * 40) - (tail.height + endGap + yGap); + arrowSegment.scale.y = endGap + (stepDuration * 40) - (tail.height + yGap); arrowSegment.updateHitbox(); arrowSegment.y += tail.height; arrowSegment; @@ -294,17 +302,6 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { arrow; }); } - - if (endIcon != "") { - group.add({ - var icon = generateDefaultIcon(endIcon); - icon.y = duration * 40; - icon; - }); - } - - - return group; } private static function generateEventIconWarning(group:EventIconGroup) { @@ -403,6 +400,10 @@ class EventIconGroup extends FlxSpriteGroup { if (copyColorTransformToChildren && colorTransform != null) for (child in members) child.colorTransform.__copyFrom(colorTransform); super.draw(); } + + override function update(elapsed:Float) { + super.update(elapsed); + } } class EventNumber extends FlxSprite { @@ -436,6 +437,7 @@ class EventNumber extends FlxSprite { } var ints = Std.int(Math.abs(number)); + if (ints == 0) this.digits.insert(0, 0); while (ints > 0) { this.digits.insert(0, ints % 10); ints = Std.int(ints / 10);