GlobalWin.MainForm begone

This commit is contained in:
adelikat 2020-06-12 16:59:44 -05:00
parent 590a2fc245
commit bb2e82c94a
6 changed files with 15 additions and 17 deletions

View File

@ -21,7 +21,10 @@ namespace BizHawk.Client.EmuHawk
private static ApiContainer? _luaContainer; private static ApiContainer? _luaContainer;
private static ApiContainer Register(IEmulatorServiceProvider serviceProvider, Action<string> logCallback) private static ApiContainer Register(
MainForm mainForm,
IEmulatorServiceProvider serviceProvider,
Action<string> logCallback)
{ {
var libDict = new Dictionary<Type, IExternalApi>(); var libDict = new Dictionary<Type, IExternalApi>();
foreach (var api in Assembly.GetAssembly(typeof(ApiSubsetContainer)).GetTypes() foreach (var api in Assembly.GetAssembly(typeof(ApiSubsetContainer)).GetTypes()
@ -30,7 +33,7 @@ namespace BizHawk.Client.EmuHawk
&& typeof(IExternalApi).IsAssignableFrom(t) && typeof(IExternalApi).IsAssignableFrom(t)
&& ServiceInjector.IsAvailable(serviceProvider, t))) && ServiceInjector.IsAvailable(serviceProvider, t)))
{ {
var instance = api.GetConstructor(CtorParamTypesA)?.Invoke(new object[] { logCallback, GlobalWin.DisplayManager, GlobalWin.InputManager, GlobalWin.MainForm }) var instance = api.GetConstructor(CtorParamTypesA)?.Invoke(new object[] { logCallback, GlobalWin.DisplayManager, GlobalWin.InputManager, mainForm })
?? api.GetConstructor(CtorParamTypesB)?.Invoke(new object[] { logCallback }) ?? api.GetConstructor(CtorParamTypesB)?.Invoke(new object[] { logCallback })
?? Activator.CreateInstance(api); ?? Activator.CreateInstance(api);
ServiceInjector.UpdateServices(serviceProvider, instance); ServiceInjector.UpdateServices(serviceProvider, instance);
@ -42,10 +45,10 @@ namespace BizHawk.Client.EmuHawk
return new ApiContainer(libDict); return new ApiContainer(libDict);
} }
public static IExternalApiProvider Restart(IEmulatorServiceProvider newServiceProvider) public static IExternalApiProvider Restart(MainForm mainForm, IEmulatorServiceProvider newServiceProvider)
=> new BasicApiProvider(_container = Register(newServiceProvider, Console.WriteLine)); => new BasicApiProvider(_container = Register(mainForm, newServiceProvider, Console.WriteLine));
public static ApiContainer RestartLua(IEmulatorServiceProvider newServiceProvider, Action<string> logCallback) public static ApiContainer RestartLua(MainForm mainForm, IEmulatorServiceProvider newServiceProvider, Action<string> logCallback)
=> _luaContainer = Register(newServiceProvider, logCallback); => _luaContainer = Register(mainForm, newServiceProvider, logCallback);
} }
} }

View File

