diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/Libraries/GuiLuaLibrary.cs b/src/BizHawk.Client.Common/lua/CommonLibs/GuiLuaLibrary.cs similarity index 96% rename from src/BizHawk.Client.EmuHawk/tools/Lua/Libraries/GuiLuaLibrary.cs rename to src/BizHawk.Client.Common/lua/CommonLibs/GuiLuaLibrary.cs index 553ba29336..2f14fffec3 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Lua/Libraries/GuiLuaLibrary.cs +++ b/src/BizHawk.Client.Common/lua/CommonLibs/GuiLuaLibrary.cs @@ -1,12 +1,14 @@ using System; using System.Drawing; -using NLua; -using BizHawk.Client.Common; -namespace BizHawk.Client.EmuHawk +using NLua; + +namespace BizHawk.Client.Common { public sealed class GuiLuaLibrary : DelegatingLuaLibrary, IDisposable { + public Func CreateLuaCanvasCallback { get; set; } + public GuiLuaLibrary(Lua lua) : base(lua) { } @@ -176,12 +178,7 @@ namespace BizHawk.Client.EmuHawk [LuaMethodExample("local nlguicre = gui.createcanvas( 77, 99, 2, 48 );")] [LuaMethod("createcanvas", "Creates a canvas of the given size and, if specified, the given coordinates.")] - public LuaTable Text(int width, int height, int? x = null, int? y = null) - { - var canvas = new LuaCanvas(width, height, x, y); - canvas.Show(); - return Lua.TableFromObject(canvas); - } + public LuaTable Text(int width, int height, int? x = null, int? y = null) => CreateLuaCanvasCallback(width, height, x, y); public void Dispose() => APIs.Gui.Dispose(); } diff --git a/src/BizHawk.Client.EmuHawk/tools/Lua/Win32LuaLibraries.cs b/src/BizHawk.Client.EmuHawk/tools/Lua/Win32LuaLibraries.cs index b69ce2ad55..fc568c5120 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Lua/Win32LuaLibraries.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Lua/Win32LuaLibraries.cs @@ -67,6 +67,15 @@ namespace BizHawk.Client.EmuHawk { clientLib.MainForm = mainForm; } + else if (instance is GuiLuaLibrary guiLib) + { + guiLib.CreateLuaCanvasCallback = (width, height, x, y) => + { + var canvas = new LuaCanvas(width, height, x, y); + canvas.Show(); + return _lua.TableFromObject(canvas); + }; + } if (instance is DelegatingLuaLibrary dlgInstance) dlgInstance.APIs = apiContainer;