Lua - OnInputPoll() - hooked up to the registered lua functions system
This commit is contained in:
parent
ea24f236fb
commit
ded77beb65
|
@ -37,13 +37,13 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
#region Events Library Helpers
|
#region Events Library Helpers
|
||||||
|
|
||||||
private readonly LuaFunctionList lua_functions = new LuaFunctionList();
|
private readonly LuaFunctionList _luaFunctions = new LuaFunctionList();
|
||||||
|
|
||||||
public LuaFunctionList RegisteredFunctions { get { return lua_functions; } }
|
public LuaFunctionList RegisteredFunctions { get { return _luaFunctions; } }
|
||||||
|
|
||||||
public void CallSaveStateEvent(string name)
|
public void CallSaveStateEvent(string name)
|
||||||
{
|
{
|
||||||
List<NamedLuaFunction> lfs = lua_functions.Where(x => x.Event == "OnSavestateSave").ToList();
|
List<NamedLuaFunction> lfs = _luaFunctions.Where(x => x.Event == "OnSavestateSave").ToList();
|
||||||
if (lfs.Any())
|
if (lfs.Any())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -65,7 +65,7 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
public void CallLoadStateEvent(string name)
|
public void CallLoadStateEvent(string name)
|
||||||
{
|
{
|
||||||
List<NamedLuaFunction> lfs = lua_functions.Where(x => x.Event == "OnSavestateLoad").ToList();
|
List<NamedLuaFunction> lfs = _luaFunctions.Where(x => x.Event == "OnSavestateLoad").ToList();
|
||||||
if (lfs.Any())
|
if (lfs.Any())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -87,7 +87,7 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
public void CallFrameBeforeEvent()
|
public void CallFrameBeforeEvent()
|
||||||
{
|
{
|
||||||
List<NamedLuaFunction> lfs = lua_functions.Where(x => x.Event == "OnFrameStart").ToList();
|
List<NamedLuaFunction> lfs = _luaFunctions.Where(x => x.Event == "OnFrameStart").ToList();
|
||||||
if (lfs.Any())
|
if (lfs.Any())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -109,7 +109,7 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
public void CallFrameAfterEvent()
|
public void CallFrameAfterEvent()
|
||||||
{
|
{
|
||||||
List<NamedLuaFunction> lfs = lua_functions.Where(x => x.Event == "OnFrameEnd").ToList();
|
List<NamedLuaFunction> lfs = _luaFunctions.Where(x => x.Event == "OnFrameEnd").ToList();
|
||||||
if (lfs.Any())
|
if (lfs.Any())
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -133,47 +133,29 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
public string event_onframeend(LuaFunction luaf, string name = null)
|
public string event_onframeend(LuaFunction luaf, string name = null)
|
||||||
{
|
{
|
||||||
NamedLuaFunction nlf = new NamedLuaFunction(luaf, "OnFrameEnd", name);
|
NamedLuaFunction nlf = new NamedLuaFunction(luaf, "OnFrameEnd", LogOutputCallback, name);
|
||||||
lua_functions.Add(nlf);
|
_luaFunctions.Add(nlf);
|
||||||
return nlf.GUID.ToString();
|
return nlf.GUID.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public string event_onframestart(LuaFunction luaf, string name = null)
|
public string event_onframestart(LuaFunction luaf, string name = null)
|
||||||
{
|
{
|
||||||
NamedLuaFunction nlf = new NamedLuaFunction(luaf, "OnFrameStart", name);
|
NamedLuaFunction nlf = new NamedLuaFunction(luaf, "OnFrameStart", LogOutputCallback, name);
|
||||||
lua_functions.Add(nlf);
|
_luaFunctions.Add(nlf);
|
||||||
return nlf.GUID.ToString();
|
return nlf.GUID.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void event_oninputpoll(LuaFunction luaf)
|
public void event_oninputpoll(LuaFunction luaf, string name = null)
|
||||||
{
|
{
|
||||||
if (luaf != null)
|
NamedLuaFunction nlf = new NamedLuaFunction(luaf, "OnInputPoll", LogOutputCallback, name);
|
||||||
{
|
_luaFunctions.Add(nlf);
|
||||||
Global.Emulator.CoreComm.InputCallback.Add(delegate
|
Global.Emulator.CoreComm.InputCallback.Add(nlf.Callback);
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
luaf.Call();
|
|
||||||
}
|
|
||||||
catch (SystemException e)
|
|
||||||
{
|
|
||||||
LogOutputCallback(
|
|
||||||
"error running function attached by lua function event.oninputpoll" +
|
|
||||||
"\nError message: "
|
|
||||||
+ e.Message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Global.Emulator.CoreComm.InputCallback = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string event_onloadstate(LuaFunction luaf, object name = null)
|
public string event_onloadstate(LuaFunction luaf, string name = null)
|
||||||
{
|
{
|
||||||
NamedLuaFunction nlf = new NamedLuaFunction(luaf, "OnSavestateLoad", name != null ? name.ToString() : null);
|
NamedLuaFunction nlf = new NamedLuaFunction(luaf, "OnSavestateLoad", LogOutputCallback, name);
|
||||||
lua_functions.Add(nlf);
|
_luaFunctions.Add(nlf);
|
||||||
return nlf.GUID.ToString();
|
return nlf.GUID.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -251,20 +233,20 @@ namespace BizHawk.Client.Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string event_onsavestate(LuaFunction luaf, object name = null)
|
public string event_onsavestate(LuaFunction luaf, string name = null)
|
||||||
{
|
{
|
||||||
NamedLuaFunction nlf = new NamedLuaFunction(luaf, "OnSavestateSave", name != null ? name.ToString() : null);
|
NamedLuaFunction nlf = new NamedLuaFunction(luaf, "OnSavestateSave", LogOutputCallback, name);
|
||||||
lua_functions.Add(nlf);
|
_luaFunctions.Add(nlf);
|
||||||
return nlf.GUID.ToString();
|
return nlf.GUID.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool event_unregisterbyid(object guid)
|
public bool event_unregisterbyid(object guid)
|
||||||
{
|
{
|
||||||
foreach (NamedLuaFunction nlf in lua_functions)
|
foreach (NamedLuaFunction nlf in _luaFunctions)
|
||||||
{
|
{
|
||||||
if (nlf.GUID.ToString() == guid.ToString())
|
if (nlf.GUID.ToString() == guid.ToString())
|
||||||
{
|
{
|
||||||
lua_functions.Remove(nlf);
|
_luaFunctions.RemoveFunction(nlf);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -274,11 +256,11 @@ namespace BizHawk.Client.Common
|
||||||
|
|
||||||
public bool event_unregisterbyname(object name)
|
public bool event_unregisterbyname(object name)
|
||||||
{
|
{
|
||||||
foreach (NamedLuaFunction nlf in lua_functions)
|
foreach (NamedLuaFunction nlf in _luaFunctions)
|
||||||
{
|
{
|
||||||
if (nlf.Name == name.ToString())
|
if (nlf.Name == name.ToString())
|
||||||
{
|
{
|
||||||
lua_functions.Remove(nlf);
|
_luaFunctions.RemoveFunction(nlf);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,5 +12,11 @@ namespace BizHawk.Client.Common
|
||||||
return this.FirstOrDefault(x => x.GUID.ToString() == guid) ?? null;
|
return this.FirstOrDefault(x => x.GUID.ToString() == guid) ?? null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RemoveFunction(NamedLuaFunction function)
|
||||||
|
{
|
||||||
|
Global.Emulator.CoreComm.InputCallback.Remove(function.Callback);
|
||||||
|
Remove(function);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using LuaInterface;
|
using LuaInterface;
|
||||||
|
|
||||||
namespace BizHawk.Client.Common
|
namespace BizHawk.Client.Common
|
||||||
|
@ -8,13 +9,31 @@ namespace BizHawk.Client.Common
|
||||||
private readonly LuaFunction _function;
|
private readonly LuaFunction _function;
|
||||||
private readonly string _name;
|
private readonly string _name;
|
||||||
private readonly string _event;
|
private readonly string _event;
|
||||||
|
private readonly Action _action;
|
||||||
public NamedLuaFunction(LuaFunction function, string theevent, string name = null)
|
public NamedLuaFunction(LuaFunction function, string theevent, Action<string> logCallback, string name = null)
|
||||||
{
|
{
|
||||||
_function = function;
|
_function = function;
|
||||||
_name = name ?? "Anonymous";
|
_name = name ?? "Anonymous";
|
||||||
_event = theevent;
|
_event = theevent;
|
||||||
GUID = Guid.NewGuid();
|
GUID = Guid.NewGuid();
|
||||||
|
|
||||||
|
_action = new Action(delegate
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_function.Call();
|
||||||
|
}
|
||||||
|
catch (SystemException ex)
|
||||||
|
{
|
||||||
|
logCallback(
|
||||||
|
"error running function attached by the event " +
|
||||||
|
_event +
|
||||||
|
"\nError message: " +
|
||||||
|
ex.Message
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public Guid GUID { get; private set; }
|
public Guid GUID { get; private set; }
|
||||||
|
@ -33,5 +52,10 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
get { return _event; }
|
get { return _event; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Action Callback
|
||||||
|
{
|
||||||
|
get { return _action; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
if (indexes.Count > 0)
|
if (indexes.Count > 0)
|
||||||
{
|
{
|
||||||
NamedLuaFunction nlf = GlobalWin.Tools.LuaConsole.LuaImp.RegisteredFunctions[indexes[0]];
|
NamedLuaFunction nlf = GlobalWin.Tools.LuaConsole.LuaImp.RegisteredFunctions[indexes[0]];
|
||||||
GlobalWin.Tools.LuaConsole.LuaImp.RegisteredFunctions.Remove(nlf);
|
GlobalWin.Tools.LuaConsole.LuaImp.RegisteredFunctions.RemoveFunction(nlf);
|
||||||
PopulateListView();
|
PopulateListView();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,7 +138,7 @@ namespace BizHawk.Emulation.Common
|
||||||
|
|
||||||
public void Remove(Action action)
|
public void Remove(Action action)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
_list.Remove(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Clear()
|
public void Clear()
|
||||||
|
|
Loading…
Reference in New Issue