using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Threading.Tasks; using Barotrauma.Extensions; using Barotrauma.LuaCs.Data; namespace Barotrauma.LuaCs.Services; public interface IPackageManagementService : IReusableService, IConfigsResourcesInfo, IConfigProfilesResourcesInfo, ILuaScriptsResourcesInfo, IAssembliesResourcesInfo { /// /// Loads and parses the provided for supported by the current runtime environment. /// Will overwrite any existing package data. /// /// Package to load. /// Task LoadPackageInfosAsync(ContentPackage package); /// /// Loads and parses the provided collection for supported by the current runtime environment. /// Will overwrite any existing package data. /// /// List of packages to load. /// Task> LoadPackagesInfosAsync(IReadOnlyList packages); IReadOnlyList GetAllLoadedPackages(); bool IsPackageLoaded(ContentPackage package); /// /// Filters out resources not suitable for the current environment using the following criteria:
/// - Platform (Operating System)
/// - Target (Client|Server)
/// - Null/Invalid
/// - Dependency Package Registered in PMS
///
/// /// /// ImmutableArray FilterUnloadableResources(IReadOnlyList resources, bool enabledPackagesOnly = false) where T : IResourceInfo; void DisposePackageInfos(ContentPackage package); void DisposePackagesInfos(IReadOnlyList packages); // single FluentResults.Result GetAssembliesInfos(ContentPackage package, bool onlySupportedResources = true); FluentResults.Result GetConfigsInfos(ContentPackage package, bool onlySupportedResources = true); FluentResults.Result GetConfigProfilesInfos(ContentPackage package, bool onlySupportedResources = true); FluentResults.Result GetLuaScriptsInfos(ContentPackage package, bool onlySupportedResources = true); // collection FluentResults.Result GetAssembliesInfos(IReadOnlyList packages, bool onlySupportedResources = true); FluentResults.Result GetConfigsInfos(IReadOnlyList packages, bool onlySupportedResources = true); FluentResults.Result GetConfigProfilesInfos(IReadOnlyList packages, bool onlySupportedResources = true); FluentResults.Result GetLuaScriptsInfos(IReadOnlyList packages, bool onlySupportedResources = true); Task> GetAssembliesInfosAsync(IReadOnlyList packages, bool onlySupportedResources = true); Task> GetConfigsInfosAsync(IReadOnlyList packages, bool onlySupportedResources = true); Task> GetConfigProfilesInfosAsync(IReadOnlyList packages, bool onlySupportedResources = true); Task> GetLuaScriptsInfosAsync(IReadOnlyList packages, bool onlySupportedResources = true); }