Pass LuaLibraries instance to Lua libs via ctors
This commit is contained in:
parent
f5752294ff
commit
a6d1c6595a
|
@ -13,8 +13,8 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
private readonly IDictionary<Guid, ClientWebSocketWrapper> _websockets = new Dictionary<Guid, ClientWebSocketWrapper>();
|
||||
|
||||
public CommLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public CommLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "comm";
|
||||
|
||||
|
|
|
@ -13,8 +13,8 @@ namespace BizHawk.Client.Common
|
|||
public Action FrameAdvanceCallback { get; set; }
|
||||
public Action YieldCallback { get; set; }
|
||||
|
||||
public EmulationLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public EmulationLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "emu";
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
public sealed class GameInfoLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public GameInfoLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public GameInfoLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "gameinfo";
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
public Func<int, int, int?, int?, LuaTable> CreateLuaCanvasCallback { get; set; }
|
||||
|
||||
public GuiLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public GuiLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "gui";
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
public sealed class InputLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public InputLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public InputLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "input";
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
public sealed class JoypadLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public JoypadLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public JoypadLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "joypad";
|
||||
|
||||
|
|
|
@ -9,10 +9,8 @@ namespace BizHawk.Client.Common
|
|||
[Description("These functions behavior identically to the mainmemory functions but the user can set the memory domain to read and write from. The default domain is the system bus. Use getcurrentmemorydomain(), and usememorydomain() to control which domain is used. Each core has its own set of valid memory domains. Use getmemorydomainlist() to get a list of memory domains for the current core loaded.")]
|
||||
public sealed class MemoryLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public MemoryLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback)
|
||||
{
|
||||
}
|
||||
public MemoryLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "memory";
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
public sealed class MemorySavestateLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public MemorySavestateLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public MemorySavestateLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "memorysavestate";
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
public sealed class MovieLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public MovieLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public MovieLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "movie";
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@ namespace BizHawk.Client.Common
|
|||
[Description("A library for performing SQLite operations.")]
|
||||
public sealed class SQLiteLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public SQLiteLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public SQLiteLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "SQL";
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ namespace BizHawk.Client.Common
|
|||
[Description("A library for setting and retrieving dynamic data that will be saved and loaded with savestates")]
|
||||
public sealed class UserDataLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public UserDataLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public UserDataLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "userdata";
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@ namespace BizHawk.Client.Common
|
|||
/// <summary>Extends <see cref="LuaLibraryBase"/> by including an <see cref="ApiContainer"/> for the library to delegate its calls through.</summary>
|
||||
public abstract class DelegatingLuaLibrary : LuaLibraryBase
|
||||
{
|
||||
protected DelegatingLuaLibrary(Lua lua, Action<string> logOutputCallback) : base(lua, logOutputCallback) {}
|
||||
protected DelegatingLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public ApiContainer APIs { protected get; set; }
|
||||
}
|
||||
|
|
|
@ -9,8 +9,8 @@ namespace BizHawk.Client.Common
|
|||
[Description("A library for performing standard bitwise operations.")]
|
||||
public sealed class BitLuaLibrary : LuaLibraryBase
|
||||
{
|
||||
public BitLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public BitLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "bit";
|
||||
|
||||
|
|
|
@ -24,8 +24,8 @@ namespace BizHawk.Client.Common
|
|||
[OptionalService]
|
||||
private IMemoryDomains Domains { get; set; }
|
||||
|
||||
public EventsLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public EventsLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "event";
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@ namespace BizHawk.Client.Common
|
|||
[Description("Functions specific to GenesisHawk (functions may not run when an Genesis game is not loaded)")]
|
||||
public sealed class GenesisLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public GenesisLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public GenesisLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "genesis";
|
||||
|
||||
|
|
|
@ -17,8 +17,8 @@ namespace BizHawk.Client.Common
|
|||
[OptionalService]
|
||||
private IMemoryDomains MemoryDomainCore { get; set; }
|
||||
|
||||
public MainMemoryLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public MainMemoryLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "mainmemory";
|
||||
|
||||
|
|
|
@ -21,8 +21,8 @@ namespace BizHawk.Client.Common
|
|||
[OptionalService]
|
||||
private IMemoryDomains MemoryDomains { get; set; }
|
||||
|
||||
public NESLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public NESLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "nes";
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@ namespace BizHawk.Client.Common
|
|||
[Description("Functions specific to SNESHawk (functions may not run when an SNES game is not loaded)")]
|
||||
public sealed class SNESLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public SNESLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public SNESLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "snes";
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
public override string Name => "bizstring";
|
||||
|
||||
public StringLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public StringLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
[LuaMethodExample("local stbizhex = bizstring.hex( -12345 );")]
|
||||
[LuaMethod("hex", "Converts the number to a string representation of the hexadecimal value of the given number")]
|
||||
|
|
|
@ -8,10 +8,11 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
public abstract class LuaLibraryBase
|
||||
{
|
||||
protected LuaLibraryBase(Lua lua, Action<string> logOutputCallback)
|
||||
protected LuaLibraryBase(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
{
|
||||
LogOutputCallback = logOutputCallback;
|
||||
Lua = lua;
|
||||
_luaLibsImpl = luaLibsImpl;
|
||||
}
|
||||
|
||||
protected static LuaFile CurrentFile { get; private set; }
|
||||
|
@ -25,6 +26,8 @@ namespace BizHawk.Client.Common
|
|||
|
||||
public Lua Lua { get; }
|
||||
|
||||
protected readonly LuaLibraries _luaLibsImpl;
|
||||
|
||||
public static void ClearCurrentThread()
|
||||
{
|
||||
lock (ThreadMutex)
|
||||
|
|
|
@ -27,8 +27,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
public IMainFormForApi MainForm { get; set; }
|
||||
|
||||
public ClientLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public ClientLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "client";
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
public sealed class ConsoleLuaLibrary : LuaLibraryBase
|
||||
{
|
||||
public ConsoleLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public ConsoleLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "console";
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
[Description("A library for creating and managing custom dialogs")]
|
||||
public sealed class FormsLuaLibrary : LuaLibraryBase
|
||||
{
|
||||
public FormsLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public FormsLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
// TODO: replace references to ConsoleLuaLibrary.Log with a callback that is passed in
|
||||
public override string Name => "forms";
|
||||
|
|
|
@ -8,8 +8,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
public sealed class SaveStateLuaLibrary : DelegatingLuaLibrary
|
||||
{
|
||||
public SaveStateLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public SaveStateLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "savestate";
|
||||
|
||||
|
|
|
@ -16,8 +16,8 @@ namespace BizHawk.Client.EmuHawk
|
|||
[LuaLibrary(released: true)]
|
||||
public sealed class TAStudioLuaLibrary : LuaLibraryBase
|
||||
{
|
||||
public TAStudioLuaLibrary(Lua lua, Action<string> logOutputCallback)
|
||||
: base(lua, logOutputCallback) { }
|
||||
public TAStudioLuaLibrary(LuaLibraries luaLibsImpl, Lua lua, Action<string> logOutputCallback)
|
||||
: base(luaLibsImpl, lua, logOutputCallback) {}
|
||||
|
||||
public override string Name => "tastudio";
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
if (addLibrary)
|
||||
{
|
||||
var instance = (LuaLibraryBase) Activator.CreateInstance(lib, _lua, (Action<string>) ConsoleLuaLibrary.LogOutput);
|
||||
var instance = (LuaLibraryBase) Activator.CreateInstance(lib, this, _lua, (Action<string>) ConsoleLuaLibrary.LogOutput);
|
||||
ServiceInjector.UpdateServices(serviceProvider, instance);
|
||||
|
||||
// TODO: make EmuHawk libraries have a base class with common properties such as this
|
||||
|
|
Loading…
Reference in New Issue