using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Reflection; using Barotrauma.LuaCs.Data; namespace Barotrauma.LuaCs.Services; public interface IPluginService : IReusableService { bool IsAssemblyLoaded(string friendlyName); /// /// Loads the assemblies for the given information /// /// /// /// /// /// FluentResults.Result LoadAndInstanceTypes(IEnumerable assemblyResourcesInfo, bool injectServices, out ImmutableArray typeInstances) where T : class, IAssemblyPlugin; FluentResults.Result> GetLoadedPluginTypesInPackage() where T : class, IAssemblyPlugin; /// /// Advances the loading/execution state of the plugin. IMPORTANT: You cannot set the execution state of plugins /// to 'Disposed'. You must instead call the 'DisposePlugins' method. /// /// /// FluentResults.Result AdvancePluginStates(PluginRunState newState); /// /// Disposes of all running plugins hosted by the service and releases their references to allow unloading. /// /// Success of the operation. Returns false if any plugin threw errors during disposal. FluentResults.Result DisposePlugins(); /// /// Gets the current plugin execution state. /// /// PluginRunState GetPluginRunState(); } public enum PluginRunState { Instanced=0, PreInitialization=1, Initialized=2, LoadingCompleted=3, Disposed=4 }