@@ -23,12 +23,10 @@ public LuaLibraries(
2323 LuaFileList scriptList ,
2424 LuaFunctionList registeredFuncList ,
2525 IEmulatorServiceProvider serviceProvider ,
26- IMainFormForApiInit mainForm ,
27- DisplayManagerBase displayManager ,
28- InputManager inputManager ,
26+ IMainFormForApi mainForm ,
2927 Config config ,
30- IEmulator emulator ,
31- IGameInfo game )
28+ ToolManager toolManager ,
29+ ApiContainer apiContainer )
3230 {
3331 if ( ! IsAvailable )
3432 {
@@ -57,15 +55,13 @@ void EnumerateLuaFunctions(string name, Type type, LuaLibraryBase instance)
5755 }
5856
5957 _th = new NLuaTableHelper ( _lua , LogToLuaConsole ) ;
60- _displayManager = displayManager ;
61- _inputManager = inputManager ;
6258 _mainForm = mainForm ;
6359 LuaWait = new AutoResetEvent ( false ) ;
6460 PathEntries = config . PathEntries ;
6561 RegisteredFunctions = registeredFuncList ;
6662 ScriptList = scriptList ;
6763 Docs . Clear ( ) ;
68- _apiContainer = ApiManager . RestartLua ( serviceProvider , LogToLuaConsole , _mainForm , _displayManager , _inputManager , _mainForm . MovieSession , _mainForm . Tools , config , emulator , game ) ;
64+ _apiContainer = apiContainer ;
6965
7066 // Register lua libraries
7167 foreach ( var lib in ReflectionCache_Biz_Cli_Com . Types . Concat ( ReflectionCache . Types )
@@ -94,7 +90,7 @@ void EnumerateLuaFunctions(string name, Type type, LuaLibraryBase instance)
9490 else if ( instance is ConsoleLuaLibrary consoleLib )
9591 {
9692 consoleLib . AllAPINames = new ( ( ) => string . Join ( "\n " , Docs . Select ( static lf => lf . Name ) ) + "\n " ) ; // Docs may not be fully populated now, depending on order of ReflectionCache.Types, but definitely will be when this is read
97- consoleLib . Tools = _mainForm . Tools ;
93+ consoleLib . Tools = toolManager ;
9894 _logToLuaConsoleCallback = consoleLib . Log ;
9995 }
10096 else if ( instance is DoomLuaLibrary doomLib )
@@ -108,7 +104,15 @@ void EnumerateLuaFunctions(string name, Type type, LuaLibraryBase instance)
108104 }
109105 else if ( instance is FormsLuaLibrary formsLib )
110106 {
111- formsLib . MainForm = _mainForm ;
107+ // We want to not give tools/apis explicit references to Windows Forms.
108+ // But this Lua API actually needs one, because it creates Windows Forms.
109+ // If we ever have another frontend framework, this library should not be used. So we check its type.
110+ if ( mainForm is MainForm mainAsForm )
111+ {
112+ formsLib . DialogParent = mainAsForm ;
113+ formsLib . OwnerForm = mainAsForm ;
114+ }
115+ else continue ;
112116 }
113117 else if ( instance is GuiLuaLibrary guiLib )
114118 {
@@ -122,7 +126,7 @@ void EnumerateLuaFunctions(string name, Type type, LuaLibraryBase instance)
122126 }
123127 else if ( instance is TAStudioLuaLibrary tastudioLib )
124128 {
125- tastudioLib . Tools = _mainForm . Tools ;
129+ tastudioLib . Tools = toolManager ;
126130 }
127131
128132 EnumerateLuaFunctions ( instance . Name , lib , instance ) ;
@@ -159,13 +163,9 @@ void EnumerateLuaFunctions(string name, Type type, LuaLibraryBase instance)
159163
160164 private ApiContainer _apiContainer ;
161165
162- private readonly DisplayManagerBase _displayManager ;
163-
164166 private GuiApi GuiAPI => ( GuiApi ) _apiContainer . Gui ;
165167
166- private readonly InputManager _inputManager ;
167-
168- private readonly IMainFormForApiInit _mainForm ;
168+ private readonly IMainFormForApi _mainForm ;
169169
170170 private Lua _lua = new ( ) ;
171171 private LuaThread _currThread ;
@@ -201,10 +201,9 @@ void EnumerateLuaFunctions(string name, Type type, LuaLibraryBase instance)
201201 public void Restart (
202202 IEmulatorServiceProvider newServiceProvider ,
203203 Config config ,
204- IEmulator emulator ,
205- IGameInfo game )
204+ ApiContainer apiContainer )
206205 {
207- _apiContainer = ApiManager . RestartLua ( newServiceProvider , LogToLuaConsole , _mainForm , _displayManager , _inputManager , _mainForm . MovieSession , _mainForm . Tools , config , emulator , game ) ;
206+ _apiContainer = apiContainer ;
208207 PathEntries = config . PathEntries ;
209208 foreach ( var lib in Libraries . Values )
210209 {
0 commit comments