Lua - change event register functions to support multi-functions

This commit is contained in:
adelikat 2013-08-04 22:31:23 +00:00
parent 8e8cf4a8fe
commit 40e785ecea
1 changed files with 44 additions and 16 deletions

View File

@ -25,20 +25,23 @@ namespace BizHawk.MultiClient
private readonly LuaConsole Caller; private readonly LuaConsole Caller;
private int CurrentMemoryDomain; //Main memory by default private int CurrentMemoryDomain; //Main memory by default
private Lua currThread; private Lua currThread;
private LuaFunction savestate_registersavefunc; private List<LuaFunction> on_savestate_save_events;
private LuaFunction savestate_registerloadfunc; private List<LuaFunction> on_savestate_load_events;
private LuaFunction frame_startfunc; private List<LuaFunction> on_framestart_events;
private LuaFunction frame_endfunc; private List<LuaFunction> on_frameend_events;
private readonly Dictionary<Color, SolidBrush> SolidBrushes = new Dictionary<Color, SolidBrush>(); private readonly Dictionary<Color, SolidBrush> SolidBrushes = new Dictionary<Color, SolidBrush>();
private readonly Dictionary<Color, Pen> Pens = new Dictionary<Color, Pen>(); private readonly Dictionary<Color, Pen> Pens = new Dictionary<Color, Pen>();
public void SavestateRegisterSave(string name) public void SavestateRegisterSave(string name)
{ {
if (savestate_registersavefunc != null) if (on_savestate_save_events != null)
{ {
try try
{ {
savestate_registersavefunc.Call(name); foreach (LuaFunction lf in on_savestate_save_events)
{
lf.Call(name);
}
} }
catch (SystemException e) catch (SystemException e)
{ {
@ -51,11 +54,14 @@ namespace BizHawk.MultiClient
public void SavestateRegisterLoad(string name) public void SavestateRegisterLoad(string name)
{ {
if (savestate_registerloadfunc != null) if (on_savestate_load_events != null)
{ {
try try
{ {
savestate_registerloadfunc.Call(name); foreach (LuaFunction lf in on_savestate_load_events)
{
lf.Call(name);
}
} }
catch (SystemException e) catch (SystemException e)
{ {
@ -68,11 +74,14 @@ namespace BizHawk.MultiClient
public void FrameRegisterBefore() public void FrameRegisterBefore()
{ {
if (frame_startfunc != null) if (on_framestart_events != null)
{ {
try try
{ {
frame_startfunc.Call(); foreach (LuaFunction lf in on_framestart_events)
{
lf.Call();
}
} }
catch (SystemException e) catch (SystemException e)
{ {
@ -85,11 +94,14 @@ namespace BizHawk.MultiClient
public void FrameRegisterAfter() public void FrameRegisterAfter()
{ {
if (frame_endfunc != null) if (on_frameend_events != null)
{ {
try try
{ {
frame_endfunc.Call(); foreach (LuaFunction lf in on_frameend_events)
{
lf.Call();
}
} }
catch (SystemException e) catch (SystemException e)
{ {
@ -2027,12 +2039,20 @@ namespace BizHawk.MultiClient
public void savestate_registersave(LuaFunction luaf) public void savestate_registersave(LuaFunction luaf)
{ {
savestate_registersavefunc = luaf; if (on_savestate_save_events == null)
{
on_savestate_save_events = new List<LuaFunction>();
}
on_savestate_save_events.Add(luaf);
} }
public void savestate_registerload(LuaFunction luaf) public void savestate_registerload(LuaFunction luaf)
{ {
savestate_registerloadfunc = luaf; if (on_savestate_load_events == null)
{
on_savestate_load_events = new List<LuaFunction>();
}
on_savestate_load_events.Add(luaf);
} }
//---------------------------------------------------- //----------------------------------------------------
@ -3116,12 +3136,20 @@ namespace BizHawk.MultiClient
public void event_onframestart(LuaFunction luaf) public void event_onframestart(LuaFunction luaf)
{ {
frame_startfunc = luaf; if (on_framestart_events == null)
{
on_framestart_events = new List<LuaFunction>();
}
on_framestart_events.Add(luaf);
} }
public void event_onframeend(LuaFunction luaf) public void event_onframeend(LuaFunction luaf)
{ {
frame_endfunc = luaf; if (on_frameend_events == null)
{
on_frameend_events = new List<LuaFunction>();
}
on_frameend_events.Add(luaf);
} }
public void event_oninputpoll(LuaFunction luaf) public void event_oninputpoll(LuaFunction luaf)