Fixed undo/redo issues on holds

This commit is contained in:
Goatgarien
2023-02-05 20:42:07 -08:00
parent cd29218fc8
commit a6be9e759a
+40 -13
View File
@@ -284,16 +284,23 @@ namespace BAKKA_Editor
if (result == DialogResult.OK)
{
chart.WriteFile(saveFileDialog.FileName);
isNewFile = false;
if (isRecoveredFile)
if (CurrentlyInsertingHold())
{
DeleteAutosaves();
autosaveFile = "";
MessageBox.Show("Cannot save while inserting holds\n Please finish the hold before saving", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
chart.WriteFile(saveFileDialog.FileName);
isNewFile = false;
if (isRecoveredFile)
{
DeleteAutosaves();
autosaveFile = "";
}
isRecoveredFile = false;
File.WriteAllText(tempStatusPath, "false");
SetText();
}
isRecoveredFile = false;
File.WriteAllText(tempStatusPath, "false");
SetText();
}
return result;
}
@@ -382,6 +389,7 @@ namespace BAKKA_Editor
updateLabel("Hold Middle");
break;
case NoteType.HoldEnd:
endHoldCheck.Checked = true;
updateLabel("Hold End");
break;
case NoteType.MaskAdd:
@@ -1880,6 +1888,11 @@ namespace BAKKA_Editor
if (isRemoveHold)
{
if (note.NextNote == null)
{
SetNonHoldButtonState(false);
SetSelectedObject(NoteType.HoldJoint);
}
else
{
SetNonHoldButtonState(true);
SetSelectedObject(note.NoteType);
@@ -1890,6 +1903,7 @@ namespace BAKKA_Editor
{
if (isInsertHold)
{
SetSelectedObject(note.NoteType);
lastNote = note.PrevNote;
}
}
@@ -1898,14 +1912,14 @@ namespace BAKKA_Editor
if (isInsertHold)
{
SetNonHoldButtonState(false);
SetSelectedObject(note.NoteType);
SetSelectedObject(NoteType.HoldJoint);
lastNote = note.PrevNote;
}
}
updateTime();
}
}
else
else //dir == OperationDirection.Redo
{
bool isInsertHold = op.GetType() == typeof(InsertHoldNote);
bool isRemoveHold = op.GetType() == typeof(RemoveHoldNote);
@@ -1916,7 +1930,7 @@ namespace BAKKA_Editor
{
if (isInsertHold)
{
SetNonHoldButtonState(true);
SetNonHoldButtonState(false);
SetSelectedObject(NoteType.HoldJoint);
}
if (isRemoveHold)
@@ -1937,6 +1951,7 @@ namespace BAKKA_Editor
if (isInsertHold)
{
SetNonHoldButtonState(true);
endHoldCheck.Checked = false;
SetSelectedObject(flairRadio.Checked ? NoteType.HoldStartBonusFlair : NoteType.HoldStartNoBonus);
lastNote = note;
}
@@ -1987,8 +2002,11 @@ namespace BAKKA_Editor
if ((chart.Notes.Count > 0 || chart.Gimmicks.Count > 0) && !chart.IsSaved)
{
chart.WriteFile(tempFilePath, false);
File.WriteAllLines(tempStatusPath, new string[] { "true", DateTime.Now.ToString("yyyy-MM-dd HH:mm") });
if (!CurrentlyInsertingHold())
{
chart.WriteFile(tempFilePath, false);
File.WriteAllLines(tempStatusPath, new string[] { "true", DateTime.Now.ToString("yyyy-MM-dd HH:mm") });
}
}
else
{
@@ -1996,6 +2014,15 @@ namespace BAKKA_Editor
}
}
bool CurrentlyInsertingHold()
{
if(currentNoteType == NoteType.HoldJoint || currentNoteType == NoteType.HoldEnd)
{
return true;
}
return false;
}
private void DeleteAutosaves(string keep = "")
{
var oldAutosave = Directory.GetFiles(Path.GetTempPath(), "*.mer");