From 0330e1f742bdf73aad66eb97778d6320991ae095 Mon Sep 17 00:00:00 2001 From: "andres.delikat" Date: Tue, 27 Mar 2012 21:09:36 +0000 Subject: [PATCH] Lua - implement savestate.registersave() --- BizHawk.MultiClient/LuaImplementation.cs | 24 +++++++++++++++++++++++- BizHawk.MultiClient/MainForm.cs | 1 + 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/BizHawk.MultiClient/LuaImplementation.cs b/BizHawk.MultiClient/LuaImplementation.cs index f0abfb75c0..0980b4397e 100644 --- a/BizHawk.MultiClient/LuaImplementation.cs +++ b/BizHawk.MultiClient/LuaImplementation.cs @@ -22,6 +22,22 @@ namespace BizHawk.MultiClient private int CurrentMemoryDomain = 0; //Main memory by default public bool FrameAdvanceRequested; Lua currThread; + LuaFunction savestate_registersavefunc; + + public void SavestateRegisterSave() + { + if (savestate_registersavefunc != null) + { + try + { + savestate_registersavefunc.Call(); + } + catch + { + Global.RenderPanel.AddMessage("error running function attached by lua function savestate.registersave"); + } + } + } public LuaImplementation(LuaConsole passed) { @@ -285,6 +301,7 @@ namespace BizHawk.MultiClient "loadslot", "save", "load", + "registersave", }; public static string[] MovieFunctions = new string[] { @@ -297,7 +314,7 @@ namespace BizHawk.MultiClient "getreadonly", "setreadonly", //"rerecordcounting", - "getinput", + "getinput", }; public static string[] InputFunctions = new string[] { @@ -1073,6 +1090,11 @@ namespace BizHawk.MultiClient } } + public void savestate_registersave(LuaFunction luaf) + { + savestate_registersavefunc = luaf; + } + //---------------------------------------------------- //Movie library //---------------------------------------------------- diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index def0f58aa4..8b812bde28 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -1892,6 +1892,7 @@ namespace BizHawk.MultiClient public void SaveStateFile(StreamWriter writer, string name, bool fromLua) { + LuaConsole1.LuaImp.SavestateRegisterSave(); Global.Emulator.SaveStateText(writer); HandleMovieSaveState(writer); if (Global.Config.SaveScreenshotWithStates)