diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index dc05ba3a5f..c4ce98fbcc 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -293,32 +293,32 @@ namespace BizHawk.Client.EmuHawk CloseRom(); } - private void Savestate1MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave1"); } - private void Savestate2MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave2"); } - private void Savestate3MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave3"); } - private void Savestate4MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave4"); } - private void Savestate5MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave5"); } - private void Savestate6MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave6"); } - private void Savestate7MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave7"); } - private void Savestate8MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave8"); } - private void Savestate9MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave9"); } - private void Savestate0MenuItem_Click(object sender, EventArgs e) { SaveState("QuickSave0"); } + private void Savestate1MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave1"); } + private void Savestate2MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave2"); } + private void Savestate3MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave3"); } + private void Savestate4MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave4"); } + private void Savestate5MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave5"); } + private void Savestate6MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave6"); } + private void Savestate7MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave7"); } + private void Savestate8MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave8"); } + private void Savestate9MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave9"); } + private void Savestate0MenuItem_Click(object sender, EventArgs e) { SaveQuickSave("QuickSave0"); } private void SaveNamedStateMenuItem_Click(object sender, EventArgs e) { SaveStateAs(); } - private void Loadstate1MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave1"); } - private void Loadstate2MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave2"); } - private void Loadstate3MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave3"); } - private void Loadstate4MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave4"); } - private void Loadstate5MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave5"); } - private void Loadstate6MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave6"); } - private void Loadstate7MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave7"); } - private void Loadstate8MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave8"); } - private void Loadstate9MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave9"); } - private void Loadstate0MenuItem_Click(object sender, EventArgs e) { LoadState("QuickSave0"); } + private void Loadstate1MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave1"); } + private void Loadstate2MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave2"); } + private void Loadstate3MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave3"); } + private void Loadstate4MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave4"); } + private void Loadstate5MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave5"); } + private void Loadstate6MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave6"); } + private void Loadstate7MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave7"); } + private void Loadstate8MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave8"); } + private void Loadstate9MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave9"); } + private void Loadstate0MenuItem_Click(object sender, EventArgs e) { LoadQuickSave("QuickSave0"); } private void LoadNamedStateMenuItem_Click(object sender, EventArgs e) { @@ -359,12 +359,12 @@ namespace BizHawk.Client.EmuHawk private void SaveToCurrentSlotMenuItem_Click(object sender, EventArgs e) { - SaveState("QuickSave" + Global.Config.SaveSlot); + SaveQuickSave("QuickSave" + Global.Config.SaveSlot); } private void LoadCurrentSlotMenuItem_Click(object sender, EventArgs e) { - LoadState("QuickSave" + Global.Config.SaveSlot); + LoadQuickSave("QuickSave" + Global.Config.SaveSlot); } private void ReadonlyMenuItem_Click(object sender, EventArgs e) @@ -1912,12 +1912,12 @@ namespace BizHawk.Client.EmuHawk { if (_stateSlots.HasSlot(slot)) { - LoadState("QuickSave" + slot); + LoadQuickSave("QuickSave" + slot); } } else if (e.Button == MouseButtons.Right) { - SaveState("QuickSave" + slot); + SaveQuickSave("QuickSave" + slot); } } @@ -2073,7 +2073,7 @@ namespace BizHawk.Client.EmuHawk } else if (ext.ToUpper() == ".STATE") { - LoadStateFile(filePaths[0], Path.GetFileName(filePaths[0])); + LoadState(filePaths[0], Path.GetFileName(filePaths[0])); } else if (ext.ToUpper() == ".CHT") { diff --git a/BizHawk.Client.EmuHawk/MainForm.Movie.cs b/BizHawk.Client.EmuHawk/MainForm.Movie.cs index 44de363f96..a019400fb5 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Movie.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Movie.cs @@ -65,7 +65,7 @@ namespace BizHawk.Client.EmuHawk if (Global.MovieSession.Movie.Header.StartsFromSavestate) { - LoadStateFile(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename)); + LoadState(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename)); Global.Emulator.ResetCounters(); } @@ -148,7 +148,7 @@ namespace BizHawk.Client.EmuHawk LoadRom(CurrentlyOpenRom, true, true); if (Global.MovieSession.Movie.Header.StartsFromSavestate) { - LoadStateFile(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename)); + LoadState(Global.MovieSession.Movie.Filename, Path.GetFileName(Global.MovieSession.Movie.Filename)); Global.Emulator.ResetCounters(); } diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index c07e5b4b23..a2cd9a41ae 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -265,11 +265,11 @@ namespace BizHawk.Client.EmuHawk if (cmdLoadState != null && Global.Game != null) { - LoadState("QuickSave" + cmdLoadState); + LoadQuickSave("QuickSave" + cmdLoadState); } else if (Global.Config.AutoLoadLastSaveSlot && Global.Game != null) { - LoadState("QuickSave" + Global.Config.SaveSlot); + LoadQuickSave("QuickSave" + Global.Config.SaveSlot); } if (Global.Config.RecentWatches.AutoLoad) @@ -1012,8 +1012,8 @@ namespace BizHawk.Client.EmuHawk _unthrottled ^= true; GlobalWin.OSD.AddMessage("Unthrottled: " + _unthrottled); break; - case "Quick Load": LoadState("QuickSave" + Global.Config.SaveSlot); break; - case "Quick Save": SaveState("QuickSave" + Global.Config.SaveSlot); break; + case "Quick Load": LoadQuickSave("QuickSave" + Global.Config.SaveSlot); break; + case "Quick Save": SaveQuickSave("QuickSave" + Global.Config.SaveSlot); break; case "Screenshot": TakeScreenshot(); break; case "Full Screen": ToggleFullscreen(); break; case "Open ROM": OpenRom(); break; @@ -1039,26 +1039,26 @@ namespace BizHawk.Client.EmuHawk Global.Config.AutoSavestates = autoSaveState; break; - case "Save State 0": SaveState("QuickSave0"); break; - case "Save State 1": SaveState("QuickSave1"); break; - case "Save State 2": SaveState("QuickSave2"); break; - case "Save State 3": SaveState("QuickSave3"); break; - case "Save State 4": SaveState("QuickSave4"); break; - case "Save State 5": SaveState("QuickSave5"); break; - case "Save State 6": SaveState("QuickSave6"); break; - case "Save State 7": SaveState("QuickSave7"); break; - case "Save State 8": SaveState("QuickSave8"); break; - case "Save State 9": SaveState("QuickSave9"); break; - case "Load State 0": LoadState("QuickSave0"); break; - case "Load State 1": LoadState("QuickSave1"); break; - case "Load State 2": LoadState("QuickSave2"); break; - case "Load State 3": LoadState("QuickSave3"); break; - case "Load State 4": LoadState("QuickSave4"); break; - case "Load State 5": LoadState("QuickSave5"); break; - case "Load State 6": LoadState("QuickSave6"); break; - case "Load State 7": LoadState("QuickSave7"); break; - case "Load State 8": LoadState("QuickSave8"); break; - case "Load State 9": LoadState("QuickSave9"); break; + case "Save State 0": SaveQuickSave("QuickSave0"); break; + case "Save State 1": SaveQuickSave("QuickSave1"); break; + case "Save State 2": SaveQuickSave("QuickSave2"); break; + case "Save State 3": SaveQuickSave("QuickSave3"); break; + case "Save State 4": SaveQuickSave("QuickSave4"); break; + case "Save State 5": SaveQuickSave("QuickSave5"); break; + case "Save State 6": SaveQuickSave("QuickSave6"); break; + case "Save State 7": SaveQuickSave("QuickSave7"); break; + case "Save State 8": SaveQuickSave("QuickSave8"); break; + case "Save State 9": SaveQuickSave("QuickSave9"); break; + case "Load State 0": LoadQuickSave("QuickSave0"); break; + case "Load State 1": LoadQuickSave("QuickSave1"); break; + case "Load State 2": LoadQuickSave("QuickSave2"); break; + case "Load State 3": LoadQuickSave("QuickSave3"); break; + case "Load State 4": LoadQuickSave("QuickSave4"); break; + case "Load State 5": LoadQuickSave("QuickSave5"); break; + case "Load State 6": LoadQuickSave("QuickSave6"); break; + case "Load State 7": LoadQuickSave("QuickSave7"); break; + case "Load State 8": LoadQuickSave("QuickSave8"); break; + case "Load State 9": LoadQuickSave("QuickSave9"); break; case "Select State 0": SelectSlot(0); break; case "Select State 1": SelectSlot(1); break; case "Select State 2": SelectSlot(2); break; @@ -1694,7 +1694,7 @@ namespace BizHawk.Client.EmuHawk var result = sfd.ShowHawkDialog(); if (result == DialogResult.OK) { - SaveStateFile(sfd.FileName, sfd.FileName, false); + SaveState(sfd.FileName, sfd.FileName, false); } } @@ -1723,7 +1723,7 @@ namespace BizHawk.Client.EmuHawk return; } - LoadStateFile(ofd.FileName, Path.GetFileName(ofd.FileName)); + LoadState(ofd.FileName, Path.GetFileName(ofd.FileName)); } private static void SaveSlotSelectedMessage() @@ -2361,6 +2361,59 @@ namespace BizHawk.Client.EmuHawk }); } + public void LoadState(string path, string userFriendlyStateName, bool fromLua = false) // Move to client.common + { + GlobalWin.DisplayManager.NeedsToPaint = true; + + if (SavestateManager.LoadStateFile(path, userFriendlyStateName)) + { + SetMainformMovieInfo(); + GlobalWin.OSD.ClearGUIText(); + GlobalWin.Tools.UpdateToolsBefore(fromLua); + UpdateToolsAfter(fromLua); + UpdateToolsLoadstate(); + GlobalWin.OSD.AddMessage("Loaded state: " + userFriendlyStateName); + + if (GlobalWin.Tools.Has()) + { + GlobalWin.Tools.LuaConsole.LuaImp.CallLoadStateEvent(userFriendlyStateName); + } + } + else + { + GlobalWin.OSD.AddMessage("Loadstate error!"); + } + } + + public void LoadQuickSave(string quickSlotName, bool fromLua = false) + { + if (Global.Emulator is NullEmulator) + { + return; + } + + var path = PathManager.SaveStatePrefix(Global.Game) + "." + quickSlotName + ".State"; + if (File.Exists(path) == false) + { + GlobalWin.OSD.AddMessage("Unable to load " + quickSlotName + ".State"); + return; + } + + LoadState(path, quickSlotName, fromLua); + } + + public void SaveState(string path, string userFriendlyStateName, bool fromLua) + { + SavestateManager.SaveStateFile(path, userFriendlyStateName); + + GlobalWin.OSD.AddMessage("Saved state: " + userFriendlyStateName); + + if (!fromLua) + { + UpdateStatusSlots(); + } + } + // Alt key hacks protected override void WndProc(ref Message m) { @@ -2962,7 +3015,7 @@ namespace BizHawk.Client.EmuHawk if (Global.Config.AutoSavestates) { - LoadState("Auto"); + LoadQuickSave("Auto"); } GlobalWin.Tools.Restart(); @@ -3011,14 +3064,15 @@ namespace BizHawk.Client.EmuHawk } } - public void SaveState(string name) // Move to client.common + // TODO: should backup logic be stuffed in into Client.Common.SaveStateManager? + public void SaveQuickSave(string quickSlotName) { if (Global.Emulator is NullEmulator) { return; } - var path = PathManager.SaveStatePrefix(Global.Game) + "." + name + ".State"; + var path = PathManager.SaveStatePrefix(Global.Game) + "." + quickSlotName + ".State"; var file = new FileInfo(path); if (file.Directory != null && file.Directory.Exists == false) @@ -3026,6 +3080,7 @@ namespace BizHawk.Client.EmuHawk file.Directory.Create(); } + // Make backup first if (Global.Config.BackupSavestates && file.Exists) { @@ -3039,67 +3094,14 @@ namespace BizHawk.Client.EmuHawk file.CopyTo(backup); } - SaveStateFile(path, name, false); + SaveState(path, quickSlotName, false); if (GlobalWin.Tools.Has()) { - GlobalWin.Tools.LuaConsole.LuaImp.CallSaveStateEvent(name); + GlobalWin.Tools.LuaConsole.LuaImp.CallSaveStateEvent(quickSlotName); } } - public void SaveStateFile(string filename, string name, bool fromLua) // Move to client.common - { - SavestateManager.SaveStateFile(filename, name); - - GlobalWin.OSD.AddMessage("Saved state: " + name); - - if (!fromLua) - { - UpdateStatusSlots(); - } - } - - public void LoadStateFile(string path, string name, bool fromLua = false) // Move to client.commo - { - GlobalWin.DisplayManager.NeedsToPaint = true; - - if (SavestateManager.LoadStateFile(path, name)) - { - SetMainformMovieInfo(); - GlobalWin.OSD.ClearGUIText(); - GlobalWin.Tools.UpdateToolsBefore(fromLua); - UpdateToolsAfter(fromLua); - UpdateToolsLoadstate(); - GlobalWin.OSD.AddMessage("Loaded state: " + name); - - if (GlobalWin.Tools.Has()) - { - GlobalWin.Tools.LuaConsole.LuaImp.CallLoadStateEvent(name); - } - } - else - { - GlobalWin.OSD.AddMessage("Loadstate error!"); - } - } - - public void LoadState(string name, bool fromLua = false) // Move to client.commo - { - if (Global.Emulator is NullEmulator) - { - return; - } - - var path = PathManager.SaveStatePrefix(Global.Game) + "." + name + ".State"; - if (File.Exists(path) == false) - { - GlobalWin.OSD.AddMessage("Unable to load " + name + ".State"); - return; - } - - LoadStateFile(path, name, fromLua); - } - private static void CommitCoreSettingsToConfig() { // save settings object @@ -3119,7 +3121,7 @@ namespace BizHawk.Client.EmuHawk { if (Global.Config.AutoSavestates && Global.Emulator is NullEmulator == false) { - SaveState("Auto"); + SaveQuickSave("Auto"); } if (clearSram) diff --git a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Savestate.cs b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Savestate.cs index f06ed56f4d..e970724f4b 100644 --- a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Savestate.cs +++ b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Savestate.cs @@ -25,7 +25,7 @@ namespace BizHawk.Client.EmuHawk { if (lua_input is string) { - GlobalWin.MainForm.LoadStateFile(lua_input.ToString(), Path.GetFileName(lua_input.ToString()), true); + GlobalWin.MainForm.LoadState(lua_input.ToString(), Path.GetFileName(lua_input.ToString()), true); } } @@ -35,7 +35,7 @@ namespace BizHawk.Client.EmuHawk if (slot >= 0 && slot <= 9) { - GlobalWin.MainForm.LoadState("QuickSave" + slot.ToString(), true); + GlobalWin.MainForm.LoadQuickSave("QuickSave" + slot.ToString(), true); } } @@ -44,7 +44,7 @@ namespace BizHawk.Client.EmuHawk if (lua_input is string) { string path = lua_input.ToString(); - GlobalWin.MainForm.SaveStateFile(path, path, true); + GlobalWin.MainForm.SaveState(path, path, true); } } @@ -54,7 +54,7 @@ namespace BizHawk.Client.EmuHawk if (slot >= 0 && slot <= 9) { - GlobalWin.MainForm.SaveState("QuickSave" + slot.ToString()); + GlobalWin.MainForm.SaveQuickSave("QuickSave" + slot.ToString()); } } }