Use MainForm instead of GlobalWin in Lua internals

This commit is contained in:
YoshiRulz 2020-11-30 19:03:50 +10:00
parent 3ccdfa8289
commit c991babdce
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
3 changed files with 15 additions and 9 deletions

View File

@ -1155,7 +1155,7 @@ namespace BizHawk.Client.EmuHawk
if (!alreadyOpen) if (!alreadyOpen)
{ {
new LuaRegisteredFunctionsList(LuaImp.RegisteredFunctions) new LuaRegisteredFunctionsList((MainForm) MainForm, LuaImp.RegisteredFunctions)
{ {
StartLocation = this.ChildPointToScreen(LuaListView) StartLocation = this.ChildPointToScreen(LuaListView)
}.Show(); }.Show();

View File

@ -8,10 +8,13 @@ namespace BizHawk.Client.EmuHawk
{ {
public partial class LuaRegisteredFunctionsList : Form public partial class LuaRegisteredFunctionsList : Form
{ {
private readonly IMainFormForApi _mainForm;
private readonly LuaFunctionList _registeredFunctions; private readonly LuaFunctionList _registeredFunctions;
public LuaRegisteredFunctionsList(LuaFunctionList registeredFunctions) public LuaRegisteredFunctionsList(IMainFormForApi mainForm, LuaFunctionList registeredFunctions)
{ {
_mainForm = mainForm;
_registeredFunctions = registeredFunctions; _registeredFunctions = registeredFunctions;
InitializeComponent(); InitializeComponent();
Icon = Properties.Resources.TextDocIcon; Icon = Properties.Resources.TextDocIcon;
@ -89,7 +92,7 @@ namespace BizHawk.Client.EmuHawk
{ {
var guid = FunctionView.Items[index].SubItems[2].Text; var guid = FunctionView.Items[index].SubItems[2].Text;
var nlf = _registeredFunctions[guid]; var nlf = _registeredFunctions[guid];
_registeredFunctions.Remove(nlf, GlobalWin.Emulator); // TODO: don't use Global _registeredFunctions.Remove(nlf, _mainForm.Emulator);
} }
PopulateListView(); PopulateListView();
@ -108,7 +111,7 @@ namespace BizHawk.Client.EmuHawk
private void RemoveAllBtn_Click(object sender, EventArgs e) private void RemoveAllBtn_Click(object sender, EventArgs e)
{ {
_registeredFunctions.Clear(GlobalWin.Emulator); // TODO: don't use Global _registeredFunctions.Clear(_mainForm.Emulator);
PopulateListView(); PopulateListView();
} }

View File

@ -47,9 +47,10 @@ namespace BizHawk.Client.EmuHawk
} }
} }
_mainForm = mainForm;
LuaWait = new AutoResetEvent(false); LuaWait = new AutoResetEvent(false);
Docs.Clear(); Docs.Clear();
var apiContainer = ApiManager.RestartLua(serviceProvider, LogToLuaConsole, mainForm, displayManager, inputManager, mainForm.MovieSession, mainForm.Tools, config, emulator, game); var apiContainer = ApiManager.RestartLua(serviceProvider, LogToLuaConsole, _mainForm, displayManager, inputManager, _mainForm.MovieSession, _mainForm.Tools, config, emulator, game);
// Register lua libraries // Register lua libraries
foreach (var lib in Client.Common.ReflectionCache.Types.Concat(EmuHawk.ReflectionCache.Types) foreach (var lib in Client.Common.ReflectionCache.Types.Concat(EmuHawk.ReflectionCache.Types)
@ -71,11 +72,11 @@ namespace BizHawk.Client.EmuHawk
// and inject them here // and inject them here
if (instance is ClientLuaLibrary clientLib) if (instance is ClientLuaLibrary clientLib)
{ {
clientLib.MainForm = mainForm; clientLib.MainForm = _mainForm;
} }
else if (instance is ConsoleLuaLibrary consoleLib) else if (instance is ConsoleLuaLibrary consoleLib)
{ {
consoleLib.Tools = mainForm.Tools; consoleLib.Tools = _mainForm.Tools;
_logToLuaConsoleCallback = consoleLib.Log; _logToLuaConsoleCallback = consoleLib.Log;
} }
else if (instance is GuiLuaLibrary guiLib) else if (instance is GuiLuaLibrary guiLib)
@ -89,7 +90,7 @@ namespace BizHawk.Client.EmuHawk
} }
else if (instance is TAStudioLuaLibrary tastudioLib) else if (instance is TAStudioLuaLibrary tastudioLib)
{ {
tastudioLib.Tools = mainForm.Tools; tastudioLib.Tools = _mainForm.Tools;
} }
if (instance is DelegatingLuaLibrary dlgInstance) dlgInstance.APIs = apiContainer; if (instance is DelegatingLuaLibrary dlgInstance) dlgInstance.APIs = apiContainer;
@ -107,6 +108,8 @@ namespace BizHawk.Client.EmuHawk
EnumerateLuaFunctions(nameof(LuaCanvas), typeof(LuaCanvas), null); // add LuaCanvas to Lua function reference table EnumerateLuaFunctions(nameof(LuaCanvas), typeof(LuaCanvas), null); // add LuaCanvas to Lua function reference table
} }
private readonly MainForm _mainForm;
private Lua _lua = new Lua(); private Lua _lua = new Lua();
private Lua _currThread; private Lua _currThread;
@ -188,7 +191,7 @@ namespace BizHawk.Client.EmuHawk
public override void Close() public override void Close()
{ {
RegisteredFunctions.Clear(GlobalWin.Emulator); // TODO: don't use globals RegisteredFunctions.Clear(_mainForm.Emulator);
ScriptList.Clear(); ScriptList.Clear();
FormsLibrary.DestroyAll(); FormsLibrary.DestroyAll();
_lua.Close(); _lua.Close();