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