Pass global ToolManager to IToolApi impl via ctor
This commit is contained in:
parent
794c4b5b84
commit
2c086702c9
|
@ -26,6 +26,8 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
private static readonly Type[] _ctorParamTypesC = { typeof(Action<string>), typeof(IMainFormForApi), typeof(DisplayManager), typeof(InputManager), typeof(Config), typeof(IEmulator), typeof(IGameInfo) };
|
private static readonly Type[] _ctorParamTypesC = { typeof(Action<string>), typeof(IMainFormForApi), typeof(DisplayManager), typeof(InputManager), typeof(Config), typeof(IEmulator), typeof(IGameInfo) };
|
||||||
|
|
||||||
|
private static readonly Type[] _ctorParamTypesTools = { typeof(ToolManager) };
|
||||||
|
|
||||||
/// <remarks>TODO do we need to keep references to these because of GC weirdness? --yoshi</remarks>
|
/// <remarks>TODO do we need to keep references to these because of GC weirdness? --yoshi</remarks>
|
||||||
private static ApiContainer? _container;
|
private static ApiContainer? _container;
|
||||||
|
|
||||||
|
@ -37,6 +39,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
IMainFormForApi mainForm,
|
IMainFormForApi mainForm,
|
||||||
DisplayManager displayManager,
|
DisplayManager displayManager,
|
||||||
InputManager inputManager,
|
InputManager inputManager,
|
||||||
|
ToolManager toolManager,
|
||||||
Config config,
|
Config config,
|
||||||
IEmulator emulator,
|
IEmulator emulator,
|
||||||
IGameInfo game)
|
IGameInfo game)
|
||||||
|
@ -48,6 +51,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
t.GetConstructor(_ctorParamTypesC)?.Invoke(new object[] { logCallback, mainForm, displayManager, inputManager, config, emulator, game })
|
t.GetConstructor(_ctorParamTypesC)?.Invoke(new object[] { logCallback, mainForm, displayManager, inputManager, config, emulator, game })
|
||||||
?? t.GetConstructor(_ctorParamTypesB)?.Invoke(new object[] { logCallback, mainForm })
|
?? t.GetConstructor(_ctorParamTypesB)?.Invoke(new object[] { logCallback, mainForm })
|
||||||
?? t.GetConstructor(_ctorParamTypesA)?.Invoke(new object[] { logCallback })
|
?? t.GetConstructor(_ctorParamTypesA)?.Invoke(new object[] { logCallback })
|
||||||
|
?? t.GetConstructor(_ctorParamTypesTools)?.Invoke(new object[] { toolManager })
|
||||||
?? Activator.CreateInstance(t)
|
?? Activator.CreateInstance(t)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -60,11 +64,12 @@ namespace BizHawk.Client.EmuHawk
|
||||||
IMainFormForApi mainForm,
|
IMainFormForApi mainForm,
|
||||||
DisplayManager displayManager,
|
DisplayManager displayManager,
|
||||||
InputManager inputManager,
|
InputManager inputManager,
|
||||||
|
ToolManager toolManager,
|
||||||
Config config,
|
Config config,
|
||||||
IEmulator emulator,
|
IEmulator emulator,
|
||||||
IGameInfo game)
|
IGameInfo game)
|
||||||
{
|
{
|
||||||
_container = Register(serviceProvider, Console.WriteLine, mainForm, displayManager, inputManager, config, emulator, game);
|
_container = Register(serviceProvider, Console.WriteLine, mainForm, displayManager, inputManager, toolManager, config, emulator, game);
|
||||||
ClientApi.EmuClient = _container.EmuClient;
|
ClientApi.EmuClient = _container.EmuClient;
|
||||||
return new BasicApiProvider(_container);
|
return new BasicApiProvider(_container);
|
||||||
}
|
}
|
||||||
|
@ -75,9 +80,10 @@ namespace BizHawk.Client.EmuHawk
|
||||||
IMainFormForApi mainForm,
|
IMainFormForApi mainForm,
|
||||||
DisplayManager displayManager,
|
DisplayManager displayManager,
|
||||||
InputManager inputManager,
|
InputManager inputManager,
|
||||||
|
ToolManager toolManager,
|
||||||
Config config,
|
Config config,
|
||||||
IEmulator emulator,
|
IEmulator emulator,
|
||||||
IGameInfo game
|
IGameInfo game
|
||||||
) => _luaContainer = Register(serviceProvider, logCallback, mainForm, displayManager, inputManager, config, emulator, game);
|
) => _luaContainer = Register(serviceProvider, logCallback, mainForm, displayManager, inputManager, toolManager, config, emulator, game);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,13 +9,17 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
public sealed class ToolApi : IToolApi
|
public sealed class ToolApi : IToolApi
|
||||||
{
|
{
|
||||||
public IEnumerable<Type> AvailableTools => GlobalWin.Tools.AvailableTools.ToList(); // defensive copy in case ToolManager's implementation changes
|
private readonly ToolManager _toolManager;
|
||||||
|
|
||||||
|
public IEnumerable<Type> AvailableTools => _toolManager.AvailableTools.ToList(); // defensive copy in case ToolManager's implementation changes
|
||||||
|
|
||||||
|
public ToolApi(ToolManager toolManager) => _toolManager = toolManager;
|
||||||
|
|
||||||
public Type GetTool(string name)
|
public Type GetTool(string name)
|
||||||
{
|
{
|
||||||
var toolType = Util.GetTypeByName(name).FirstOrDefault(x => typeof(IToolForm).IsAssignableFrom(x) && !x.IsInterface);
|
var toolType = Util.GetTypeByName(name).FirstOrDefault(x => typeof(IToolForm).IsAssignableFrom(x) && !x.IsInterface);
|
||||||
if (toolType != null) GlobalWin.Tools.Load(toolType);
|
if (toolType != null) _toolManager.Load(toolType);
|
||||||
return GlobalWin.Tools.AvailableTools.FirstOrDefault(tool => tool.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
|
return _toolManager.AvailableTools.FirstOrDefault(tool => tool.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
|
||||||
}
|
}
|
||||||
|
|
||||||
public object CreateInstance(string name)
|
public object CreateInstance(string name)
|
||||||
|
@ -24,18 +28,18 @@ namespace BizHawk.Client.EmuHawk
|
||||||
return found != null ? Activator.CreateInstance(found) : null;
|
return found != null ? Activator.CreateInstance(found) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OpenCheats() => GlobalWin.Tools.Load<Cheats>();
|
public void OpenCheats() => _toolManager.Load<Cheats>();
|
||||||
|
|
||||||
public void OpenHexEditor() => GlobalWin.Tools.Load<HexEditor>();
|
public void OpenHexEditor() => _toolManager.Load<HexEditor>();
|
||||||
|
|
||||||
public void OpenRamWatch() => GlobalWin.Tools.LoadRamWatch(loadDialog: true);
|
public void OpenRamWatch() => _toolManager.LoadRamWatch(loadDialog: true);
|
||||||
|
|
||||||
public void OpenRamSearch() => GlobalWin.Tools.Load<RamSearch>();
|
public void OpenRamSearch() => _toolManager.Load<RamSearch>();
|
||||||
|
|
||||||
public void OpenTasStudio() => GlobalWin.Tools.Load<TAStudio>();
|
public void OpenTasStudio() => _toolManager.Load<TAStudio>();
|
||||||
|
|
||||||
public void OpenToolBox() => GlobalWin.Tools.Load<ToolBox>();
|
public void OpenToolBox() => _toolManager.Load<ToolBox>();
|
||||||
|
|
||||||
public void OpenTraceLogger() => GlobalWin.Tools.Load<TraceLogger>();
|
public void OpenTraceLogger() => _toolManager.Load<TraceLogger>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,7 +49,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
|
|
||||||
LuaWait = new AutoResetEvent(false);
|
LuaWait = new AutoResetEvent(false);
|
||||||
Docs.Clear();
|
Docs.Clear();
|
||||||
var apiContainer = ApiManager.RestartLua(serviceProvider, LogToLuaConsole, mainForm, displayManager, inputManager, config, emulator, game);
|
var apiContainer = ApiManager.RestartLua(serviceProvider, LogToLuaConsole, mainForm, displayManager, inputManager, GlobalWin.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)
|
||||||
|
|
|
@ -54,7 +54,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
_emulator = emulator;
|
_emulator = emulator;
|
||||||
_movieSession = movieSession;
|
_movieSession = movieSession;
|
||||||
_game = game;
|
_game = game;
|
||||||
ApiProvider = ApiManager.Restart(_emulator.ServiceProvider, _owner, GlobalWin.DisplayManager, _inputManager, _config, _emulator, _game);
|
ApiProvider = ApiManager.Restart(_emulator.ServiceProvider, _owner, GlobalWin.DisplayManager, _inputManager, this, _config, _emulator, _game);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -505,7 +505,7 @@ namespace BizHawk.Client.EmuHawk
|
||||||
{
|
{
|
||||||
_emulator = emulator;
|
_emulator = emulator;
|
||||||
_game = game;
|
_game = game;
|
||||||
ApiProvider = ApiManager.Restart(_emulator.ServiceProvider, _owner, GlobalWin.DisplayManager, _inputManager, _config, _emulator, _game);
|
ApiProvider = ApiManager.Restart(_emulator.ServiceProvider, _owner, GlobalWin.DisplayManager, _inputManager, this, _config, _emulator, _game);
|
||||||
// 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