diff --git a/source/funkin/backend/chart/EventsData.hx b/source/funkin/backend/chart/EventsData.hx index 63fb7ef47..7b6ead92b 100644 --- a/source/funkin/backend/chart/EventsData.hx +++ b/source/funkin/backend/chart/EventsData.hx @@ -66,7 +66,7 @@ class EventsData { {name: "Tween Time (Steps)", type: TFloat(0.25, 9999, 0.25, 2), defValue: 4}, { name: "Tween Ease (ex: circ, quad, cube)", - type: TDropDown(['linear', 'back', 'bounce', 'circ', 'cube', 'elastic', 'expo', 'quad', 'quart', 'quint', 'sine', 'smoothStep', 'smootherStep']), + type: TDropDown(['SET', 'linear', 'back', 'bounce', 'circ', 'cube', 'elastic', 'expo', 'quad', 'quart', 'quint', 'sine', 'smoothStep', 'smootherStep']), defValue: "linear" }, { diff --git a/source/funkin/editors/charter/CharterEvent.hx b/source/funkin/editors/charter/CharterEvent.hx index f159c83a5..231438a18 100644 --- a/source/funkin/editors/charter/CharterEvent.hx +++ b/source/funkin/editors/charter/CharterEvent.hx @@ -222,23 +222,113 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { } switch(event.name) { - case "Time Signature Change": - if(event.params != null && (event.params[0] >= 0 || event.params[1] >= 0)) { + case "Camera Movement": + // camera movement, use health icon + if(event.params != null) { + if (inMenu) { + var icon = getIconFromStrumline(event.params[0]); + if (icon != null) return icon; + } else { + var group = new EventIconGroup(); + var icon = getIconFromStrumline(event.params[0]); + if (icon != null) { // had to do this, otherwise the icon is offsetd down right for some reason :sob: + icon.x -= 8; + icon.y -= 8; + group.add(icon); + } + if (event.params[1] && event.params[3] != 'CLASSIC') + generateEventIconDurationArrow(group, event.params[2]); + return group; + } + } + + case "Camera Position": + if(event.params != null) { + if (!inMenu) { + var group = new EventIconGroup(); + group.add(generateDefaultIcon(event.name)); + if (event.params[2] && event.params[4] != 'CLASSIC') + generateEventIconDurationArrow(group, event.params[3]); + return group; + } + } + + case "Add Camera Zoom": + if(event.params != null) { + if (!inMenu) { + var group = new EventIconGroup(); + group.add(generateDefaultIcon(event.name)); + group.members[0].y -= 2; + generateEventIconNumbers(group, event.params[0]); + return group; + } + } + + case "Camera Bop": + if(event.params != null) { + if (!inMenu) { + var group = new EventIconGroup(); + group.add(generateDefaultIcon(event.name)); + group.members[0].y -= 2; + generateEventIconNumbers(group, event.params[0]); + return group; + } + } + + case "Camera Zoom": + if(event.params != null) { + if (!inMenu) { + var group = new EventIconGroup(); + group.add(generateDefaultIcon(event.name)); + if (event.params[0] && event.params[4] != 'SET') + generateEventIconDurationArrow(group, event.params[3]); + group.members[0].y -= 2; + generateEventIconNumbers(group, event.params[1]); + return group; + } + } + + case "Camera Modulo Change": + if(event.params != null) { + if (!inMenu) { + var group = new EventIconGroup(); + group.add(generateDefaultIcon(event.name)); + group.add({ // top + var num = new EventNumber(14, -1, event.params[0], EventNumber.ALIGN_CENTER); + num.active = false; + num; + }); + group.add({ // bottom + var num = new EventNumber(14, 10, event.params[1], EventNumber.ALIGN_CENTER); + num.active = false; + num; + }); + return group; + } + } + + case "Camera Flash": + if(event.params != null) { + if (!inMenu) { + var group = new EventIconGroup(); + group.add(generateDefaultIcon(event.name)); + generateEventIconDurationArrow(group, event.params[2]); + return group; + } + } + + case "BPM Change": + if(event.params != null && event.params[0] != null) { var group = new EventIconGroup(); group.add(generateDefaultIcon(event.name)); - group.add({ // top - var num = new EventNumber(9, -1, event.params[0], EventNumber.ALIGN_CENTER); - num.active = false; - num; - }); - group.add({ // bottom - var num = new EventNumber(9, 10, event.params[1], EventNumber.ALIGN_CENTER); - num.active = false; - num; - }); + if (!inMenu) { + group.members[0].y -= 2; + generateEventIconNumbers(group, event.params[0], 3); + } if (Conductor.invalidEvents.contains(event)) generateEventIconWarning(group); return group; } + case "Continuous BPM Change": if(event.params != null && event.params[1] != null) { var group = new EventIconGroup(); @@ -253,14 +343,21 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { } else { return generateDefaultIcon("BPM Change Start"); } - case "BPM Change": - if(event.params != null && event.params[0] != null) { + + case "Time Signature Change": + if(event.params != null && (event.params[0] >= 0 || event.params[1] >= 0)) { var group = new EventIconGroup(); group.add(generateDefaultIcon(event.name)); - if (!inMenu) { - group.members[0].y -= 2; - generateEventIconNumbers(group, event.params[0], 3); - } + group.add({ // top + var num = new EventNumber(9, -1, event.params[0], EventNumber.ALIGN_CENTER); + num.active = false; + num; + }); + group.add({ // bottom + var num = new EventNumber(9, 10, event.params[1], EventNumber.ALIGN_CENTER); + num.active = false; + num; + }); if (Conductor.invalidEvents.contains(event)) generateEventIconWarning(group); return group; } @@ -274,50 +371,6 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable { generateEventIconNumbers(group, event.params[1]); return group; } - - case "Camera Movement": - var shouldDoArrow:Bool = false; - var icon:Null = null; - if (event.params != null) { - shouldDoArrow = event.params[1] && event.params[3] != "CLASSIC"; // is Tweened and isnt Lerped - icon = getIconFromStrumline(event.params[0]); // camera movement, use health icon - } - - if (icon == null) icon = generateDefaultIcon(event.name); - - if(event.params != null && shouldDoArrow && !inMenu) { - var group = new EventIconGroup(); - group.add(icon); - group.members[0].x -= 8; - group.members[0].y -= 8; - generateEventIconDurationArrow(group, event.params[2]); - return group; - } else - return icon; - - case "Camera Position": - var shouldDoArrow:Bool = false; - if (event.params != null) - shouldDoArrow = event.params[2] && event.params[4] != "CLASSIC"; // is Tweened and isnt Lerped - - if(event.params != null && shouldDoArrow && !inMenu) { - var group = new EventIconGroup(); - group.add(generateDefaultIcon(event.name)); - generateEventIconDurationArrow(group, event.params[3]); - return group; - } - - case "Camera Zoom": - var shouldDoArrow:Bool = false; - if (event.params != null) - shouldDoArrow = event.params[0]; - - if(event.params != null && shouldDoArrow && !inMenu) { - var group = new EventIconGroup(); - group.add(generateDefaultIcon(event.name)); - generateEventIconDurationArrow(group, event.params[3]); - return group; - } } return generateDefaultIcon(event.name); } diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index 76752ac43..7d309d4c1 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -1603,10 +1603,11 @@ class PlayState extends MusicBeatState if (event.params[7] == true) finalZoom *= cam.zoom; if (event.params[0] == false) { - cam.zoom = finalZoom; + if (event.params[4] != "SET") + cam.zoom = finalZoom; if (cam == camHUD) defaultHudZoom = finalZoom; else defaultCamZoom = finalZoom; - } else + } else if (event.params[4] != null && event.params[4] != "SET") eventsTween.set(name, FlxTween.tween(cam, {zoom: finalZoom}, (Conductor.stepCrochet / 1000) * event.params[3], {ease: CoolUtil.flxeaseFromString(event.params[4], event.params[5]), onUpdate: function(_) { if (cam == camHUD) defaultHudZoom = cam.zoom; else defaultCamZoom = cam.zoom;