diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index 00801a34..bda0e310 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -786,8 +786,6 @@ class Charter extends UIState { })); } - public function orderStrumline() {} - public inline function deleteStrumlineFromData(strL:ChartStrumLine) deleteStrumline(getStrumlineID(strL)); @@ -1035,8 +1033,10 @@ class Charter extends UIState { createStrumline(strumLineID, strumLine, false); case CCreateStrumLine(strumLineID, strumLine): deleteStrumline(strumLineID, false); - case COrderStrumLine(strumLine, oldID, newID): + case COrderStrumLine(strumLineID, oldID, newID): + var strumLine:CharterStrumline = strumLines.members[strumLineID]; strumLines.orderStrumline(strumLine, oldID); + undos.redoList[0] = COrderStrumLine(strumLines.members.indexOf(strumLine), oldID, newID); case CEditStrumLine(strumLineID, oldStrumLine, newStrumLine): strumLines.members[strumLineID].strumLine = oldStrumLine; strumLines.members[strumLineID].updateInfo(); @@ -1073,8 +1073,10 @@ class Charter extends UIState { deleteStrumline(strumLineID, false); case CCreateStrumLine(strumLineID, strumLine): createStrumline(strumLineID, strumLine, false); - case COrderStrumLine(strumLine, oldID, newID): + case COrderStrumLine(strumLineID, oldID, newID): + var strumLine:CharterStrumline = strumLines.members[strumLineID]; strumLines.orderStrumline(strumLine, newID); + undos.undoList[0] = COrderStrumLine(strumLines.members.indexOf(strumLine), oldID, newID); case CEditStrumLine(strumLineID, oldStrumLine, newStrumLine): strumLines.members[strumLineID].strumLine = newStrumLine; strumLines.members[strumLineID].updateInfo(); @@ -1269,7 +1271,7 @@ class Charter extends UIState { enum CharterChange { CCreateStrumLine(strumLineID:Int, strumLine:ChartStrumLine); CEditStrumLine(strumLineID:Int, oldStrumLine:ChartStrumLine, newStrumLine:ChartStrumLine); - COrderStrumLine(strumLine:CharterStrumline, oldID:Int, newID:Int); + COrderStrumLine(strumLineID:Int, oldID:Int, newID:Int); CDeleteStrumLine(strumLineID:Int, strumLine:ChartStrumLine); CCreateSelection(selection:Selection); CDeleteSelection(selection:Selection); diff --git a/source/funkin/editors/charter/CharterStrumLineGroup.hx b/source/funkin/editors/charter/CharterStrumLineGroup.hx index 64e629a1..a970918a 100644 --- a/source/funkin/editors/charter/CharterStrumLineGroup.hx +++ b/source/funkin/editors/charter/CharterStrumLineGroup.hx @@ -17,6 +17,7 @@ class CharterStrumLineGroup extends FlxTypedGroup { public override function update(elapsed:Float) { var mousePos = FlxG.mouse.getWorldPosition(cameras[0], FlxPoint.get()); for (strumLine in members) { + if (strumLine == null) continue; strumLine.draggable = draggable; if (draggable && UIState.state.isOverlapping(strumLine.draggingSprite, @:privateAccess strumLine.draggingSprite.__rect) && FlxG.mouse.justPressed) { draggingObj = strumLine; @@ -34,7 +35,7 @@ class CharterStrumLineGroup extends FlxTypedGroup { } for (i=>strum in members) - if (!strum.dragging) strum.x = CoolUtil.fpsLerp(strum.x, 160 * i, 0.225); + if (strum != null && !strum.dragging) strum.x = CoolUtil.fpsLerp(strum.x, 160 * i, 0.225); if (Charter.instance.eventsBackdrop != null) Charter.instance.eventsBackdrop.x = members[0].button.x - Charter.instance.eventsBackdrop.width; @@ -67,8 +68,7 @@ class CharterStrumLineGroup extends FlxTypedGroup { if (addToUndo) { var oldID = __pastStrumlines.indexOf(draggingObj); var newID = members.indexOf(draggingObj); - if (newID != oldID) - Charter.instance.undos.addToUndo(COrderStrumLine(draggingObj, oldID, newID)); + if (newID != oldID) Charter.instance.undos.addToUndo(COrderStrumLine(newID, oldID, newID)); } draggingObj = null;