diff --git a/BizHawk.MultiClient/Config.cs b/BizHawk.MultiClient/Config.cs index 46967d278b..01fcd4a852 100644 --- a/BizHawk.MultiClient/Config.cs +++ b/BizHawk.MultiClient/Config.cs @@ -103,6 +103,7 @@ public bool CheatsSaveWindowPosition = true; public bool DisableCheatsOnLoad = false; public bool LoadCheatFileByGame = true; + public bool CheatsAutoSaveOnClose = true; public RecentFiles RecentCheats = new RecentFiles(8); public int CheatsWndx = -1; public int CheatsWndy = -1; diff --git a/BizHawk.MultiClient/tools/Cheats.Designer.cs b/BizHawk.MultiClient/tools/Cheats.Designer.cs index 801239291e..3819e357bd 100644 --- a/BizHawk.MultiClient/tools/Cheats.Designer.cs +++ b/BizHawk.MultiClient/tools/Cheats.Designer.cs @@ -96,6 +96,7 @@ this.toggleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.removeSelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.autoloadDialogToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveCheatsOnCloseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.CheatsMenu.SuspendLayout(); this.toolStrip1.SuspendLayout(); this.AddCheatGroup.SuspendLayout(); @@ -282,10 +283,11 @@ // optionsToolStripMenuItem // this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.saveWindowPositionToolStripMenuItem, this.LoadCheatFileByGameToolStripMenuItem, + this.saveCheatsOnCloseToolStripMenuItem, this.CheatsOnOffLoadToolStripMenuItem, this.autoloadDialogToolStripMenuItem, + this.saveWindowPositionToolStripMenuItem, this.toolStripSeparator5, this.restoreWindowSizeToolStripMenuItem}); this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem"; @@ -694,6 +696,13 @@ this.autoloadDialogToolStripMenuItem.Text = "Auto-load Dialog"; this.autoloadDialogToolStripMenuItem.Click += new System.EventHandler(this.autoloadDialogToolStripMenuItem_Click); // + // saveCheatsOnCloseToolStripMenuItem + // + this.saveCheatsOnCloseToolStripMenuItem.Name = "saveCheatsOnCloseToolStripMenuItem"; + this.saveCheatsOnCloseToolStripMenuItem.Size = new System.Drawing.Size(204, 22); + this.saveCheatsOnCloseToolStripMenuItem.Text = "Save Cheats on Close"; + this.saveCheatsOnCloseToolStripMenuItem.Click += new System.EventHandler(this.saveCheatsOnCloseToolStripMenuItem_Click); + // // Cheats // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -790,5 +799,6 @@ private System.Windows.Forms.ToolStripMenuItem toggleToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem removeSelectedToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem autoloadDialogToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveCheatsOnCloseToolStripMenuItem; } } \ No newline at end of file diff --git a/BizHawk.MultiClient/tools/Cheats.cs b/BizHawk.MultiClient/tools/Cheats.cs index 44b05c32cf..75b51485e4 100644 --- a/BizHawk.MultiClient/tools/Cheats.cs +++ b/BizHawk.MultiClient/tools/Cheats.cs @@ -13,11 +13,9 @@ namespace BizHawk.MultiClient { public partial class Cheats : Form { - //Auto-save cheat file (generating file name based on game name) - //User option to toggle this (on by default) //Implement Freeze functions in all memory domains //Restore Window Size should restore column order as well - //TODO: use currently selected memory domain! - line 50 + //TODO: use currently selected memory domain! - line 71 //context menu - enable/disable highlight dependent items int defaultWidth; //For saving the default size of the dialog, so the user can restore if desired @@ -47,7 +45,7 @@ namespace BizHawk.MultiClient /// public bool AttemptLoadCheatFile() { - string CheatFile = Global.Config.LastRomPath + "\\" + Global.Game.Name + ".cht"; + string CheatFile = MakeDefaultFilename(); var file = new FileInfo(CheatFile); if (file.Exists == false) @@ -59,6 +57,11 @@ namespace BizHawk.MultiClient } } + private string MakeDefaultFilename() + { + return Global.Config.LastRomPath + "\\" + Global.Game.Name + ".cht"; + } + private void ClearFields() { NameBox.Text = ""; @@ -85,8 +88,11 @@ namespace BizHawk.MultiClient protected override void OnClosing(CancelEventArgs e) { - if (!AskSave()) - e.Cancel = true; + if (!Global.Config.CheatsAutoSaveOnClose) + { + if (!AskSave()) + e.Cancel = true; + } base.OnClosing(e); } @@ -257,6 +263,17 @@ namespace BizHawk.MultiClient Global.Config.CheatsValueWidth = CheatListView.Columns[2].Width; Global.Config.CheatsDomainWidth = CheatListView.Columns[3].Width; Global.Config.CheatsOnWidth = CheatListView.Columns[4].Width; + + if (Global.Config.CheatsAutoSaveOnClose) + { + if (changes) + { + if (currentCheatFile.Length == 0) + currentCheatFile = MakeDefaultFilename(); + + SaveCheatFile(currentCheatFile); + } + } } private void DisplayCheatsList() @@ -706,6 +723,7 @@ namespace BizHawk.MultiClient CheatsOnOffLoadToolStripMenuItem.Checked = Global.Config.DisableCheatsOnLoad; autoloadDialogToolStripMenuItem.Checked = Global.Config.AutoLoadCheats; LoadCheatFileByGameToolStripMenuItem.Checked = Global.Config.LoadCheatFileByGame; + saveCheatsOnCloseToolStripMenuItem.Checked = Global.Config.CheatsAutoSaveOnClose; } private void DuplicateCheat() @@ -930,5 +948,10 @@ namespace BizHawk.MultiClient { Global.Config.LoadCheatFileByGame ^= true; } + + private void saveCheatsOnCloseToolStripMenuItem_Click(object sender, EventArgs e) + { + Global.Config.CheatsAutoSaveOnClose ^= true; + } } }