diff --git a/BizHawk.MultiClient/Config.cs b/BizHawk.MultiClient/Config.cs index f42f985a04..bdf56b6d6e 100644 --- a/BizHawk.MultiClient/Config.cs +++ b/BizHawk.MultiClient/Config.cs @@ -110,6 +110,7 @@ public bool HotkeyConfigAutoTab = true; public bool InputConfigAutoTab = true; public bool ShowLogWindow = false; + public bool BackupSavestates = true; // Run-Control settings public int FrameProgressDelayMs = 500; //how long until a frame advance hold turns into a frame progress? diff --git a/BizHawk.MultiClient/MainForm.Designer.cs b/BizHawk.MultiClient/MainForm.Designer.cs index ae332573f4..b64381dbf8 100644 --- a/BizHawk.MultiClient/MainForm.Designer.cs +++ b/BizHawk.MultiClient/MainForm.Designer.cs @@ -238,6 +238,7 @@ this.toolStripSeparator20 = new System.Windows.Forms.ToolStripSeparator(); this.screenshotToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.closeROMToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.backupSavestatesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.StatusSlot0.SuspendLayout(); this.contextMenuStrip1.SuspendLayout(); @@ -259,7 +260,7 @@ this.menuStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow; this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(470, 21); + this.menuStrip1.Size = new System.Drawing.Size(470, 40); this.menuStrip1.TabIndex = 0; this.menuStrip1.Text = "menuStrip1"; this.menuStrip1.MenuDeactivate += new System.EventHandler(this.menuStrip1_MenuDeactivate); @@ -1111,7 +1112,7 @@ // this.controllersToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.GameController; this.controllersToolStripMenuItem.Name = "controllersToolStripMenuItem"; - this.controllersToolStripMenuItem.Size = new System.Drawing.Size(149, 22); + this.controllersToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.controllersToolStripMenuItem.Text = "&Controllers..."; this.controllersToolStripMenuItem.Click += new System.EventHandler(this.controllersToolStripMenuItem_Click); // @@ -1119,7 +1120,7 @@ // this.hotkeysToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.HotKeys; this.hotkeysToolStripMenuItem.Name = "hotkeysToolStripMenuItem"; - this.hotkeysToolStripMenuItem.Size = new System.Drawing.Size(149, 22); + this.hotkeysToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.hotkeysToolStripMenuItem.Text = "&Hotkeys..."; this.hotkeysToolStripMenuItem.Click += new System.EventHandler(this.hotkeysToolStripMenuItem_Click); // @@ -1127,7 +1128,7 @@ // this.messagesToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.MessageConfig; this.messagesToolStripMenuItem.Name = "messagesToolStripMenuItem"; - this.messagesToolStripMenuItem.Size = new System.Drawing.Size(149, 22); + this.messagesToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.messagesToolStripMenuItem.Text = "&Messages..."; this.messagesToolStripMenuItem.Click += new System.EventHandler(this.messagesToolStripMenuItem_Click); // @@ -1135,7 +1136,7 @@ // this.pathsToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.CopyFolderHS; this.pathsToolStripMenuItem.Name = "pathsToolStripMenuItem"; - this.pathsToolStripMenuItem.Size = new System.Drawing.Size(149, 22); + this.pathsToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.pathsToolStripMenuItem.Text = "Paths..."; this.pathsToolStripMenuItem.Click += new System.EventHandler(this.pathsToolStripMenuItem_Click); // @@ -1143,14 +1144,14 @@ // this.soundToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.AudioHS; this.soundToolStripMenuItem.Name = "soundToolStripMenuItem"; - this.soundToolStripMenuItem.Size = new System.Drawing.Size(149, 22); + this.soundToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.soundToolStripMenuItem.Text = "&Sound..."; this.soundToolStripMenuItem.Click += new System.EventHandler(this.soundToolStripMenuItem_Click); // // toolStripSeparator9 // this.toolStripSeparator9.Name = "toolStripSeparator9"; - this.toolStripSeparator9.Size = new System.Drawing.Size(146, 6); + this.toolStripSeparator9.Size = new System.Drawing.Size(149, 6); // // gUIToolStripMenuItem // @@ -1163,9 +1164,10 @@ this.runInBackgroundToolStripMenuItem, this.acceptBackgroundInputToolStripMenuItem, this.singleInstanceModeToolStripMenuItem, - this.enableContextMenuToolStripMenuItem}); + this.enableContextMenuToolStripMenuItem, + this.backupSavestatesToolStripMenuItem}); this.gUIToolStripMenuItem.Name = "gUIToolStripMenuItem"; - this.gUIToolStripMenuItem.Size = new System.Drawing.Size(149, 22); + this.gUIToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.gUIToolStripMenuItem.Text = "GUI"; this.gUIToolStripMenuItem.DropDownOpened += new System.EventHandler(this.gUIToolStripMenuItem_DropDownOpened); // @@ -1256,7 +1258,7 @@ this.miSpeed150, this.miSpeed200}); this.frameSkipToolStripMenuItem.Name = "frameSkipToolStripMenuItem"; - this.frameSkipToolStripMenuItem.Size = new System.Drawing.Size(149, 22); + this.frameSkipToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.frameSkipToolStripMenuItem.Text = "Speed/Skip"; this.frameSkipToolStripMenuItem.DropDownOpened += new System.EventHandler(this.frameSkipToolStripMenuItem_DropDownOpened); // @@ -1399,13 +1401,13 @@ // toolStripSeparator10 // this.toolStripSeparator10.Name = "toolStripSeparator10"; - this.toolStripSeparator10.Size = new System.Drawing.Size(146, 6); + this.toolStripSeparator10.Size = new System.Drawing.Size(149, 6); // // saveConfigToolStripMenuItem // this.saveConfigToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.Save; this.saveConfigToolStripMenuItem.Name = "saveConfigToolStripMenuItem"; - this.saveConfigToolStripMenuItem.Size = new System.Drawing.Size(149, 22); + this.saveConfigToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.saveConfigToolStripMenuItem.Text = "Save Config"; this.saveConfigToolStripMenuItem.Click += new System.EventHandler(this.saveConfigToolStripMenuItem_Click); // @@ -1413,7 +1415,7 @@ // this.loadConfigToolStripMenuItem.Image = global::BizHawk.MultiClient.Properties.Resources.LoadConfig; this.loadConfigToolStripMenuItem.Name = "loadConfigToolStripMenuItem"; - this.loadConfigToolStripMenuItem.Size = new System.Drawing.Size(149, 22); + this.loadConfigToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.loadConfigToolStripMenuItem.Text = "Load Config"; // // toolsToolStripMenuItem @@ -1932,6 +1934,13 @@ this.closeROMToolStripMenuItem1.Text = "Close ROM"; this.closeROMToolStripMenuItem1.Click += new System.EventHandler(this.closeROMToolStripMenuItem1_Click); // + // backupSavestatesToolStripMenuItem + // + this.backupSavestatesToolStripMenuItem.Name = "backupSavestatesToolStripMenuItem"; + this.backupSavestatesToolStripMenuItem.Size = new System.Drawing.Size(220, 22); + this.backupSavestatesToolStripMenuItem.Text = "Backup Savestates"; + this.backupSavestatesToolStripMenuItem.Click += new System.EventHandler(this.backupSavestatesToolStripMenuItem_Click); + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 14F); @@ -2171,6 +2180,7 @@ private System.Windows.Forms.ToolStripMenuItem stopAVIToolStripMenuItem; private System.Windows.Forms.ToolStripStatusLabel AVIStatusLabel; private System.Windows.Forms.ToolStripMenuItem restartMovieToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem backupSavestatesToolStripMenuItem; } } diff --git a/BizHawk.MultiClient/MainForm.MenuItems.cs b/BizHawk.MultiClient/MainForm.MenuItems.cs index b7c0310db2..3038fd8e87 100644 --- a/BizHawk.MultiClient/MainForm.MenuItems.cs +++ b/BizHawk.MultiClient/MainForm.MenuItems.cs @@ -1088,6 +1088,7 @@ namespace BizHawk.MultiClient acceptBackgroundInputToolStripMenuItem.Checked = Global.Config.AcceptBackgroundInput; singleInstanceModeToolStripMenuItem.Checked = Global.Config.SingleInstanceMode; enableContextMenuToolStripMenuItem.Checked = Global.Config.ShowContextMenu; + backupSavestatesToolStripMenuItem.Checked = Global.Config.BackupSavestates; } private void MainForm_Load(object sender, EventArgs e) @@ -1290,5 +1291,10 @@ namespace BizHawk.MultiClient exit = true; base.OnClosed(e); } + + private void backupSavestatesToolStripMenuItem_Click(object sender, EventArgs e) + { + Global.Config.BackupSavestates ^= true; + } } } \ No newline at end of file diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index d675aeffb7..9894cddc77 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -1569,6 +1569,16 @@ namespace BizHawk.MultiClient if (file.Directory.Exists == false) file.Directory.Create(); + //Make backup first + if (Global.Config.BackupSavestates && file.Exists == true) + { + string backup = path + ".bak"; + var backupFile = new FileInfo(backup); + if (backupFile.Exists == true) + backupFile.Delete(); + file.CopyTo(backup); + } + var writer = new StreamWriter(path); SaveStateFile(writer, name); }