@ -8,7 +8,6 @@ namespace BizHawk.Client.EmuHawk
{ {
public static class GlobalWin public static class GlobalWin
{ {
public static MainForm MainForm;
public static ToolManager Tools; public static ToolManager Tools;
public static IEmulator Emulator { get; set; } public static IEmulator Emulator { get; set; }

View File

@ -276,7 +276,6 @@ namespace BizHawk.Client.EmuHawk
public MainForm(string[] args) public MainForm(string[] args)
{ {
GlobalWin.MainForm = this;
GlobalWin.ClientApi = new EmuClientApi(Config, DisplayManager, Emulator, Game, InputManager, this); GlobalWin.ClientApi = new EmuClientApi(Config, DisplayManager, Emulator, Game, InputManager, this);
//do this threaded stuff early so it has plenty of time to run in background //do this threaded stuff early so it has plenty of time to run in background

View File

@ -206,7 +206,7 @@ namespace BizHawk.Client.EmuHawk
} }
var currentScripts = LuaImp?.ScriptList; // Temp fix for now var currentScripts = LuaImp?.ScriptList; // Temp fix for now
LuaImp = OSTailoredCode.IsUnixHost ? (LuaLibraries) new UnixLuaLibraries() : new Win32LuaLibraries(Emulator.ServiceProvider, MainForm); LuaImp = OSTailoredCode.IsUnixHost ? (LuaLibraries) new UnixLuaLibraries() : new Win32LuaLibraries(MainForm, Emulator.ServiceProvider);
LuaImp.ScriptList.AddRange(currentScripts ?? Enumerable.Empty<LuaFile>()); LuaImp.ScriptList.AddRange(currentScripts ?? Enumerable.Empty<LuaFile>());
InputBox.AutoCompleteCustomSource.AddRange(LuaImp.Docs.Select(a => $"{a.Library}.{a.Name}").ToArray()); InputBox.AutoCompleteCustomSource.AddRange(LuaImp.Docs.Select(a => $"{a.Library}.{a.Name}").ToArray());

View File

@ -14,18 +14,15 @@ namespace BizHawk.Client.EmuHawk
{ {
public class Win32LuaLibraries : LuaLibraries public class Win32LuaLibraries : LuaLibraries
{ {
private readonly MainForm _mainForm;
public Win32LuaLibraries() public Win32LuaLibraries()
{ {
// if (NLua.Lua.WhichLua == "NLua") // if (NLua.Lua.WhichLua == "NLua")
_lua["keepalives"] = _lua.NewTable(); _lua["keepalives"] = _lua.NewTable();
} }
public Win32LuaLibraries(IEmulatorServiceProvider serviceProvider, MainForm mainForm) public Win32LuaLibraries(MainForm mainForm, IEmulatorServiceProvider serviceProvider)
: this() : this()
{ {
_mainForm = mainForm;
LuaWait = new AutoResetEvent(false); LuaWait = new AutoResetEvent(false);
Docs.Clear(); Docs.Clear();
@ -52,10 +49,10 @@ 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;
} }
ApiContainerInstance = ApiManager.RestartLua(serviceProvider, ConsoleLuaLibrary.LogOutput); ApiContainerInstance = ApiManager.RestartLua(mainForm, serviceProvider, ConsoleLuaLibrary.LogOutput);
if (instance is DelegatingLuaLibraryEmu dlgInstanceEmu) dlgInstanceEmu.APIs = ApiContainerInstance; // this is necessary as the property has the `new` modifier if (instance is DelegatingLuaLibraryEmu dlgInstanceEmu) dlgInstanceEmu.APIs = ApiContainerInstance; // this is necessary as the property has the `new` modifier
else if (instance is DelegatingLuaLibrary dlgInstance) dlgInstance.APIs = ApiContainerInstance; else if (instance is DelegatingLuaLibrary dlgInstance) dlgInstance.APIs = ApiContainerInstance;

View File

@ -45,7 +45,7 @@ namespace BizHawk.Client.EmuHawk
_emulator = emulator; _emulator = emulator;
_movieSession = movieSession; _movieSession = movieSession;
_game = game; _game = game;
_apiProvider = ApiManager.Restart(_emulator.ServiceProvider); _apiProvider = ApiManager.Restart(_owner, _emulator.ServiceProvider);
} }
/// <summary> /// <summary>
@ -487,7 +487,7 @@ namespace BizHawk.Client.EmuHawk
{ {
_emulator = emulator; _emulator = emulator;
_game = game; _game = game;
_apiProvider = ApiManager.Restart(_emulator.ServiceProvider); _apiProvider = ApiManager.Restart(_owner, _emulator.ServiceProvider);
// If Cheat tool is loaded, restarting will restart the list too anyway // If Cheat tool is loaded, restarting will restart the list too anyway
if (!Has<Cheats>()) if (!Has<Cheats>())
{ {