GlobalWin.MainForm begone
This commit is contained in:
parent
590a2fc245
commit
bb2e82c94a
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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>())
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue