From 21fbee01de0847a5ffa840b9a460b33e41418c90 Mon Sep 17 00:00:00 2001 From: Morilli <35152647+Morilli@users.noreply.github.com> Date: Tue, 17 Sep 2024 20:26:04 +0200 Subject: [PATCH] consolidate TAStudio saving functions --- .../tools/TAStudio/TAStudio.MenuItems.cs | 55 +++++------------- .../tools/TAStudio/TAStudio.cs | 57 ++++++++++--------- 2 files changed, 45 insertions(+), 67 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs index 19079627eb..67e3bd2c1d 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.MenuItems.cs @@ -21,6 +21,7 @@ namespace BizHawk.Client.EmuHawk private void FileSubMenu_DropDownOpened(object sender, EventArgs e) { + SaveBackupMenuItem.Enabled = !string.IsNullOrWhiteSpace(CurrentTasMovie.Filename) && CurrentTasMovie.Filename != DefaultTasProjName(); saveSelectionToMacroToolStripMenuItem.Enabled = placeMacroAtSelectionToolStripMenuItem.Enabled = recentMacrosToolStripMenuItem.Enabled = @@ -114,10 +115,17 @@ namespace BizHawk.Client.EmuHawk private void SaveTasMenuItem_Click(object sender, EventArgs e) { - SaveTas(); + if (string.IsNullOrEmpty(CurrentTasMovie.Filename) || CurrentTasMovie.Filename == DefaultTasProjName()) + { + SaveAsTas(); + } + else + { + SaveTas(); + } if (Settings.BackupPerFileSave) { - SaveBackupMenuItem_Click(sender, e); + SaveTas(saveBackup: true); } } @@ -126,53 +134,18 @@ namespace BizHawk.Client.EmuHawk SaveAsTas(); if (Settings.BackupPerFileSave) { - SaveBackupMenuItem_Click(sender, e); + SaveTas(saveBackup: true); } } private void SaveBackupMenuItem_Click(object sender, EventArgs e) { - if (string.IsNullOrEmpty(CurrentTasMovie.Filename) - || CurrentTasMovie.Filename == DefaultTasProjName()) - { - SaveAsTas(); - } - else - { - _autosaveTimer.Stop(); - MainForm.DoWithTempMute(() => - { - MessageStatusLabel.Text = "Saving..."; - Cursor = Cursors.WaitCursor; - Update(); - CurrentTasMovie.SaveBackup(); - if (Settings.AutosaveInterval > 0) - { - _autosaveTimer.Start(); - } - - MessageStatusLabel.Text = "Backup .tasproj saved to \"Movie backups\" path."; - Settings.RecentTas.Add(CurrentTasMovie.Filename); - Cursor = Cursors.Default; - }); - } + SaveTas(saveBackup: true); } private void SaveBk2BackupMenuItem_Click(object sender, EventArgs e) { - _autosaveTimer.Stop(); - var bk2 = CurrentTasMovie.ToBk2(); - MessageStatusLabel.Text = "Exporting to .bk2..."; - Cursor = Cursors.WaitCursor; - Update(); - bk2.SaveBackup(); - if (Settings.AutosaveInterval > 0) - { - _autosaveTimer.Start(); - } - - MessageStatusLabel.Text = "Backup .bk2 saved to \"Movie backups\" path."; - Cursor = Cursors.Default; + SaveTas(saveAsBk2: true, saveBackup: true); } private void SaveSelectionToMacroMenuItem_Click(object sender, EventArgs e) @@ -234,7 +207,6 @@ namespace BizHawk.Client.EmuHawk private void ToBk2MenuItem_Click(object sender, EventArgs e) { - // TODO: can we deduplicate this logic somehow? The same code with minimal changes is copy pasted like 4 times _autosaveTimer.Stop(); if (Emulator.HasCycleTiming() && !CurrentTasMovie.IsAtEnd()) @@ -257,6 +229,7 @@ namespace BizHawk.Client.EmuHawk if (fileInfo is not null) { MessageStatusLabel.Text = "Exporting to .bk2..."; + MessageStatusLabel.Owner.Update(); Cursor = Cursors.WaitCursor; var bk2 = CurrentTasMovie.ToBk2(); bk2.Filename = fileInfo.FullName; diff --git a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs index c360b72a2f..040147b1cf 100644 --- a/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs +++ b/src/BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs @@ -311,18 +311,18 @@ namespace BizHawk.Client.EmuHawk { if (Settings.AutosaveAsBk2) { - SaveBk2BackupMenuItem_Click(sender, e); + SaveTas(saveAsBk2: true, saveBackup: true); } else { - SaveBackupMenuItem_Click(sender, e); + SaveTas(saveBackup: true); } } else { if (Settings.AutosaveAsBk2) { - ToBk2MenuItem_Click(sender, e); + SaveTas(saveAsBk2: true); } else { @@ -712,31 +712,36 @@ namespace BizHawk.Client.EmuHawk $"{Game.FilesystemSafeName()}.{MovieService.TasMovieExtension}"); } - private void SaveTas() + private void SaveTas(bool saveAsBk2 = false, bool saveBackup = false) { - if (string.IsNullOrEmpty(CurrentTasMovie.Filename) - || CurrentTasMovie.Filename == DefaultTasProjName()) - { - SaveAsTas(); - } - else - { - _autosaveTimer?.Stop(); - MainForm.DoWithTempMute(() => - { - MessageStatusLabel.Text = "Saving..."; - Cursor = Cursors.WaitCursor; - Update(); - CurrentTasMovie.Save(); - if (Settings.AutosaveInterval > 0) - { - _autosaveTimer?.Start(); - } + if (string.IsNullOrEmpty(CurrentTasMovie.Filename) || CurrentTasMovie.Filename == DefaultTasProjName()) return; - MessageStatusLabel.Text = "File saved."; - Settings.RecentTas.Add(CurrentTasMovie.Filename); - Cursor = Cursors.Default; - }); + _autosaveTimer.Stop(); + MessageStatusLabel.Text = saveBackup + ? "Saving backup..." + : "Saving..."; + MessageStatusLabel.Owner.Update(); + Cursor = Cursors.WaitCursor; + + IMovie movieToSave = CurrentTasMovie; + if (saveAsBk2) + { + movieToSave = CurrentTasMovie.ToBk2(); + movieToSave.Attach(Emulator); + } + + if (saveBackup) + movieToSave.SaveBackup(); + else + movieToSave.Save(); + + MessageStatusLabel.Text = saveBackup + ? $"Backup .{(saveAsBk2 ? MovieService.StandardMovieExtension : MovieService.TasMovieExtension)} saved to \"Movie backups\" path." + : "File saved."; + Cursor = Cursors.Default; + if (Settings.AutosaveInterval > 0) + { + _autosaveTimer.Start(); } }