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[] _ctorParamTypesTools = { typeof(ToolManager) };
|
||||
|
||||
/// <remarks>TODO do we need to keep references to these because of GC weirdness? --yoshi</remarks>
|
||||
private static ApiContainer? _container;
|
||||
|
||||
|
@ -37,6 +39,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
IMainFormForApi mainForm,
|
||||
DisplayManager displayManager,
|
||||
InputManager inputManager,
|
||||
ToolManager toolManager,
|
||||
Config config,
|
||||
IEmulator emulator,
|
||||
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(_ctorParamTypesB)?.Invoke(new object[] { logCallback, mainForm })
|
||||
?? t.GetConstructor(_ctorParamTypesA)?.Invoke(new object[] { logCallback })
|
||||
?? t.GetConstructor(_ctorParamTypesTools)?.Invoke(new object[] { toolManager })
|
||||
?? Activator.CreateInstance(t)
|
||||
)
|
||||
);
|
||||
|
@ -60,11 +64,12 @@ namespace BizHawk.Client.EmuHawk
|
|||
IMainFormForApi mainForm,
|
||||
DisplayManager displayManager,
|
||||
InputManager inputManager,
|
||||
ToolManager toolManager,
|
||||
Config config,
|
||||
IEmulator emulator,
|
||||
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;
|
||||
return new BasicApiProvider(_container);
|
||||
}
|
||||
|
@ -75,9 +80,10 @@ namespace BizHawk.Client.EmuHawk
|
|||
IMainFormForApi mainForm,
|
||||
DisplayManager displayManager,
|
||||
InputManager inputManager,
|
||||
ToolManager toolManager,
|
||||
Config config,
|
||||
IEmulator emulator,
|
||||
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 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)
|
||||
{
|
||||
var toolType = Util.GetTypeByName(name).FirstOrDefault(x => typeof(IToolForm).IsAssignableFrom(x) && !x.IsInterface);
|
||||
if (toolType != null) GlobalWin.Tools.Load(toolType);
|
||||
return GlobalWin.Tools.AvailableTools.FirstOrDefault(tool => tool.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
|
||||
if (toolType != null) _toolManager.Load(toolType);
|
||||
return _toolManager.AvailableTools.FirstOrDefault(tool => tool.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase));
|
||||
}
|
||||
|
||||
public object CreateInstance(string name)
|
||||
|
@ -24,18 +28,18 @@ namespace BizHawk.Client.EmuHawk
|
|||
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);
|
||||
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
|
||||
foreach (var lib in Client.Common.ReflectionCache.Types.Concat(EmuHawk.ReflectionCache.Types)
|
||||
|
|
|
@ -54,7 +54,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
_emulator = emulator;
|
||||
_movieSession = movieSession;
|
||||
_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>
|
||||
|
@ -505,7 +505,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
_emulator = emulator;
|
||||
_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 (!Has<Cheats>())
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue