- Added API to get package by name to PackageManagementService.cs and LuaScriptManagementService.cs
- Added ILuaConfigService to Lua API.
This commit is contained in:
@@ -158,6 +158,7 @@ namespace Barotrauma
|
|||||||
servicesProvider.RegisterServiceType<HarmonyEventPatchesService, HarmonyEventPatchesService>(ServiceLifetime.Singleton);
|
servicesProvider.RegisterServiceType<HarmonyEventPatchesService, HarmonyEventPatchesService>(ServiceLifetime.Singleton);
|
||||||
servicesProvider.RegisterServiceType<IConsoleCommandsService, ConsoleCommandsService>(ServiceLifetime.Transient);
|
servicesProvider.RegisterServiceType<IConsoleCommandsService, ConsoleCommandsService>(ServiceLifetime.Transient);
|
||||||
servicesProvider.RegisterServiceType<MainMenuPatch, MainMenuPatch>(ServiceLifetime.Singleton);
|
servicesProvider.RegisterServiceType<MainMenuPatch, MainMenuPatch>(ServiceLifetime.Singleton);
|
||||||
|
servicesProvider.RegisterServiceResolver<ILuaConfigService>(factory => factory.GetInstance<IConfigService>() as ILuaConfigService);
|
||||||
|
|
||||||
// Extension/Sub Services
|
// Extension/Sub Services
|
||||||
servicesProvider.RegisterServiceType<IAssemblyLoaderService.IFactory, AssemblyLoader.Factory>(ServiceLifetime.Transient);
|
servicesProvider.RegisterServiceType<IAssemblyLoaderService.IFactory, AssemblyLoader.Factory>(ServiceLifetime.Transient);
|
||||||
|
|||||||
+10
-1
@@ -52,7 +52,9 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService,
|
|||||||
private readonly IPluginManagementService _pluginManagementService;
|
private readonly IPluginManagementService _pluginManagementService;
|
||||||
private readonly INetworkingService _networkingService;
|
private readonly INetworkingService _networkingService;
|
||||||
private readonly IConsoleCommandsService _commandsService;
|
private readonly IConsoleCommandsService _commandsService;
|
||||||
|
private readonly ILuaConfigService _configService;
|
||||||
private readonly ILuaCsInfoProvider _luaCsInfoProvider;
|
private readonly ILuaCsInfoProvider _luaCsInfoProvider;
|
||||||
|
private readonly Lazy<IPackageManagementService> _packageManagementService;
|
||||||
//private readonly ILuaCsUtility _luaCsUtility;
|
//private readonly ILuaCsUtility _luaCsUtility;
|
||||||
|
|
||||||
public LuaScriptManagementService(
|
public LuaScriptManagementService(
|
||||||
@@ -69,7 +71,9 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService,
|
|||||||
//ILuaCsUtility luaCsUtility,
|
//ILuaCsUtility luaCsUtility,
|
||||||
ILuaCsTimer luaCsTimer,
|
ILuaCsTimer luaCsTimer,
|
||||||
IConsoleCommandsService commandsService,
|
IConsoleCommandsService commandsService,
|
||||||
ILuaCsInfoProvider luaCsInfoProvider)
|
ILuaCsInfoProvider luaCsInfoProvider,
|
||||||
|
ILuaConfigService configService,
|
||||||
|
Lazy<IPackageManagementService> packageManagementService)
|
||||||
{
|
{
|
||||||
_luaScriptLoader = loader;
|
_luaScriptLoader = loader;
|
||||||
_userDataService = userDataService;
|
_userDataService = userDataService;
|
||||||
@@ -84,6 +88,8 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService,
|
|||||||
_eventService = eventService;
|
_eventService = eventService;
|
||||||
_commandsService = commandsService;
|
_commandsService = commandsService;
|
||||||
_luaCsInfoProvider = luaCsInfoProvider;
|
_luaCsInfoProvider = luaCsInfoProvider;
|
||||||
|
_configService = configService;
|
||||||
|
_packageManagementService = packageManagementService;
|
||||||
_luaCsTimer = luaCsTimer;
|
_luaCsTimer = luaCsTimer;
|
||||||
|
|
||||||
RegisterLuaEvents();
|
RegisterLuaEvents();
|
||||||
@@ -379,7 +385,10 @@ class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService,
|
|||||||
_script.Globals["Hook"] = _eventService;
|
_script.Globals["Hook"] = _eventService;
|
||||||
_script.Globals["Timer"] = _luaCsTimer;
|
_script.Globals["Timer"] = _luaCsTimer;
|
||||||
_script.Globals["File"] = UserData.CreateStatic<LuaCsFile>();
|
_script.Globals["File"] = UserData.CreateStatic<LuaCsFile>();
|
||||||
|
_script.Globals["ConfigService"] = _configService;
|
||||||
_script.Globals["Networking"] = _networkingService;
|
_script.Globals["Networking"] = _networkingService;
|
||||||
|
_script.Globals["trygetpackage"] = (string name, out ContentPackage package) =>
|
||||||
|
_packageManagementService.Value.TryGetLoadedPackageByName(name, out package);
|
||||||
//_script.Globals["Steam"] = Steam;
|
//_script.Globals["Steam"] = Steam;
|
||||||
|
|
||||||
if (enableSandbox)
|
if (enableSandbox)
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ public sealed class PackageManagementService : IPackageManagementService
|
|||||||
// state
|
// state
|
||||||
private readonly ConcurrentDictionary<ContentPackage, IModConfigInfo> _loadedPackages = new();
|
private readonly ConcurrentDictionary<ContentPackage, IModConfigInfo> _loadedPackages = new();
|
||||||
private readonly ConcurrentDictionary<ContentPackage, IModConfigInfo> _runningPackages = new();
|
private readonly ConcurrentDictionary<ContentPackage, IModConfigInfo> _runningPackages = new();
|
||||||
|
private readonly ConcurrentDictionary<string, ContentPackage> _packageNameCache = new();
|
||||||
// control
|
// control
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Service Disposal Lock.
|
/// Service Disposal Lock.
|
||||||
@@ -141,6 +142,7 @@ public sealed class PackageManagementService : IPackageManagementService
|
|||||||
#endif
|
#endif
|
||||||
_runningPackages.Clear();
|
_runningPackages.Clear();
|
||||||
_loadedPackages.Clear();
|
_loadedPackages.Clear();
|
||||||
|
_packageNameCache.Clear();
|
||||||
return operationResult;
|
return operationResult;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -149,6 +151,18 @@ public sealed class PackageManagementService : IPackageManagementService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool TryGetLoadedPackageByName(string name, out ContentPackage package)
|
||||||
|
{
|
||||||
|
package = null;
|
||||||
|
if (name.IsNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
using var _ = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult();
|
||||||
|
return _packageNameCache.TryGetValue(name, out package);
|
||||||
|
}
|
||||||
|
|
||||||
public FluentResults.Result LoadPackageInfo(ContentPackage package)
|
public FluentResults.Result LoadPackageInfo(ContentPackage package)
|
||||||
{
|
{
|
||||||
Guard.IsNotNull(package, nameof(package));
|
Guard.IsNotNull(package, nameof(package));
|
||||||
@@ -232,6 +246,7 @@ public sealed class PackageManagementService : IPackageManagementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
_loadedPackages[package] = config;
|
_loadedPackages[package] = config;
|
||||||
|
_packageNameCache[package.Name] = package;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var res = new FluentResults.Result();
|
var res = new FluentResults.Result();
|
||||||
@@ -435,6 +450,7 @@ public sealed class PackageManagementService : IPackageManagementService
|
|||||||
result.WithReasons(_uiStylesService.UnloadPackage(package).Reasons);
|
result.WithReasons(_uiStylesService.UnloadPackage(package).Reasons);
|
||||||
#endif
|
#endif
|
||||||
_loadedPackages.TryRemove(package, out _);
|
_loadedPackages.TryRemove(package, out _);
|
||||||
|
_packageNameCache.TryRemove(package.Name, out _);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,11 +17,8 @@ public partial interface IConfigService : IReusableService, ILuaConfigService
|
|||||||
where T : class, ISettingBase;
|
where T : class, ISettingBase;
|
||||||
Task<FluentResults.Result> LoadConfigsAsync(ImmutableArray<IConfigResourceInfo> configResources);
|
Task<FluentResults.Result> LoadConfigsAsync(ImmutableArray<IConfigResourceInfo> configResources);
|
||||||
Task<FluentResults.Result> LoadConfigsProfilesAsync(ImmutableArray<IConfigResourceInfo> configProfileResources);
|
Task<FluentResults.Result> LoadConfigsProfilesAsync(ImmutableArray<IConfigResourceInfo> configProfileResources);
|
||||||
FluentResults.Result LoadSavedValueForConfig(ISettingBase setting);
|
|
||||||
FluentResults.Result LoadSavedConfigsValues();
|
FluentResults.Result LoadSavedConfigsValues();
|
||||||
FluentResults.Result ApplyConfigProfile(ContentPackage package, string internalName);
|
FluentResults.Result ApplyConfigProfile(ContentPackage package, string internalName);
|
||||||
FluentResults.Result SaveConfigValue(ISettingBase setting);
|
|
||||||
FluentResults.Result DisposePackageData(ContentPackage package);
|
FluentResults.Result DisposePackageData(ContentPackage package);
|
||||||
FluentResults.Result DisposeAllPackageData();
|
FluentResults.Result DisposeAllPackageData();
|
||||||
bool TryGetConfig<T>(ContentPackage package, string internalName, out T instance) where T : ISettingBase;
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -12,6 +12,7 @@ namespace Barotrauma.LuaCs;
|
|||||||
|
|
||||||
public interface IPackageManagementService : IReusableService
|
public interface IPackageManagementService : IReusableService
|
||||||
{
|
{
|
||||||
|
public bool TryGetLoadedPackageByName(string name, out ContentPackage package);
|
||||||
public FluentResults.Result LoadPackageInfo(ContentPackage package);
|
public FluentResults.Result LoadPackageInfo(ContentPackage package);
|
||||||
public FluentResults.Result LoadPackagesInfo(ImmutableArray<ContentPackage> packages);
|
public FluentResults.Result LoadPackagesInfo(ImmutableArray<ContentPackage> packages);
|
||||||
public FluentResults.Result ExecuteLoadedPackages(ImmutableArray<ContentPackage> executionOrder, bool executeCsAssemblies);
|
public FluentResults.Result ExecuteLoadedPackages(ImmutableArray<ContentPackage> executionOrder, bool executeCsAssemblies);
|
||||||
|
|||||||
@@ -6,5 +6,7 @@ namespace Barotrauma.LuaCs;
|
|||||||
|
|
||||||
public interface ILuaConfigService : ILuaService
|
public interface ILuaConfigService : ILuaService
|
||||||
{
|
{
|
||||||
|
FluentResults.Result LoadSavedValueForConfig(ISettingBase setting);
|
||||||
|
bool TryGetConfig<T>(ContentPackage package, string internalName, out T instance) where T : ISettingBase;
|
||||||
|
FluentResults.Result SaveConfigValue(ISettingBase setting);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
namespace Barotrauma.LuaCs;
|
namespace Barotrauma.LuaCs;
|
||||||
|
|
||||||
public interface ILuaService
|
public interface ILuaService : IService
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user