diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs index 8bb0d26ae..18ade84cd 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs @@ -330,7 +330,11 @@ namespace Barotrauma if (!PackageManagementService.IsAnyPackageRunning()) { - Logger.LogResults(PackageManagementService.ExecuteLoadedPackages(ContentPackageManager.EnabledPackages.All.ToImmutableArray())); +#if DEBUG + Logger.LogResults(PackageManagementService.ExecuteLoadedPackages(ContentPackageManager.EnabledPackages.All.ToImmutableArray(), true)); +#else + Logger.LogResults(PackageManagementService.ExecuteLoadedPackages(ContentPackageManager.EnabledPackages.All.ToImmutableArray(), IsCsEnabled)); +#endif } CurrentRunState = RunState.Running; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PackageManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PackageManagementService.cs index 608256034..e2878bb58 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PackageManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PackageManagementService.cs @@ -189,7 +189,7 @@ public sealed class PackageManagementService : IPackageManagementService } } - public FluentResults.Result ExecuteLoadedPackages(ImmutableArray executionOrder) + public FluentResults.Result ExecuteLoadedPackages(ImmutableArray executionOrder, bool executeCsAssemblies) { using var lck = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult(); using var executeLock = _executionLock.AcquireWriterLock().ConfigureAwait(false).GetAwaiter().GetResult(); @@ -237,7 +237,7 @@ public sealed class PackageManagementService : IPackageManagementService result.WithReasons(_luaScriptManagementService.ExecuteLoadedScripts(luaScripts).Reasons); } - if (_runConfig.IsCsEnabled) + if (executeCsAssemblies) { var plugins = SelectCompatible(loadingOrderedPackages .SelectMany(pkg => pkg.Value.Assemblies) diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs index 393d15705..85b3e35c5 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs @@ -99,13 +99,12 @@ public class PluginManagementService : IAssemblyManagementService #endregion - private IServicesProvider _serviceProvider; private IAssemblyLoaderService.IFactory _assemblyLoaderFactory; private IStorageService _storageService; private ILoggerService _logger; - private IEventService _eventService; - private IConfigService _configService; - private ILuaScriptManagementService _luaScriptManagementService; + private Lazy _eventService; + private Lazy _configService; + private Lazy _luaScriptManagementService; private readonly ConcurrentDictionary _assemblyLoaders = new(); private readonly ConcurrentDictionary> _pluginInstances = new(); private readonly ConditionalWeakTable _unloadingAssemblyLoaders = new(); @@ -113,16 +112,13 @@ public class PluginManagementService : IAssemblyManagementService private ServiceContainer _pluginInjectorContainer; public PluginManagementService( - IServicesProvider serviceProvider, IAssemblyLoaderService.IFactory assemblyLoaderFactory, IStorageService storageService, ILoggerService logger, - IEventService eventService, - ILuaScriptManagementService luaScriptManagementService, - IConfigService configService) + Lazy eventService, + Lazy luaScriptManagementService, + Lazy configService) { - Guard.IsNotNull(serviceProvider, nameof(serviceProvider)); - _serviceProvider = serviceProvider; _assemblyLoaderFactory = assemblyLoaderFactory; _storageService = storageService; _logger = logger; @@ -139,11 +135,11 @@ public class PluginManagementService : IAssemblyManagementService }); - container.Register(fac => _logger, new PerContainerLifetime()); - container.Register(fac => _storageService, new PerContainerLifetime()); - container.Register(fac => _eventService, new PerContainerLifetime()); - container.Register(fac => _luaScriptManagementService, new PerContainerLifetime()); - container.Register(fac => _configService, new PerContainerLifetime()); + container.Register(fac => _logger); + container.Register(fac => _storageService); + container.Register(fac => _eventService.Value); + container.Register(fac => _luaScriptManagementService.Value); + container.Register(fac => _configService.Value); return container; } @@ -268,21 +264,21 @@ public class PluginManagementService : IAssemblyManagementService results.WithReasons(PluginInitRunner(plugin, p => p.PreInitPatching()).Reasons); } - _eventService.PublishEvent(sub => sub.PreInitPatching()); + _eventService.Value.PublishEvent(sub => sub.PreInitPatching()); foreach (var plugin in pluginsToInit) { results.WithReasons(PluginInitRunner(plugin, p => p.Initialize()).Reasons); } - _eventService.PublishEvent(sub => sub.Initialize()); + _eventService.Value.PublishEvent(sub => sub.Initialize()); foreach (var plugin in pluginsToInit) { results.WithReasons(PluginInitRunner(plugin, p => p.OnLoadCompleted()).Reasons); } - _eventService.PublishEvent(sub => sub.OnLoadCompleted()); + _eventService.Value.PublishEvent(sub => sub.OnLoadCompleted()); return results; @@ -527,7 +523,7 @@ public class PluginManagementService : IAssemblyManagementService foreach (var assembly in loader.Assemblies) { - _eventService.PublishEvent(sub => sub.OnAssemblyUnloading(assembly)); + _eventService.Value.PublishEvent(sub => sub.OnAssemblyUnloading(assembly)); } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ServicesProvider.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ServicesProvider.cs index d0a81f425..71fcb54b2 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ServicesProvider.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ServicesProvider.cs @@ -22,7 +22,7 @@ public class ServicesProvider : IServicesProvider EnablePropertyInjection = false }); - _serviceContainerInst.Register((f) => this); + //_serviceContainerInst.Register((f) => this); } public void RegisterServiceType(ServiceLifetime lifetime, ILifetime lifetimeInstance = null) where TSvcInterface : class, IService where TService : class, IService, TSvcInterface diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPackageManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPackageManagementService.cs index 2c6f2bc39..b36bf93a4 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPackageManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPackageManagementService.cs @@ -14,7 +14,7 @@ public interface IPackageManagementService : IReusableService { public FluentResults.Result LoadPackageInfo(ContentPackage package); public FluentResults.Result LoadPackagesInfo(ImmutableArray packages); - public FluentResults.Result ExecuteLoadedPackages(ImmutableArray executionOrder); + public FluentResults.Result ExecuteLoadedPackages(ImmutableArray executionOrder, bool executeCsAssemblies); public FluentResults.Result SyncLoadedPackagesList(ImmutableArray packages); public FluentResults.Result StopRunningPackages(); public FluentResults.Result UnloadPackage(ContentPackage package);