diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Configuration/ISettingControl.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Configuration/ISettingControl.cs index f478dc50b..a560e4fc4 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Configuration/ISettingControl.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Configuration/ISettingControl.cs @@ -1,6 +1,6 @@ using System; -namespace Barotrauma.LuaCs.Configuration; +namespace Barotrauma.LuaCs.Data; public interface ISettingControl : ISettingBase { diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Data/IConfigInfo.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Data/IConfigInfo.cs index 1e26659a1..5a902c753 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Data/IConfigInfo.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Data/IConfigInfo.cs @@ -1,4 +1,4 @@ -using Barotrauma.LuaCs.Configuration; +using Barotrauma.LuaCs.Data; namespace Barotrauma.LuaCs.Data; diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/LuaCsSetup.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/LuaCsSetup.cs index 6c5be4e53..20839ed92 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/LuaCsSetup.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/LuaCsSetup.cs @@ -5,7 +5,7 @@ using System.IO; using System.Linq; using System.Text; using Barotrauma.CharacterEditor; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; // ReSharper disable ObjectCreationAsStatement diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/Compatibility/ILuaCsNetworking.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/Compatibility/ILuaCsNetworking.cs index 570debbaf..dbfbb9530 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/Compatibility/ILuaCsNetworking.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/Compatibility/ILuaCsNetworking.cs @@ -1,6 +1,6 @@ using Barotrauma.Networking; -namespace Barotrauma.LuaCs.Services.Compatibility; +namespace Barotrauma.LuaCs.Compatibility; internal partial interface ILuaCsNetworking : ILuaCsShim { diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/ConfigService.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/ConfigService.cs index b9de7b917..f2294c49c 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/ConfigService.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/ConfigService.cs @@ -5,7 +5,7 @@ using Barotrauma.LuaCs.Data; using Barotrauma.Networking; using FluentResults; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public sealed partial class ConfigService { diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/IClientLoggerService.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/IClientLoggerService.cs index 54b5445cf..5c1ff7e0d 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/IClientLoggerService.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/IClientLoggerService.cs @@ -1,4 +1,4 @@ -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface IClientLoggerService : IReusableService { diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/IConfigService.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/IConfigService.cs index 7218ef2cc..34b44c316 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/IConfigService.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/IConfigService.cs @@ -3,10 +3,10 @@ using System.Collections.Generic; using System.Collections.Immutable; using Barotrauma.LuaCs.Configuration; using Barotrauma.LuaCs.Data; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public partial interface IConfigService { diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/INetworkingService.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/INetworkingService.cs index d79efba19..e78f8a245 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/INetworkingService.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/INetworkingService.cs @@ -1,6 +1,6 @@ using Barotrauma.Networking; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; internal partial interface INetworkingService : IReusableService { diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/LoggerService.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/LoggerService.cs index aee2efabb..bb1af88a4 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/LoggerService.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/LoggerService.cs @@ -1,6 +1,6 @@ using Microsoft.Xna.Framework; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public partial class LoggerService : ILoggerService, IClientLoggerService { diff --git a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/NetworkingService.cs b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/NetworkingService.cs index 623bef305..d19a3ae9e 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/NetworkingService.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/LuaCs/Services/NetworkingService.cs @@ -1,10 +1,10 @@ -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; using System; using System.Collections.Concurrent; using System.Collections.Generic; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; partial class NetworkingService : INetworkingService { diff --git a/Barotrauma/BarotraumaServer/ServerSource/LuaCs/Services/INetworkingService.cs b/Barotrauma/BarotraumaServer/ServerSource/LuaCs/Services/INetworkingService.cs index 43e7e2f95..bc64aa010 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/LuaCs/Services/INetworkingService.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/LuaCs/Services/INetworkingService.cs @@ -1,7 +1,7 @@  using Barotrauma.Networking; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; internal partial interface INetworkingService : IReusableService { diff --git a/Barotrauma/BarotraumaServer/ServerSource/LuaCs/Services/NetworkingService.cs b/Barotrauma/BarotraumaServer/ServerSource/LuaCs/Services/NetworkingService.cs index c5789827b..cddd49806 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/LuaCs/Services/NetworkingService.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/LuaCs/Services/NetworkingService.cs @@ -1,11 +1,11 @@ -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; using System; using System.Collections.Generic; using System.Linq; // ReSharper disable once CheckNamespace -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; partial class NetworkingService : INetworkingService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsHook.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsHook.cs similarity index 92% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsHook.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsHook.cs index 6ef5d256e..69e57544d 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsHook.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsHook.cs @@ -1,7 +1,8 @@ using System; using System.Reflection; +using Barotrauma.LuaCs; -namespace Barotrauma.LuaCs.Services.Compatibility; +namespace Barotrauma.LuaCs.Compatibility; public interface ILuaCsHook : ILuaPatcher, ILuaCsShim { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsLogger.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsLogger.cs new file mode 100644 index 000000000..bcf5a3ebc --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsLogger.cs @@ -0,0 +1,6 @@ +namespace Barotrauma.LuaCs.Compatibility; + +public interface ILuaCsLogger : ILuaCsShim +{ + +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsNetworking.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsNetworking.cs similarity index 55% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsNetworking.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsNetworking.cs index fe78085bd..0ac2c99d4 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsNetworking.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsNetworking.cs @@ -1,4 +1,4 @@ -namespace Barotrauma.LuaCs.Services.Compatibility; +namespace Barotrauma.LuaCs.Compatibility; internal partial interface ILuaCsNetworking : ILuaCsShim { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsShim.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsShim.cs new file mode 100644 index 000000000..8f119b106 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsShim.cs @@ -0,0 +1,8 @@ +using Barotrauma.LuaCs; + +namespace Barotrauma.LuaCs.Compatibility; + +public interface ILuaCsShim : IService +{ + +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsTimer.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsTimer.cs similarity index 88% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsTimer.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsTimer.cs index f0a3f6b46..cc6c9081c 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsTimer.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsTimer.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Barotrauma.LuaCs.Services.Compatibility; +namespace Barotrauma.LuaCs.Compatibility; internal partial interface ILuaCsTimer : ILuaCsShim { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsUtility.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsUtility.cs similarity index 84% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsUtility.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsUtility.cs index 4e1bde042..3ab6fafed 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsUtility.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Compatibility/ILuaCsUtility.cs @@ -1,4 +1,4 @@ -namespace Barotrauma.LuaCs.Services.Compatibility; +namespace Barotrauma.LuaCs.Compatibility; public interface ILuaCsUtility : ILuaCsShim { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/DataInterfaceImplementations.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/DataInterfaceImplementations.cs index 514188b3f..0c0fad9cd 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/DataInterfaceImplementations.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/DataInterfaceImplementations.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Xml.Linq; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Steam; using OneOf; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/IConfigInfo.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/IConfigInfo.cs index 164d37791..696683af9 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/IConfigInfo.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/IConfigInfo.cs @@ -1,6 +1,6 @@ using System; using System.Xml.Linq; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; namespace Barotrauma.LuaCs.Data; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Configuration/ISettingTypeDef.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/ISettingTypeDef.cs similarity index 90% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Configuration/ISettingTypeDef.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/ISettingTypeDef.cs index 0f2534db6..89e5b9662 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Configuration/ISettingTypeDef.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/ISettingTypeDef.cs @@ -3,10 +3,10 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Xml.Linq; using Barotrauma.LuaCs.Data; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; -namespace Barotrauma.LuaCs.Configuration; +namespace Barotrauma.LuaCs.Data; public interface ISettingBase : IDataInfo, IEquatable, IDisposable { @@ -68,9 +68,10 @@ public interface ISettingBase : ISettingBase where T : IEquatable, IConver /// /// Creates a setting representing a value of the given with a minimum and maximum value. -/// Must be a type compatible with . +/// Can only be either an or a . /// -/// The value type. See +/// The type selection is limited by the Undertow implementation of the GUI Slider. +/// The value type, either or public interface ISettingRangeBase : ISettingBase where T : IEquatable, IConvertible { T MinValue { get; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/ServicesConfigData.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/ServicesConfigData.cs index f24283ac5..87cfdf29c 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/ServicesConfigData.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/ServicesConfigData.cs @@ -7,7 +7,7 @@ using System.IO; using System.Linq; using System.Reflection; using System.Security.AccessControl; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; using FluentResults; using OneOf.Types; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Configuration/SettingBase.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingBase.cs similarity index 97% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Configuration/SettingBase.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingBase.cs index ca7fbdcc0..a79c453c5 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Configuration/SettingBase.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingBase.cs @@ -3,7 +3,7 @@ using System.Xml.Linq; using Barotrauma.LuaCs.Data; using OneOf; -namespace Barotrauma.LuaCs.Configuration; +namespace Barotrauma.LuaCs.Data; public abstract class SettingBase : ISettingBase { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Configuration/SettingEntry.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingEntry.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Configuration/SettingEntry.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingEntry.cs index 040a3a065..55788c8f3 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Configuration/SettingEntry.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingEntry.cs @@ -2,12 +2,12 @@ using System.Runtime.CompilerServices; using System.Xml.Linq; using Barotrauma.LuaCs.Data; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; using Microsoft.Toolkit.Diagnostics; using OneOf; -namespace Barotrauma.LuaCs.Configuration; +namespace Barotrauma.LuaCs.Data; public class SettingEntry : SettingBase, ISettingBase, INetworkSyncEntity where T : IEquatable, IConvertible { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingRangeEntry.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingRangeEntry.cs new file mode 100644 index 000000000..1b094674f --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingRangeEntry.cs @@ -0,0 +1,76 @@ +using System; +using System.Xml.Linq; +using Barotrauma.LuaCs.Data; +using Microsoft.Toolkit.Diagnostics; +using OneOf; + +namespace Barotrauma.LuaCs.Data; + +public abstract class SettingRangeBase : SettingEntry, ISettingRangeBase where T : IEquatable, IConvertible +{ + public SettingRangeBase(IConfigInfo configInfo, Func, bool> valueChangePredicate) : base(configInfo, valueChangePredicate) + { + } + + public T MinValue { get; protected init; } + public T MaxValue { get; protected init; } + public int IncrementalSteps { get; protected init; } +} + +public class SettingRangeFloat : SettingRangeBase +{ + public class RangeFactory : ISettingBase.IFactory + { + public SettingRangeFloat CreateInstance(IConfigInfo configInfo, Func, bool> valueChangePredicate) + { + Guard.IsNotNull(configInfo, nameof(configInfo)); + return new SettingRangeFloat(configInfo, valueChangePredicate); + } + } + + public SettingRangeFloat(IConfigInfo configInfo, Func, bool> valueChangePredicate) : base(configInfo, valueChangePredicate) + { + // funny values in case they forget to set them in the config. + MinValue = configInfo.Element.GetAttributeFloat("Min", float.MinValue); + MaxValue = configInfo.Element.GetAttributeFloat("Max", float.MaxValue); + IncrementalSteps = configInfo.Element.GetAttributeInt("Steps", 3); + } + + public override bool TrySetValue(float value) + { + if (value > MaxValue || value < MinValue) + { + return false; + } + return base.TrySetValue(value); + } +} + +public class SettingRangeInt : SettingRangeBase +{ + public class RangeFactory : ISettingBase.IFactory + { + public SettingRangeInt CreateInstance(IConfigInfo configInfo, Func, bool> valueChangePredicate) + { + Guard.IsNotNull(configInfo, nameof(configInfo)); + return new SettingRangeInt(configInfo, valueChangePredicate); + } + } + + public SettingRangeInt(IConfigInfo configInfo, Func, bool> valueChangePredicate) : base(configInfo, valueChangePredicate) + { + // funny values in case they forget to set them in the config. + MinValue = configInfo.Element.GetAttributeInt("Min", int.MinValue); + MaxValue = configInfo.Element.GetAttributeInt("Max", int.MaxValue); + IncrementalSteps = configInfo.Element.GetAttributeInt("Steps", 3); + } + + public override bool TrySetValue(int value) + { + if (value > MaxValue || value < MinValue) + { + return false; + } + return base.TrySetValue(value); + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingsFactoryRegistrationProvider.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingsFactoryRegistrationProvider.cs new file mode 100644 index 000000000..35bf2b73b --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Data/SettingsFactoryRegistrationProvider.cs @@ -0,0 +1,67 @@ +using System; +using System.Xml.Linq; +using Barotrauma.LuaCs.Data; +using Barotrauma.LuaCs; + +namespace Barotrauma.LuaCs.Data; + +public interface ISettingsRegistrationProvider : IService +{ + void RegisterTypeProviders(IConfigService configService, Func, bool> valueChangePredicate); +} + +public class SettingsEntryRegistrar : ISettingsRegistrationProvider +{ + private ILuaCsInfoProvider _infoProvider; + + public SettingsEntryRegistrar(ILuaCsInfoProvider infoProvider) + { + _infoProvider = infoProvider; + } + + public void RegisterTypeProviders(IConfigService configService, Func, bool> valueChangePredicate) + { + // ISettingBase + RegisterSettingEntry(configService, "bool"); + RegisterSettingEntry(configService, "byte"); + RegisterSettingEntry(configService, "sbyte"); + RegisterSettingEntry(configService, "short"); + RegisterSettingEntry(configService, "ushort"); + RegisterSettingEntry(configService, "int"); + RegisterSettingEntry(configService, "uint"); + RegisterSettingEntry(configService, "long"); + RegisterSettingEntry(configService, "ulong"); + RegisterSettingEntry(configService, "string"); + // ISettingRangeBase + // ISettingList + } + + private void RegisterSettingEntry(IConfigService configService, string typeName) where T : IEquatable, IConvertible + { + configService.RegisterSettingTypeInitializer(typeName, cfgInfo => + { + return new SettingEntry.Factory().CreateInstance(cfgInfo.Info, (val) => + { + return !cfgInfo.Info.Element.GetAttributeBool("ReadOnly", false) + && cfgInfo.Info.EditableStates.HasFlag(_infoProvider?.CurrentRunState ?? RunState.Running); + }); + }); + } + + public void Dispose() + { + if (!ModUtils.Threading.CheckIfClearAndSetBool(ref _isDisposed)) + { + return; + } + _infoProvider.Dispose(); + _infoProvider = null; + } + + private int _isDisposed; + public bool IsDisposed + { + get => ModUtils.Threading.GetBool(ref _isDisposed); + private set => ModUtils.Threading.SetBool(ref _isDisposed, value); + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/IEvents.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/IEvents.cs index c65f4051b..7eca1b12e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/IEvents.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/IEvents.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Reflection; -using Barotrauma.LuaCs.Configuration; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs.Data; +using Barotrauma.LuaCs; using Barotrauma.Networking; using Dynamitey; using ImpromptuInterface; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs index 0e044d6f9..19ea7031e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/LuaCsSetup.cs @@ -9,20 +9,16 @@ using System.Reflection; using System.Threading; using System.Threading.Tasks; using Barotrauma.LuaCs; -using Barotrauma.LuaCs.Configuration; using Barotrauma.LuaCs.Data; using Barotrauma.LuaCs.Events; -using Barotrauma.LuaCs.Services; -using Barotrauma.LuaCs.Services.Compatibility; -using Barotrauma.LuaCs.Services.Processing; -using Barotrauma.LuaCs.Services.Safe; +using Barotrauma.LuaCs.Compatibility; using Barotrauma.Networking; using Barotrauma.Steam; using FluentResults; using ImpromptuInterface; using LightInject; using Microsoft.Toolkit.Diagnostics; -using AssemblyLoader = Barotrauma.LuaCs.Services.AssemblyLoader; +using AssemblyLoader = Barotrauma.LuaCs.AssemblyLoader; namespace Barotrauma { @@ -193,10 +189,11 @@ namespace Barotrauma servicesProvider.RegisterServiceType(ServiceLifetime.Singleton); servicesProvider.RegisterServiceType(ServiceLifetime.Singleton); servicesProvider.RegisterServiceType(ServiceLifetime.Singleton); - + servicesProvider.RegisterServiceType(ServiceLifetime.Transient); servicesProvider.RegisterServiceType(ServiceLifetime.Transient); servicesProvider.RegisterServiceType(ServiceLifetime.Singleton); servicesProvider.RegisterServiceType(ServiceLifetime.Singleton); + servicesProvider.RegisterServiceType(ServiceLifetime.Transient); // TODO: INetworkingService servicesProvider.RegisterServiceType(ServiceLifetime.Singleton); servicesProvider.RegisterServiceType(ServiceLifetime.Transient); diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsLogger.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsLogger.cs deleted file mode 100644 index 30c82860e..000000000 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsLogger.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Barotrauma.LuaCs.Services.Compatibility; - -public interface ILuaCsLogger : ILuaCsShim -{ - -} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsShim.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsShim.cs deleted file mode 100644 index 19a9cf663..000000000 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Compatibility/ILuaCsShim.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Barotrauma.LuaCs.Services.Compatibility; - -public interface ILuaCsShim : IService -{ - -} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginService.cs deleted file mode 100644 index 098fa1954..000000000 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginService.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Barotrauma.LuaCs.Services; - -public class PluginService -{ - -} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaService.cs deleted file mode 100644 index 0c6093319..000000000 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaService.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Barotrauma.LuaCs.Services.Safe; - -public interface ILuaService -{ - -} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Networking/INetCallback.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Networking/INetCallback.cs similarity index 81% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Networking/INetCallback.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Networking/INetCallback.cs index 9d3c86853..62ce88f26 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Networking/INetCallback.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Networking/INetCallback.cs @@ -1,6 +1,6 @@ using System; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public partial interface INetCallback { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Networking/INetworkSyncEntity.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Networking/INetworkSyncEntity.cs similarity index 96% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Networking/INetworkSyncEntity.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Networking/INetworkSyncEntity.cs index 1847dc2ef..c9c5e3851 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Networking/INetworkSyncEntity.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Networking/INetworkSyncEntity.cs @@ -1,10 +1,9 @@ using System; -using Barotrauma.LuaCs.Configuration; using Barotrauma.LuaCs.Data; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface INetworkSyncEntity { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/ACsMod.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/ACsMod.cs index d453dfbba..9ee8833bc 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/ACsMod.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/ACsMod.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using Barotrauma.LuaCs; namespace Barotrauma { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/ApplicationMode.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/ApplicationMode.cs deleted file mode 100644 index 6e60184bb..000000000 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/ApplicationMode.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Barotrauma; - -public enum ApplicationMode -{ - Client, Server -} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/AssemblyLoader.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/AssemblyLoader.cs index 87f920d70..6a323c12e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/AssemblyLoader.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/AssemblyLoader.cs @@ -21,7 +21,7 @@ using Path = System.IO.Path; [assembly: InternalsVisibleTo(IAssemblyLoaderService.InternalsAwareAssemblyName)] -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public sealed class AssemblyLoader : AssemblyLoadContext, IAssemblyLoaderService { public class Factory : IAssemblyLoaderService.IFactory diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/AssemblyLoadingSuccessState.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/AssemblyLoadingSuccessState.cs deleted file mode 100644 index e55821eb3..000000000 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/AssemblyLoadingSuccessState.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Barotrauma; - -public enum AssemblyLoadingSuccessState -{ - ACLLoadFailure, - AlreadyLoaded, - BadFilePath, - CannotLoadFile, - InvalidAssembly, - NoAssemblyFound, - PluginInstanceFailure, - BadName, - CannotLoadFromStream, - Success -} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/CsPackageManager.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/CsPackageManager.cs deleted file mode 100644 index 9e7060756..000000000 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/CsPackageManager.cs +++ /dev/null @@ -1,1099 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.Immutable; -using System.Diagnostics.CodeAnalysis; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading; -using Barotrauma.LuaCs; -using Barotrauma.LuaCs.Services; -using Barotrauma.Steam; -using Microsoft.CodeAnalysis; -using Microsoft.CodeAnalysis.CSharp; -using MonoMod.Utils; - -// ReSharper disable InconsistentNaming - -namespace Barotrauma; - -/*public sealed class CsPackageManager : IDisposable -{ - #region PRIVATE_FUNCDATA - - private static readonly CSharpParseOptions ScriptParseOptions = CSharpParseOptions.Default - .WithPreprocessorSymbols(new[] - { -#if SERVER - "SERVER" -#elif CLIENT - "CLIENT" -#else - "UNDEFINED" -#endif -#if DEBUG - ,"DEBUG" -#endif - }); - -#if WINDOWS - private const string PLATFORM_TARGET = "Windows"; -#elif OSX - private const string PLATFORM_TARGET = "OSX"; -#elif LINUX - private const string PLATFORM_TARGET = "Linux"; -#endif - -#if CLIENT - private const string ARCHITECTURE_TARGET = "Client"; -#elif SERVER - private const string ARCHITECTURE_TARGET = "Server"; -#endif - - private static readonly CSharpCompilationOptions CompilationOptions = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary) - .WithMetadataImportOptions(MetadataImportOptions.All) -#if DEBUG - .WithOptimizationLevel(OptimizationLevel.Debug) -#else - .WithOptimizationLevel(OptimizationLevel.Release) -#endif - .WithAllowUnsafe(true); - - private static readonly SyntaxTree BaseAssemblyImports = CSharpSyntaxTree.ParseText( - new StringBuilder() - .AppendLine("using System.Reflection;") - .AppendLine("using Barotrauma;") - .AppendLine("using System.Runtime.CompilerServices;") - .AppendLine("[assembly: IgnoresAccessChecksTo(\"BarotraumaCore\")]") -#if CLIENT - .AppendLine("[assembly: IgnoresAccessChecksTo(\"Barotrauma\")]") -#elif SERVER - .AppendLine("[assembly: IgnoresAccessChecksTo(\"DedicatedServer\")]") -#endif - .ToString(), - ScriptParseOptions); - - private readonly string[] _publicizedAssembliesToLoad = - { - "BarotraumaCore.dll", -#if CLIENT - "Barotrauma.dll" -#elif SERVER - "DedicatedServer.dll" -#endif - }; - - - private const string SCRIPT_FILE_REGEX = "*.cs"; - private const string ASSEMBLY_FILE_REGEX = "*.dll"; - - private readonly float _assemblyUnloadTimeoutSeconds = 6f; - private Guid _publicizedAssemblyLoader; - private readonly List _currentPackagesByLoadOrder = new(); - private readonly Dictionary> _packagesDependencies = new(); - private readonly Dictionary _loadedCompiledPackageAssemblies = new(); - private readonly Dictionary _reverseLookupGuidList = new(); - private readonly Dictionary> _loadedPlugins = new (); - private readonly Dictionary> _pluginTypes = new(); // where Type : IAssemblyPlugin - private readonly Dictionary _packageRunConfigs = new(); - private readonly Dictionary> _luaRegisteredTypes = new(); - private readonly AssemblyManager _assemblyManager; - private readonly LuaCsSetup _luaCsSetup; - private DateTime _assemblyUnloadStartTime; - - - #endregion - - #region PUBLIC_API - - #region LUA_EXTENSIONS - - /// - /// Searches for all types in all loaded assemblies from content packages who's names contain the name string and registers them with the Lua Interpreter. - /// - /// - /// - /// - public bool LuaTryRegisterPackageTypes(string name, bool caseSensitive = false) - { - if (!AssembliesLoaded) - return false; - var matchingPacks = _loadedCompiledPackageAssemblies - .Where(kvp => kvp.Key.Name.ToLowerInvariant().Contains(name.ToLowerInvariant())) - .Select(kvp => kvp.Value) - .ToImmutableList(); - if (!matchingPacks.Any()) - return false; - var types = matchingPacks - .Where(guid => !_luaRegisteredTypes.ContainsKey(guid)) - .Select(guid => new KeyValuePair>( - guid, - _assemblyManager.TryGetSubTypesFromACL(guid, out var types) - ? types.ToImmutableList() - : ImmutableList.Empty)) - .ToImmutableList(); - if (!types.Any()) - return false; - foreach (var kvp in types) - { - _luaRegisteredTypes[kvp.Key] = kvp.Value; - foreach (Type type in kvp.Value) - { - MoonSharp.Interpreter.UserData.RegisterType(type); - } - } - - return true; - } - - #endregion - - /// - /// Whether assemblies have been loaded. - /// - public bool AssembliesLoaded { get; private set; } - - - /// - /// Whether loaded plugins had their preloader run. - /// - public bool PluginsPreInit { get; private set; } - - /// - /// Whether plugins' types have been instantiated. - /// - public bool PluginsInitialized { get; private set; } - - /// - /// Whether plugins are fully loaded. - /// - public bool PluginsLoaded { get; private set; } - - public IEnumerable GetCurrentPackagesByLoadOrder() => _currentPackagesByLoadOrder; - - /// - /// Tries to find the content package that a given plugin belongs to. - /// - /// Package if found, null otherwise. - /// The IAssemblyPlugin type to find. - /// - public bool TryGetPackageForPlugin(out ContentPackage package) where T : IAssemblyPlugin - { - package = null; - - var t = typeof(T); - var guid = _pluginTypes - .Where(kvp => kvp.Value.Contains(t)) - .Select(kvp => kvp.Key) - .FirstOrDefault(Guid.Empty); - - if (guid.Equals(Guid.Empty) || !_reverseLookupGuidList.ContainsKey(guid) || _reverseLookupGuidList[guid] is null) - return false; - package = _reverseLookupGuidList[guid]; - return true; - } - - - /// - /// Tries to get the loaded plugins for a given package. - /// - /// Package to find. - /// The collection of loaded plugins. - /// - public bool TryGetLoadedPluginsForPackage(ContentPackage package, out IEnumerable loadedPlugins) - { - loadedPlugins = null; - if (package is null || !_loadedCompiledPackageAssemblies.ContainsKey(package)) - return false; - var guid = _loadedCompiledPackageAssemblies[package]; - if (guid.Equals(Guid.Empty) || !_loadedPlugins.ContainsKey(guid)) - return false; - loadedPlugins = _loadedPlugins[guid]; - return true; - } - - /// - /// Called when clean up is being performed. Use when relying on or making use of references from this manager. - /// - public event Action OnDispose; - - [MethodImpl(MethodImplOptions.Synchronized)] - public void Dispose() - { - // send events for cleanup - try - { - OnDispose?.Invoke(); - } - catch (Exception e) - { - ModUtils.Logging.PrintError($"Error while executing Dispose event: {e.Message}"); - } - - // cleanup events - if (OnDispose is not null) - { - foreach (Delegate del in OnDispose.GetInvocationList()) - { - OnDispose -= (del as System.Action); - } - } - - // cleanup plugins and assemblies - ReflectionUtils.ResetCache(); - UnloadPlugins(); - // try cleaning up the assemblies - _pluginTypes.Clear(); // remove assembly references - _loadedPlugins.Clear(); - _publicizedAssemblyLoader = Guid.Empty; - _packagesDependencies.Clear(); - _loadedCompiledPackageAssemblies.Clear(); - _reverseLookupGuidList.Clear(); - _packageRunConfigs.Clear(); - _currentPackagesByLoadOrder.Clear(); - - // lua cleanup - foreach (var kvp in _luaRegisteredTypes) - { - foreach (Type type in kvp.Value) - { - MoonSharp.Interpreter.UserData.UnregisterType(type); - } - } - _luaRegisteredTypes.Clear(); - - _assemblyUnloadStartTime = DateTime.Now; - _publicizedAssemblyLoader = Guid.Empty; - - // we can't wait forever or app dies but we can try to be graceful - while (!_assemblyManager.TryBeginDispose()) - { - Thread.Sleep(20); // give the assembly context unloader time to run (async) - if (_assemblyUnloadStartTime.AddSeconds(_assemblyUnloadTimeoutSeconds) > DateTime.Now) - { - break; - } - } - - _assemblyUnloadStartTime = DateTime.Now; - Thread.Sleep(100); // give the garbage collector time to finalize the disposed assemblies. - while (!_assemblyManager.FinalizeDispose()) - { - Thread.Sleep(100); // give the garbage collector time to finalize the disposed assemblies. - if (_assemblyUnloadStartTime.AddSeconds(_assemblyUnloadTimeoutSeconds) > DateTime.Now) - { - break; - } - } - - _assemblyManager.OnAssemblyLoaded -= AssemblyManagerOnAssemblyLoaded; - _assemblyManager.OnAssemblyUnloading -= AssemblyManagerOnAssemblyUnloading; - - AssembliesLoaded = false; - GC.SuppressFinalize(this); - } - - /// - /// Begins the loading process of scanning packages for scripts and binary assemblies, compiling and executing them. - /// - /// - public AssemblyLoadingSuccessState LoadAssemblyPackages() - { - if (AssembliesLoaded) - { - return AssemblyLoadingSuccessState.AlreadyLoaded; - } - - _assemblyManager.OnAssemblyLoaded += AssemblyManagerOnAssemblyLoaded; - _assemblyManager.OnAssemblyUnloading += AssemblyManagerOnAssemblyUnloading; - - // log error if some ACLs are still unloading (some assembly is still in use) - _assemblyManager.FinalizeDispose(); //Update lists - if (_assemblyManager.IsCurrentlyUnloading) - { - ModUtils.Logging.PrintMessage($"The below ACLs are still unloading:"); - foreach (var wkref in _assemblyManager.StillUnloadingACLs) - { - if (wkref.TryGetTarget(out var tgt)) - { - ModUtils.Logging.PrintMessage($"ACL Name: {tgt.FriendlyName}"); - foreach (Assembly assembly in tgt.Assemblies) - { - ModUtils.Logging.PrintMessage($"-- Assembly: {assembly.GetName()}"); - } - } - } - } - - ImmutableList publicizedAssemblies = ImmutableList.Empty; - List publicizedAssembliesLocList = new(); - - foreach (string dllName in _publicizedAssembliesToLoad) - { - GetFiles(publicizedAssembliesLocList, dllName); - } - - void GetFiles(List list, string searchQuery) - { - bool workshopFirst = _luaCsSetup.Config.PreferToUseWorkshopLuaSetup || LuaCsSetup.IsRunningInsideWorkshop; - - var publicizedDir = Path.Combine(Environment.CurrentDirectory, "Publicized"); - - // if using workshop lua setup is checked, try to use the publicized assemblies in the content package there instead. - if (workshopFirst) - { - var pck = LuaCsSetup.GetPackage(LuaCsSetup.LuaForBarotraumaId); - if (pck is not null) - { - publicizedDir = Path.Combine(pck.Dir, "Binary", "Publicized"); - } - } - - try - { - list.AddRange(Directory.GetFiles(publicizedDir, searchQuery)); - } - // no directory found, use the other one - catch (DirectoryNotFoundException) - { - if (workshopFirst) - { - ModUtils.Logging.PrintError($"Unable to find /Binary/Publicized/ . Using Game folder instead."); - publicizedDir = Path.Combine(Environment.CurrentDirectory, "Publicized"); - } - else - { - ModUtils.Logging.PrintError($"Unable to find /Publicized/ . Using LuaCsPackage folder instead."); - var pck = LuaCsSetup.GetPackage(LuaCsSetup.LuaForBarotraumaId); - if (pck is not null) - { - publicizedDir = Path.Combine(pck.Dir, "Binary", "Publicized"); - } - } - - // search for assemblies - list.AddRange(Directory.GetFiles(publicizedDir, searchQuery)); - } - } - - // try load them into an acl - var loadState = _assemblyManager.LoadAssembliesFromLocations(publicizedAssembliesLocList, "luacs_publicized_assemblies", ref _publicizedAssemblyLoader); - - // loaded - if (loadState is AssemblyLoadingSuccessState.Success) - { - if (_assemblyManager.TryGetACL(_publicizedAssemblyLoader, out var acl)) - { - publicizedAssemblies = acl.Acl.Assemblies.ToImmutableList(); - _assemblyManager.SetACLToTemplateMode(_publicizedAssemblyLoader); - } - } - - - // get packages - IEnumerable packages = BuildPackagesList(); - - // check and load config - _packageRunConfigs.AddRange(packages - .Select(p => new KeyValuePair(p, GetRunConfigForPackage(p))) - .ToDictionary(p => p.Key, p=> p.Value)); - - // filter not to be loaded - var cpToRunA = _packageRunConfigs - .Where(kvp => ShouldRunPackage(kvp.Key, kvp.Value)) - .Select(kvp => kvp.Key) - .ToHashSet(); - - //-- filter and remove duplicate mods, prioritize /LocalMods/ - HashSet cpNames = new(); - HashSet duplicateNames = new(); - - // search - foreach (ContentPackage package in cpToRunA) - { - if (cpNames.Contains(package.Name)) - { - if (!duplicateNames.Contains(package.Name)) - { - duplicateNames.Add(package.Name); - } - } - else - { - cpNames.Add(package.Name); - } - } - - // remove - foreach (string name in duplicateNames) - { - var duplCpList = cpToRunA - .Where(p => p.Name.Equals(name)) - .ToHashSet(); - - if (duplCpList.Count < 2) // one or less found - continue; - - ContentPackage toKeep = null; - foreach (ContentPackage package in duplCpList) - { - if (package.Dir.Contains("LocalMods")) - { - toKeep = package; - break; - } - } - - toKeep ??= duplCpList.First(); - - duplCpList.Remove(toKeep); // remove all but this one - cpToRunA.RemoveWhere(p => duplCpList.Contains(p)); - } - - var cpToRun = cpToRunA.ToImmutableList(); - - // build dependencies map - bool reliableMap = TryBuildDependenciesMap(cpToRun, out var packDeps); - if (!reliableMap) - { - ModUtils.Logging.PrintMessage($"{nameof(CsPackageManager)}: Unable to create reliable dependencies map."); - } - - _packagesDependencies.AddRange(packDeps.ToDictionary( - kvp => kvp.Key, - kvp => kvp.Value.ToImmutableList()) - ); - - List packagesToLoadInOrder = new(); - - // build load order - if (reliableMap && OrderAndFilterPackagesByDependencies( - _packagesDependencies, - out var readyToLoad, - out var cannotLoadPackages)) - { - packagesToLoadInOrder.AddRange(readyToLoad); - if (cannotLoadPackages is not null) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Unable to load the following mods due to dependency errors:"); - foreach (var pair in cannotLoadPackages) - { - ModUtils.Logging.PrintError($"Package: {pair.Key.Name} | Reason: {pair.Value}"); - } - } - } - else - { - // use unsorted list on failure and send error message. - packagesToLoadInOrder.AddRange(_packagesDependencies.Select( p=> p.Key)); - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Unable to create a reliable load order. Defaulting to unordered loading!"); - } - - // get assemblies and scripts' filepaths from packages - var toLoad = packagesToLoadInOrder - .Select(cp => new KeyValuePair( - cp, - new LoadableData( - TryScanPackagesForAssemblies(cp, out var list1) ? list1 : null, - TryScanPackageForScripts(cp, out var list2) ? list2 : null, - GetRunConfigForPackage(cp)))) - .ToImmutableDictionary(); - - HashSet badPackages = new(); - foreach (var pair in toLoad) - { - // check if unloadable - if (badPackages.Contains(pair.Key)) - continue; - - // try load binary assemblies - var id = Guid.Empty; // id for the ACL for this package defined by AssemblyManager. - AssemblyLoadingSuccessState successState; - if (pair.Value.AssembliesFilePaths is not null && pair.Value.AssembliesFilePaths.Any()) - { - ModUtils.Logging.PrintMessage($"Loading assemblies for CPackage {pair.Key.Name}"); -#if DEBUG - foreach (string assembliesFilePath in pair.Value.AssembliesFilePaths) - { - ModUtils.Logging.PrintMessage($"Found assemblies located at {Path.GetFullPath(ModUtils.IO.SanitizePath(assembliesFilePath))}"); - } -#endif - - successState = _assemblyManager.LoadAssembliesFromLocations(pair.Value.AssembliesFilePaths, pair.Key.Name, ref id); - - // error handling - if (successState is not AssemblyLoadingSuccessState.Success) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Unable to load the binary assemblies for package {pair.Key.Name}. Error: {successState.ToString()}"); - UpdatePackagesToDisable(ref badPackages, pair.Key, _packagesDependencies); - continue; - } - } - - // try compile scripts to assemblies - if (pair.Value.ScriptsFilePaths is not null && pair.Value.ScriptsFilePaths.Any()) - { - ModUtils.Logging.PrintMessage($"Loading scripts for CPackage {pair.Key.Name}"); - List syntaxTrees = new(); - - syntaxTrees.Add(GetPackageScriptImports()); - bool abortPackage = false; - // load scripts data from files - foreach (string scriptPath in pair.Value.ScriptsFilePaths) - { - var state = ModUtils.IO.GetOrCreateFileText(scriptPath, out string fileText, null, false); - // could not load file data - if (state is not ModUtils.IO.IOActionResultState.Success) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Unable to load the script files for package {pair.Key.Name}. Error: {state.ToString()}"); - UpdatePackagesToDisable(ref badPackages, pair.Key, _packagesDependencies); - abortPackage = true; - break; - } - - try - { - CancellationToken token = new(); - syntaxTrees.Add(SyntaxFactory.ParseSyntaxTree(fileText, ScriptParseOptions, scriptPath, Encoding.Default, token)); - // cancel if parsing failed - if (token.IsCancellationRequested) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Unable to load the script files for package {pair.Key.Name}. Error: Syntax Parse Error."); - UpdatePackagesToDisable(ref badPackages, pair.Key, _packagesDependencies); - abortPackage = true; - break; - } - } - catch (Exception e) - { - // unknown error - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Unable to load the script files for package {pair.Key.Name}. Error: {e.Message}"); - UpdatePackagesToDisable(ref badPackages, pair.Key, _packagesDependencies); - abortPackage = true; - break; - } - - } - - if (abortPackage) - continue; - - // try compile - successState = _assemblyManager.LoadAssemblyFromMemory( - pair.Value.config.UseInternalAssemblyName ? "CompiledAssembly" : pair.Key.Name.Replace(" ",""), - syntaxTrees, - null, - CompilationOptions, - pair.Key.Name, - ref id, - pair.Value.config.UseNonPublicizedAssemblies ? null : publicizedAssemblies); - - if (successState is not AssemblyLoadingSuccessState.Success) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Unable to compile script assembly for package {pair.Key.Name}. Error: {successState.ToString()}"); - UpdatePackagesToDisable(ref badPackages, pair.Key, _packagesDependencies); - continue; - } - } - - // something was loaded, add to index - if (id != Guid.Empty) - { - ModUtils.Logging.PrintMessage($"Assemblies from CPackage {pair.Key.Name} loaded with Guid {id}."); - _loadedCompiledPackageAssemblies.Add(pair.Key, id); - _reverseLookupGuidList.Add(id, pair.Key); - } - } - - // update loaded packages to exclude bad packages - _currentPackagesByLoadOrder.AddRange(toLoad - .Where(p => !badPackages.Contains(p.Key)) - .Select(p => p.Key)); - - // build list of plugins - foreach (var pair in _loadedCompiledPackageAssemblies) - { - if (_assemblyManager.TryGetSubTypesFromACL(pair.Value, out var types)) - { - _pluginTypes[pair.Value] = types.ToImmutableHashSet(); - foreach (var type in _pluginTypes[pair.Value]) - { - ModUtils.Logging.PrintMessage($"Loading type: {type.Name}"); - } - } - } - - this.AssembliesLoaded = true; - return AssemblyLoadingSuccessState.Success; - - - bool ShouldRunPackage(ContentPackage package, RunConfig config) - { - throw new NotImplementedException(); - } - - void UpdatePackagesToDisable(ref HashSet set, - ContentPackage newDisabledPackage, - IEnumerable>> dependenciesMap) - { - set.Add(newDisabledPackage); - foreach (var package in dependenciesMap) - { - if (package.Value.Contains(newDisabledPackage)) - set.Add(newDisabledPackage); - } - } - } - - /// - /// Executes instantiated plugins' Initialize() and OnLoadCompleted() methods. - /// - public void RunPluginsInit() - { - if (!AssembliesLoaded) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Attempted to call plugins' Initialize() without any loaded assemblies!"); - return; - } - - if (!PluginsInitialized) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Attempted to call plugins' Initialize() without type instantiation!"); - return; - } - - if (PluginsLoaded) - return; - - foreach (var contentPlugins in _loadedPlugins) - { - // init - foreach (var plugin in contentPlugins.Value) - { - TryRun(() => plugin.Initialize(), $"{nameof(IAssemblyPlugin.Initialize)}", $"CP: {_reverseLookupGuidList[contentPlugins.Key].Name} Plugin: {plugin.GetType().Name}"); - } - } - - foreach (var contentPlugins in _loadedPlugins) - { - // load complete - foreach (var plugin in contentPlugins.Value) - { - TryRun(() => plugin.OnLoadCompleted(), $"{nameof(IAssemblyPlugin.OnLoadCompleted)}", $"CP: {_reverseLookupGuidList[contentPlugins.Key].Name} Plugin: {plugin.GetType().Name}"); - } - } - - PluginsLoaded = true; - } - - /// - /// Executes instantiated plugins' PreInitPatching() method. - /// - public void RunPluginsPreInit() - { - if (!AssembliesLoaded) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Attempted to call plugins' PreInitPatching() without any loaded assemblies!"); - return; - } - - if (!PluginsInitialized) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Attempted to call plugins' PreInitPatching() without type initialization!"); - return; - } - - if (PluginsPreInit) - { - return; - } - - foreach (var contentPlugins in _loadedPlugins) - { - // init - foreach (var plugin in contentPlugins.Value) - { - TryRun(() => plugin.PreInitPatching(), $"{nameof(IAssemblyPlugin.PreInitPatching)}", $"CP: {_reverseLookupGuidList[contentPlugins.Key].Name} Plugin: {plugin.GetType().Name}"); - } - } - - PluginsPreInit = true; - } - - /// - /// Initializes plugin types that are registered. - /// - /// - public void InstantiatePlugins(bool force = false) - { - if (!AssembliesLoaded) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Attempted to instantiate plugins without any loaded assemblies!"); - return; - } - - if (PluginsInitialized) - { - if (force) - UnloadPlugins(); - else - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Attempted to load plugins when they were already loaded!"); - return; - } - } - - foreach (var pair in _pluginTypes) - { - // instantiate - foreach (Type type in pair.Value) - { - if (!_loadedPlugins.ContainsKey(pair.Key)) - _loadedPlugins.Add(pair.Key, new()); - else if (_loadedPlugins[pair.Key] is null) - _loadedPlugins[pair.Key] = new(); - IAssemblyPlugin plugin = null; - try - { - plugin = (IAssemblyPlugin)Activator.CreateInstance(type); - _loadedPlugins[pair.Key].Add(plugin); - } - catch (Exception e) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Error while instantiating plugin of type {type}. Now disposing..."); - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Details: {e.Message} | {e.InnerException}"); - - if (plugin is not null) - { - // ReSharper disable once AccessToModifiedClosure - TryRun(() => plugin?.Dispose(), nameof(IAssemblyPlugin.Dispose), type.FullName ?? type.Name); - plugin = null; - } - } - } - } - - PluginsInitialized = true; - } - - /// - /// Unloads all plugins by calling Dispose() on them. Note: This does not remove their external references nor - /// unregister their types. - /// - public void UnloadPlugins() - { - foreach (var contentPlugins in _loadedPlugins) - { - foreach (var plugin in contentPlugins.Value) - { - TryRun(() => plugin.Dispose(), $"{nameof(IAssemblyPlugin.Dispose)}", $"CP: {_reverseLookupGuidList[contentPlugins.Key].Name} Plugin: {plugin.GetType().Name}"); - } - contentPlugins.Value.Clear(); - } - - _loadedPlugins.Clear(); - - PluginsInitialized = false; - PluginsPreInit = false; - PluginsLoaded = false; - } - - - /// - /// Gets the RunConfig.xml for the given package located at [cp_root]/CSharp/RunConfig.xml. - /// Generates a default config if one is not found. - /// - /// The package to search for. - /// RunConfig data. - /// True if a config is loaded, false if one was created. - public static bool GetOrCreateRunConfig(ContentPackage package, out RunConfig config) - { - var path = System.IO.Path.Combine(Path.GetFullPath(package.Dir), "CSharp", "RunConfig.xml"); - if (!File.Exists(path)) - { - config = new RunConfig(true).Sanitize(); - return false; - } - return ModUtils.IO.LoadOrCreateTypeXml(out config, path, () => new RunConfig(true).Sanitize(), false); - } - - #endregion - - #region INTERNALS - - private void TryRun(Action action, string messageMethodName, string messageTypeName) - { - try - { - action?.Invoke(); - } - catch (Exception e) - { - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Error while running {messageMethodName}() on plugin of type {messageTypeName}"); - ModUtils.Logging.PrintError($"{nameof(CsPackageManager)}: Details: {e.Message} | {e.InnerException}"); - } - } - - private void AssemblyManagerOnAssemblyUnloading(Assembly assembly) - { - ReflectionUtils.RemoveAssemblyFromCache(assembly); - } - - private void AssemblyManagerOnAssemblyLoaded(Assembly assembly) - { - //ReflectionUtils.AddNonAbstractAssemblyTypes(assembly); - // As ReflectionUtils.GetDerivedNonAbstract is only used for Prefabs & Barotrauma-specific implementing types, - // we can safely not register System/Core assemblies. - if (assembly.FullName is not null && assembly.FullName.StartsWith("System.")) - return; - ReflectionUtils.AddNonAbstractAssemblyTypes(assembly, true); - } - - internal CsPackageManager([NotNull] AssemblyManager assemblyManager, [NotNull] LuaCsSetup luaCsSetup) - { - this._assemblyManager = assemblyManager; - this._luaCsSetup = luaCsSetup; - } - - ~CsPackageManager() - { - this.Dispose(); - } - - private static bool TryScanPackageForScripts(ContentPackage package, out ImmutableList scriptFilePaths) - { - string pathShared = Path.Combine(ModUtils.IO.GetContentPackageDir(package), "CSharp", "Shared"); - string pathArch = Path.Combine(ModUtils.IO.GetContentPackageDir(package), "CSharp", ARCHITECTURE_TARGET); - - List files = new(); - - if (Directory.Exists(pathShared)) - files.AddRange(Directory.GetFiles(pathShared, SCRIPT_FILE_REGEX, SearchOption.AllDirectories)); - if (Directory.Exists(pathArch)) - files.AddRange(Directory.GetFiles(pathArch, SCRIPT_FILE_REGEX, SearchOption.AllDirectories)); - - if (files.Count > 0) - { - scriptFilePaths = files.ToImmutableList(); - return true; - } - scriptFilePaths = ImmutableList.Empty; - return false; - } - - private static bool TryScanPackagesForAssemblies(ContentPackage package, out ImmutableList assemblyFilePaths) - { - string path = Path.Combine(ModUtils.IO.GetContentPackageDir(package), "bin", ARCHITECTURE_TARGET, PLATFORM_TARGET); - - if (!Directory.Exists(path)) - { - assemblyFilePaths = ImmutableList.Empty; - return false; - } - - assemblyFilePaths = System.IO.Directory.GetFiles(path, ASSEMBLY_FILE_REGEX, SearchOption.AllDirectories) - .ToImmutableList(); - return assemblyFilePaths.Count > 0; - } - - private static RunConfig GetRunConfigForPackage(ContentPackage package) - { - if (!GetOrCreateRunConfig(package, out var config)) - config.AutoGenerated = true; - return config; - } - - private IEnumerable BuildPackagesList() - { - // get unique list of content packages. - // Note: there is an old issue where the AllPackages group - // would sometimes not contain packages downloaded from the host, so we union enabled. - return ContentPackageManager.AllPackages.Union(ContentPackageManager.EnabledPackages.All).Where(pack => !pack.Name.ToLowerInvariant().Equals("vanilla")); - } - - - private static SyntaxTree GetPackageScriptImports() => BaseAssemblyImports; - - - /// - /// Builds a list of ContentPackage dependencies for each of the packages in the list. Note: All dependencies must be included in the provided list of packages. - /// - /// List of packages to check - /// Dependencies by package - /// True if all dependencies were found. - private static bool TryBuildDependenciesMap(ImmutableList packages, out Dictionary> dependenciesMap) - { - bool reliableMap = true; // remains true if all deps were found. - dependenciesMap = new(); - foreach (var package in packages) - { - dependenciesMap.Add(package, new()); - if (GetOrCreateRunConfig(package, out var config)) - { - if (config.Dependencies is null || !config.Dependencies.Any()) - continue; - - foreach (RunConfig.Dependency dependency in config.Dependencies) - { - ContentPackage dep = packages.FirstOrDefault(p => - (dependency.SteamWorkshopId != 0 && p.TryExtractSteamWorkshopId(out var steamWorkshopId) - && steamWorkshopId.Value == dependency.SteamWorkshopId) - || (!dependency.PackageName.IsNullOrWhiteSpace() && p.Name.ToLowerInvariant().Contains(dependency.PackageName.ToLowerInvariant())), null); - - if (dep is not null) - { - dependenciesMap[package].Add(dep); - } - else - { - ModUtils.Logging.PrintWarning($"Warning: The ContentPackage {package.Name} lists a dependency of (STEAMID: {dependency.SteamWorkshopId}, PackageName: {dependency.PackageName}) but it could not be found in the to-be-loaded CSharp packages list!"); - reliableMap = false; - } - } - } - } - - return reliableMap; - } - - /// - /// Given a table of packages and dependent packages, will sort them by dependency loading order along with packages - /// that cannot be loaded due to errors or failing the predicate checks. - /// - /// A dictionary/map with key as the package and the elements as it's dependencies. - /// List of packages that are ready to load and in the correct order. - /// Packages with errors or cyclic dependencies. Element is error message. Null if empty. - /// Optional: Allows for a custom checks to be performed on each package. - /// Returns a bool indicating if the package is ready to load. - /// Whether the process produces a usable list. - private static bool OrderAndFilterPackagesByDependencies( - Dictionary> packages, - out IEnumerable readyToLoad, - out IEnumerable> cannotLoadPackages, - Func packageChecksPredicate = null) - { - HashSet completedPackages = new(); - List readyPackages = new(); - Dictionary unableToLoad = new(); - HashSet currentNodeChain = new(); - - readyToLoad = readyPackages; - - try - { - foreach (var toProcessPack in packages) - { - ProcessPackage(toProcessPack.Key, toProcessPack.Value); - } - - PackageProcRet ProcessPackage(ContentPackage packageToProcess, IEnumerable dependencies) - { - //cyclic handling - if (unableToLoad.ContainsKey(packageToProcess)) - { - return PackageProcRet.BadPackage; - } - - // already processed - if (completedPackages.Contains(packageToProcess)) - { - return PackageProcRet.AlreadyCompleted; - } - - // cyclic check - if (currentNodeChain.Contains(packageToProcess)) - { - StringBuilder sb = new(); - sb.AppendLine("Error: Cyclic Dependency. ") - .Append( - "The following ContentPackages rely on eachother in a way that makes it impossible to know which to load first! ") - .Append( - "Note: the package listed twice shows where the cycle starts/ends and is not necessarily the problematic package."); - int i = 0; - foreach (var package in currentNodeChain) - { - i++; - sb.AppendLine($"{i}. {package.Name}"); - } - - sb.AppendLine($"{i}. {packageToProcess.Name}"); - unableToLoad.Add(packageToProcess, sb.ToString()); - completedPackages.Add(packageToProcess); - return PackageProcRet.BadPackage; - } - - if (packageChecksPredicate is not null && !packageChecksPredicate.Invoke(packageToProcess)) - { - unableToLoad.Add(packageToProcess, $"Unable to load package {packageToProcess.Name} due to failing checks."); - completedPackages.Add(packageToProcess); - return PackageProcRet.BadPackage; - } - - currentNodeChain.Add(packageToProcess); - - foreach (ContentPackage dependency in dependencies) - { - // The mod lists a dependent that was not found during the discovery phase. - if (!packages.ContainsKey(dependency)) - { - // search to see if it's enabled - if (!ContentPackageManager.EnabledPackages.All.Contains(dependency)) - { - // present warning but allow loading anyways, better to let the user just disable the package if it's really an issue. - ModUtils.Logging.PrintWarning( - $"Warning: the ContentPackage of {packageToProcess.Name} requires the Dependency {dependency.Name} but this package wasn't found in the enabled mods list!"); - } - - continue; - } - - var ret = ProcessPackage(dependency, packages[dependency]); - - if (ret is PackageProcRet.BadPackage) - { - if (!unableToLoad.ContainsKey(packageToProcess)) - { - unableToLoad.Add(packageToProcess, $"Error: Dependency failure. Failed to load {dependency.Name}"); - } - currentNodeChain.Remove(packageToProcess); - if (!completedPackages.Contains(packageToProcess)) - { - completedPackages.Add(packageToProcess); - } - return PackageProcRet.BadPackage; - } - } - - currentNodeChain.Remove(packageToProcess); - completedPackages.Add(packageToProcess); - readyPackages.Add(packageToProcess); - return PackageProcRet.Completed; - } - } - catch (Exception e) - { - ModUtils.Logging.PrintError($"Error while generating dependency loading order! Exception: {e.Message}"); -#if DEBUG - ModUtils.Logging.PrintError($"Stack Trace: {e.StackTrace}"); -#endif - cannotLoadPackages = unableToLoad.Any() ? unableToLoad : null; - return false; - } - cannotLoadPackages = unableToLoad.Any() ? unableToLoad : null; - return true; - } - - private enum PackageProcRet : byte - { - AlreadyCompleted, - Completed, - BadPackage - } - - private record LoadableData(ImmutableList AssembliesFilePaths, ImmutableList ScriptsFilePaths, RunConfig config); - - #endregion -} -*/ diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyLoaderService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyLoaderService.cs index c3dd6983a..8a6115bc1 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyLoaderService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyLoaderService.cs @@ -5,7 +5,7 @@ using System.ComponentModel.DataAnnotations; using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Runtime.CompilerServices; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyPlugin.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyPlugin.cs index 964ce312f..7667c86cd 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyPlugin.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/IAssemblyPlugin.cs @@ -1,6 +1,6 @@ using System; using Barotrauma.LuaCs.Events; -namespace Barotrauma; +namespace Barotrauma.LuaCs; public interface IAssemblyPlugin : IDisposable, IEventPluginPreInitialize, IEventPluginInitialize, IEventPluginLoadCompleted { } diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/RunConfig.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/RunConfig.cs index 0e46032c1..d5283156a 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/RunConfig.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Plugins/RunConfig.cs @@ -6,6 +6,7 @@ using Barotrauma.LuaCs.Data; namespace Barotrauma; [Serializable] +[Obsolete($"Use {nameof(IModConfigInfo)} instead. This class exists for legacy compatibility only.")] public sealed class RunConfig : IRunConfig { /// diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ConfigService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ConfigService.cs similarity index 96% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ConfigService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ConfigService.cs index 9aea4a8bc..987b81bde 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ConfigService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ConfigService.cs @@ -9,14 +9,13 @@ using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using System.Xml.Linq; -using Barotrauma.LuaCs.Configuration; using Barotrauma.LuaCs.Data; using Barotrauma.LuaCs.Events; -using Barotrauma.LuaCs.Services.Processing; +using Barotrauma.LuaCs; using FluentResults; using Microsoft.Toolkit.Diagnostics; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public sealed partial class ConfigService : IConfigService { @@ -122,7 +121,7 @@ public sealed partial class ConfigService : IConfigService private readonly ConcurrentDictionary<(ContentPackage OwnerPackage, string InternalName), ISettingBase> _settingsInstances = new(); - private readonly ConcurrentDictionary> + private readonly ConcurrentDictionary> _instanceFactory = new(); private readonly ConcurrentDictionary> _settingsInstancesByPackage = new(); @@ -146,7 +145,7 @@ public sealed partial class ConfigService : IConfigService } - public void RegisterSettingTypeInitializer(string typeIdentifier, Func settingFactory) where T : class, ISettingBase + public void RegisterSettingTypeInitializer(string typeIdentifier, Func<(IConfigService ConfigService, IConfigInfo Info), T> settingFactory) where T : class, ISettingBase { Guard.IsNotNullOrWhiteSpace(typeIdentifier, nameof(typeIdentifier)); Guard.IsNotNull(settingFactory, nameof(settingFactory)); @@ -199,7 +198,7 @@ public sealed partial class ConfigService : IConfigService .SelectMany(tr => tr) .ToImmutableArray(); - var instanceQueue = new Queue<(IConfigInfo configInfo, Func factory)>(); + var instanceQueue = new Queue<(IConfigInfo configInfo, Func<(IConfigService ConfigService, IConfigInfo Info), ISettingBase> factory)>(); foreach (var info in toProcessDocs) { @@ -222,7 +221,7 @@ public sealed partial class ConfigService : IConfigService { try { - toProcessInstanceQueue.Enqueue((instanceFactoryInfo.configInfo, instanceFactoryInfo.factory(instanceFactoryInfo.configInfo))); + toProcessInstanceQueue.Enqueue((instanceFactoryInfo.configInfo, instanceFactoryInfo.factory((this, instanceFactoryInfo.configInfo)))); } catch (Exception e) { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/EventService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/EventService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/EventService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/EventService.cs index bf7a04271..32e543738 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/EventService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/EventService.cs @@ -1,6 +1,6 @@ using Barotrauma.Extensions; using Barotrauma.LuaCs.Events; -using Barotrauma.LuaCs.Services.Compatibility; +using Barotrauma.LuaCs.Compatibility; using FluentResults; using FluentResults.LuaCs; using HarmonyLib; @@ -15,7 +15,7 @@ using System.Collections.Immutable; using System.Linq; using System.Reflection; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public partial class EventService : IEventService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/LoggerService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LoggerService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/LoggerService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LoggerService.cs index f0bfc110a..ec455ae0a 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/LoggerService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LoggerService.cs @@ -5,7 +5,7 @@ using FluentResults; using Microsoft.Xna.Framework; using MoonSharp.Interpreter; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public partial class LoggerService : ILoggerService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaCsInfoProvider.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaCsInfoProvider.cs new file mode 100644 index 000000000..0637da337 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaCsInfoProvider.cs @@ -0,0 +1,18 @@ +namespace Barotrauma.LuaCs; + +public sealed class LuaCsInfoProvider : ILuaCsInfoProvider +{ + public void Dispose() + { + // stateless service + } + + public bool IsDisposed => false; + public bool IsCsEnabled => GameMain.LuaCs.IsCsEnabled; + public bool DisableErrorGUIOverlay => GameMain.LuaCs.DisableErrorGUIOverlay; + public bool HideUserNamesInLogs => GameMain.LuaCs.HideUserNamesInLogs; + public ulong LuaForBarotraumaSteamId => GameMain.LuaCs.LuaForBarotraumaSteamId; + public bool RestrictMessageSize => GameMain.LuaCs.RestrictMessageSize; + public string LocalDataSavePath => GameMain.LuaCs.LocalDataSavePath; + public RunState CurrentRunState => GameMain.LuaCs.CurrentRunState; +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/LuaScriptManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs similarity index 98% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/LuaScriptManagementService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs index 97564b9be..ed5678049 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/LuaScriptManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/LuaScriptManagementService.cs @@ -1,8 +1,7 @@ #nullable enable using Barotrauma.LuaCs.Data; -using Barotrauma.LuaCs.Services.Compatibility; -using Barotrauma.LuaCs.Services.Safe; +using Barotrauma.LuaCs.Compatibility; using Barotrauma.Networking; using FluentResults; using Microsoft.CodeAnalysis; @@ -21,8 +20,9 @@ using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; using System.Threading.Tasks; +using Barotrauma.LuaCs; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; class LuaScriptManagementService : ILuaScriptManagementService, ILuaDataService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigFileParserService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ModConfigFileParserService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigFileParserService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ModConfigFileParserService.cs index b35212eae..1a6f63933 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigFileParserService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ModConfigFileParserService.cs @@ -8,7 +8,7 @@ using Barotrauma.LuaCs.Data; using FluentResults; using Microsoft.Toolkit.Diagnostics; -namespace Barotrauma.LuaCs.Services.Processing; +namespace Barotrauma.LuaCs; public sealed class ModConfigFileParserService : IParserServiceAsync, diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ModConfigService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ModConfigService.cs index 5ce1aff99..cd3ea8085 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/ModConfigService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ModConfigService.cs @@ -14,7 +14,7 @@ using FluentResults; using Microsoft.Toolkit.Diagnostics; using MoonSharp.VsCodeDebugger.SDK; -namespace Barotrauma.LuaCs.Services.Processing; +namespace Barotrauma.LuaCs; public sealed class ModConfigService : IModConfigService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/NetworkingService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/NetworkingService.cs similarity index 97% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/NetworkingService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/NetworkingService.cs index 1c8b6b32d..455f02138 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/NetworkingService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/NetworkingService.cs @@ -1,9 +1,9 @@ -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; using System; using System.Collections.Generic; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; internal partial class NetworkingService : INetworkingService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PackageManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PackageManagementService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PackageManagementService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PackageManagementService.cs index e2878bb58..f07b83e62 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PackageManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PackageManagementService.cs @@ -9,7 +9,7 @@ using Barotrauma.LuaCs.Data; using FluentResults; using Microsoft.Toolkit.Diagnostics; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public sealed class PackageManagementService : IPackageManagementService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs index b6144435c..3164128d1 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/PluginManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginManagementService.cs @@ -25,7 +25,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Toolkit.Diagnostics; using OneOf; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public class PluginManagementService : IAssemblyManagementService { @@ -71,12 +71,11 @@ public class PluginManagementService : IAssemblyManagementService private static readonly SyntaxTree BaseAssemblyImports = CSharpSyntaxTree.ParseText( new StringBuilder() - .AppendLine("global using LuaCsHook = Barotrauma.LuaCs.Services.Compatibility.ILuaCsHook;") + .AppendLine("global using LuaCsHook = Barotrauma.LuaCs.Compatibility.ILuaCsHook;") .AppendLine("using System.Reflection;") .AppendLine("using Barotrauma;") .AppendLine("using Barotrauma.LuaCs;") - .AppendLine("using Barotrauma.LuaCs.Services;") - .AppendLine("using Barotrauma.LuaCs.Services.Compatibility;") + .AppendLine("using Barotrauma.LuaCs.Compatibility;") .AppendLine("using System.Runtime.CompilerServices;") .AppendLine("[assembly: IgnoresAccessChecksTo(\"BarotraumaCore\")]") #if CLIENT diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginService.cs new file mode 100644 index 000000000..1c42ebcd4 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/PluginService.cs @@ -0,0 +1,6 @@ +namespace Barotrauma.LuaCs; + +public class PluginService +{ + +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/SafeStorageService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/SafeStorageService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/SafeStorageService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/SafeStorageService.cs index 34c433f21..983a13b32 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/SafeStorageService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/SafeStorageService.cs @@ -15,7 +15,7 @@ using System.Threading.Tasks; using System.Xml.Linq; using Path = System.IO.Path; -namespace Barotrauma.LuaCs.Services.Safe; +namespace Barotrauma.LuaCs; public class SafeStorageService : StorageService, ISafeStorageService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ServicesProvider.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ServicesProvider.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ServicesProvider.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ServicesProvider.cs index 71fcb54b2..e9e06fe44 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/ServicesProvider.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/ServicesProvider.cs @@ -5,7 +5,7 @@ using System.Runtime.CompilerServices; using System.Threading; using LightInject; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public class ServicesProvider : IServicesProvider diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/SettingsFileParserService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/SettingsFileParserService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/SettingsFileParserService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/SettingsFileParserService.cs index a44cb285e..5ab01f02e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/SettingsFileParserService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/SettingsFileParserService.cs @@ -9,7 +9,7 @@ using FluentResults; using Microsoft.Toolkit.Diagnostics; using OneOf; -namespace Barotrauma.LuaCs.Services.Processing; +namespace Barotrauma.LuaCs; public sealed class SettingsFileParserService : IParserServiceOneToManyAsync, diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/StorageService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/StorageService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/StorageService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/StorageService.cs index 5abfdc0a2..0de6b864b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/StorageService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/StorageService.cs @@ -17,7 +17,7 @@ using Microsoft.Toolkit.Diagnostics; using Error = FluentResults.Error; using Path = System.IO.Path; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public class StorageService : IStorageService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IAssemblyManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IAssemblyManagementService.cs similarity index 96% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IAssemblyManagementService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IAssemblyManagementService.cs index d82105455..dc5d8ab19 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IAssemblyManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IAssemblyManagementService.cs @@ -10,7 +10,7 @@ using OneOf; // ReSharper disable InconsistentNaming -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface IAssemblyManagementService : IPluginManagementService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IConfigService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IConfigService.cs similarity index 67% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IConfigService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IConfigService.cs index cddaa17bb..0cf698084 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IConfigService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IConfigService.cs @@ -4,26 +4,17 @@ using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using System.Xml.Linq; -using Barotrauma.LuaCs.Configuration; using Barotrauma.LuaCs.Data; -using Barotrauma.LuaCs.Services; -using Barotrauma.LuaCs.Services.Safe; +using Barotrauma.LuaCs; using Barotrauma.Networking; using FluentResults; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public partial interface IConfigService : IReusableService, ILuaConfigService { - void RegisterSettingTypeInitializer(string typeIdentifier, Func settingFactory) + void RegisterSettingTypeInitializer(string typeIdentifier, Func<(IConfigService ConfigService, IConfigInfo Info), T> settingFactory) where T : class, ISettingBase; - /// - /// - /// - /// - /// - /// - /// Task LoadConfigsAsync(ImmutableArray configResources); Task LoadConfigsProfilesAsync(ImmutableArray configProfileResources); FluentResults.Result DisposePackageData(ContentPackage package); diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IEventService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IEventService.cs similarity index 91% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IEventService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IEventService.cs index a5ef5ce67..eca7648ae 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IEventService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IEventService.cs @@ -1,10 +1,10 @@ using System; using System.Reflection; using Barotrauma.LuaCs.Events; -using Barotrauma.LuaCs.Services.Compatibility; -using Barotrauma.LuaCs.Services.Safe; +using Barotrauma.LuaCs.Compatibility; +using Barotrauma.LuaCs; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface IEventService : IReusableService, ILuaEventService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/IHelperServiceDefinitions.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IHelperServiceDefinitions.cs similarity index 93% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/IHelperServiceDefinitions.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IHelperServiceDefinitions.cs index b9d3146f9..23e623fc2 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Processing/IHelperServiceDefinitions.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IHelperServiceDefinitions.cs @@ -5,7 +5,7 @@ using System.Xml.Linq; using Barotrauma.LuaCs.Data; using FluentResults; -namespace Barotrauma.LuaCs.Services.Processing; +namespace Barotrauma.LuaCs; public interface IParserService : IService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/ILoggerService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILoggerService.cs similarity index 95% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/ILoggerService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILoggerService.cs index e1b0805e5..c4c110379 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/ILoggerService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILoggerService.cs @@ -3,7 +3,7 @@ using Barotrauma.Networking; using FluentResults; using Microsoft.Xna.Framework; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; /// /// Provides console and debug logging services diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaCsInfoProvider.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaCsInfoProvider.cs new file mode 100644 index 000000000..337294941 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaCsInfoProvider.cs @@ -0,0 +1,42 @@ +namespace Barotrauma.LuaCs; + +/// +/// Provides access to data from the current . +/// +public interface ILuaCsInfoProvider : IService +{ + /// + /// Whether C# plugin code is enabled. + /// + public bool IsCsEnabled { get; } + + /// + /// Whether the popup error GUI should be hidden/suppressed. + /// + public bool DisableErrorGUIOverlay { get; } + + /// + /// Whether usernames are anonymized or show in logs. + /// + public bool HideUserNamesInLogs { get; } + + /// + /// The SteamId of the Workshop LuaCs CPackage in use, if available. + /// + public ulong LuaForBarotraumaSteamId { get; } + + /// + /// Restrict the maximum size of messages sent over the network. + /// + public bool RestrictMessageSize { get; } + + /// + /// The local save path for all local data storage for mods. + /// + public string LocalDataSavePath { get; } + + /// + /// The current state of the Execution State Machine. + /// + public RunState CurrentRunState { get; } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/ILuaScriptManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaScriptManagementService.cs similarity index 98% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/ILuaScriptManagementService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaScriptManagementService.cs index d05a8e046..c490a11d1 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/ILuaScriptManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ILuaScriptManagementService.cs @@ -10,7 +10,7 @@ using FluentResults; using MoonSharp.Interpreter; using MoonSharp.Interpreter.Interop; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface ILuaScriptManagementService : IReusableService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IModConfigService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IModConfigService.cs similarity index 90% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IModConfigService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IModConfigService.cs index 78bac94aa..847c61020 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IModConfigService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IModConfigService.cs @@ -4,10 +4,10 @@ using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; using System.Threading.Tasks; using Barotrauma.LuaCs.Data; -using Barotrauma.LuaCs.Services.Processing; +using Barotrauma.LuaCs; using FluentResults; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface IModConfigService : IService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/INetworkingService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/INetworkingService.cs similarity index 88% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/INetworkingService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/INetworkingService.cs index c3676da59..76543ea07 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/INetworkingService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/INetworkingService.cs @@ -1,10 +1,10 @@ using System; using Barotrauma.LuaCs.Data; -using Barotrauma.LuaCs.Services; -using Barotrauma.LuaCs.Services.Compatibility; +using Barotrauma.LuaCs; +using Barotrauma.LuaCs.Compatibility; using Barotrauma.Networking; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; internal delegate void NetMessageReceived(IReadMessage netMessage); diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPackageManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IPackageManagementService.cs similarity index 97% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPackageManagementService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IPackageManagementService.cs index b36bf93a4..c59da4ecf 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPackageManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IPackageManagementService.cs @@ -8,7 +8,7 @@ using Barotrauma.Extensions; using Barotrauma.LuaCs.Data; using FluentResults; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface IPackageManagementService : IReusableService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPluginManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IPluginManagementService.cs similarity index 98% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPluginManagementService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IPluginManagementService.cs index 711e69580..51453255f 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPluginManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IPluginManagementService.cs @@ -5,7 +5,7 @@ using System.Reflection; using Barotrauma.LuaCs.Data; using Microsoft.CodeAnalysis; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface IPluginManagementService : IReusableService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPluginService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IPluginService.cs similarity index 98% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPluginService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IPluginService.cs index cfafe8e56..35cf1dfc4 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IPluginService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IPluginService.cs @@ -4,7 +4,7 @@ using System.Collections.Immutable; using System.Reflection; using Barotrauma.LuaCs.Data; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface IPluginService : IReusableService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ISafeStorageService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ISafeStorageService.cs similarity index 98% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ISafeStorageService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ISafeStorageService.cs index 773bbbc28..e3e4428cc 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ISafeStorageService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/ISafeStorageService.cs @@ -1,6 +1,6 @@ using System.Collections.Immutable; -namespace Barotrauma.LuaCs.Services.Safe; +namespace Barotrauma.LuaCs; public interface ISafeStorageService : IStorageService, ISafeStorageValidation { } diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IService.cs similarity index 96% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IService.cs index a5502fc94..27abce8e2 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IService.cs @@ -1,7 +1,7 @@ using System; using Microsoft.Toolkit.Diagnostics; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; /// /// Defines a service that can be reset to it's post-constructor state and reused without needing to be disposed. diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IServicesProvider.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IServicesProvider.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IServicesProvider.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IServicesProvider.cs index 901f3de4a..847540737 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IServicesProvider.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IServicesProvider.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Collections.Immutable; using LightInject; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; /// /// Provides instancing and management of IServices. diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IStorageService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IStorageService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IStorageService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IStorageService.cs index 19f112840..3a50e3dc2 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/_Interfaces/IStorageService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Interfaces/IStorageService.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using System.Xml.Linq; using FluentResults; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface IStorageService : IService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/DefaultLuaRegistrar.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/DefaultLuaRegistrar.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs index c7bc3c518..357121433 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/DefaultLuaRegistrar.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/DefaultLuaRegistrar.cs @@ -7,7 +7,7 @@ using System.Numerics; using System.Reflection; using System.Runtime.CompilerServices; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface IDefaultLuaRegistrar : IService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaConfigService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaConfigService.cs similarity index 61% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaConfigService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaConfigService.cs index f349e0f6a..ca60c8318 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaConfigService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaConfigService.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; -using Barotrauma.LuaCs.Configuration; +using Barotrauma.LuaCs.Data; using Microsoft.Xna.Framework; -namespace Barotrauma.LuaCs.Services.Safe; +namespace Barotrauma.LuaCs; public interface ILuaConfigService : ILuaService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaDataService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaDataService.cs similarity index 82% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaDataService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaDataService.cs index 050a9329b..4e3b49a83 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaDataService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaDataService.cs @@ -1,6 +1,6 @@ using MoonSharp.Interpreter; -namespace Barotrauma.LuaCs.Services.Safe; +namespace Barotrauma.LuaCs; /// /// Service for providing stateful functions and in-memory storage for lua functions diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaEventService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaEventService.cs similarity index 95% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaEventService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaEventService.cs index 50d470965..f075a5d78 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaEventService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaEventService.cs @@ -1,9 +1,9 @@ using System; using System.Collections.Generic; using Barotrauma.LuaCs.Events; -using Barotrauma.LuaCs.Services.Compatibility; +using Barotrauma.LuaCs.Compatibility; -namespace Barotrauma.LuaCs.Services.Safe; +namespace Barotrauma.LuaCs; public interface ILuaSafeEventService : ILuaService, ILuaCsHook { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaNetworkingService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaNetworkingService.cs similarity index 58% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaNetworkingService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaNetworkingService.cs index 5df591472..0a7447fe1 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaNetworkingService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaNetworkingService.cs @@ -1,4 +1,4 @@ -namespace Barotrauma.LuaCs.Services.Safe; +namespace Barotrauma.LuaCs; public interface ILuaNetworkingService : ILuaService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaPackageManagementService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaPackageManagementService.cs similarity index 60% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaPackageManagementService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaPackageManagementService.cs index 391d680a5..c0b11ad49 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaPackageManagementService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaPackageManagementService.cs @@ -1,4 +1,4 @@ -namespace Barotrauma.LuaCs.Services.Safe; +namespace Barotrauma.LuaCs; public interface ILuaPackageManagementService : ILuaService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaPackageService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaPackageService.cs similarity index 57% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaPackageService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaPackageService.cs index 891224015..f2c1b9162 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaPackageService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaPackageService.cs @@ -1,4 +1,4 @@ -namespace Barotrauma.LuaCs.Services.Safe; +namespace Barotrauma.LuaCs; public interface ILuaPackageService : ILuaService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaPatcher.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaPatcher.cs similarity index 91% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaPatcher.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaPatcher.cs index eba27adba..4de514875 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaPatcher.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaPatcher.cs @@ -1,8 +1,8 @@ using System.Reflection; -using static Barotrauma.LuaCs.Services.Compatibility.ILuaCsHook; +using static Barotrauma.LuaCs.Compatibility.ILuaCsHook; using LuaCsCompatPatchFunc = Barotrauma.LuaCsPatch; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface ILuaPatcher : IReusableService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaScriptLoader.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaScriptLoader.cs similarity index 90% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaScriptLoader.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaScriptLoader.cs index 5dde8dfbf..9cb26c3d6 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/ILuaScriptLoader.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaScriptLoader.cs @@ -4,7 +4,7 @@ using Barotrauma.LuaCs.Data; using FluentResults; using MoonSharp.Interpreter.Loaders; -namespace Barotrauma.LuaCs.Services.Safe; +namespace Barotrauma.LuaCs; public interface ILuaScriptLoader : IService, IScriptLoader, ISafeStorageValidation { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaService.cs new file mode 100644 index 000000000..6db78b287 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/ILuaService.cs @@ -0,0 +1,6 @@ +namespace Barotrauma.LuaCs; + +public interface ILuaService +{ + +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaBarotraumaAdditions.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaBarotraumaAdditions.cs similarity index 100% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaBarotraumaAdditions.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaBarotraumaAdditions.cs diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaConverters.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaConverters.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaConverters.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaConverters.cs index b7d49ace8..a056afd54 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaConverters.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaConverters.cs @@ -5,7 +5,7 @@ using FarseerPhysics.Dynamics; using LuaCsCompatPatchFunc = Barotrauma.LuaCsPatch; using Barotrauma.Networking; using System.Collections.Immutable; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; namespace Barotrauma { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsLogger.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsLogger.cs similarity index 100% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsLogger.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsLogger.cs diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsNetworking.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsNetworking.cs similarity index 100% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsNetworking.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsNetworking.cs diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsPerformanceCounter.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsPerformanceCounter.cs similarity index 98% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsPerformanceCounter.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsPerformanceCounter.cs index 591ed005b..8d900e460 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsPerformanceCounter.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsPerformanceCounter.cs @@ -1,4 +1,4 @@ -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using System; using System.Collections.Generic; using System.Diagnostics; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsSteam.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsSteam.cs similarity index 100% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsSteam.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsSteam.cs diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsTimer.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsTimer.cs similarity index 97% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsTimer.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsTimer.cs index 67e23cb5c..a34986f56 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsTimer.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsTimer.cs @@ -1,6 +1,6 @@ using Barotrauma.LuaCs.Events; -using Barotrauma.LuaCs.Services; -using Barotrauma.LuaCs.Services.Compatibility; +using Barotrauma.LuaCs; +using Barotrauma.LuaCs.Compatibility; using System; using System.Collections.Generic; using System.Diagnostics; diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsUtility.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsUtility.cs similarity index 100% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaCsUtility.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaCsUtility.cs diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaGame.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaGame.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaGame.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaGame.cs index 6557b2fab..7e2a8c631 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaGame.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaGame.cs @@ -3,13 +3,13 @@ using System.Collections.Generic; using System.Linq; using System.Xml.Linq; using Barotrauma.Items.Components; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using Barotrauma.Networking; using FarseerPhysics.Dynamics; using Microsoft.Xna.Framework; using MoonSharp.Interpreter; -namespace Barotrauma.LuaCs.Services +namespace Barotrauma.LuaCs { partial class LuaGame : IReusableService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPlatformAccessor.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaPlatformAccessor.cs similarity index 100% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaPlatformAccessor.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaPlatformAccessor.cs diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaRequire.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaRequire.cs similarity index 100% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaRequire.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaRequire.cs diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaTypes.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaTypes.cs similarity index 100% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaClasses/LuaTypes.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaClasses/LuaTypes.cs diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaPatcherCompat.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaPatcherCompat.cs similarity index 98% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaPatcherCompat.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaPatcherCompat.cs index bb5a79331..4acf68f33 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaPatcherCompat.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaPatcherCompat.cs @@ -1,11 +1,11 @@ -global using LuaCsHook = Barotrauma.LuaCs.Services.Compatibility.ILuaCsHook; +global using LuaCsHook = Barotrauma.LuaCs.Compatibility.ILuaCsHook; using System; using System.Linq; using System.Reflection; using HarmonyLib; using System.Collections.Generic; -using Barotrauma.LuaCs.Services.Compatibility; +using Barotrauma.LuaCs.Compatibility; using MoonSharp.Interpreter; using LuaCsCompatPatchFunc = Barotrauma.LuaCsPatch; @@ -15,7 +15,7 @@ namespace Barotrauma public delegate object LuaCsPatch(object self, Dictionary args); } -namespace Barotrauma.LuaCs.Services +namespace Barotrauma.LuaCs { partial class LuaPatcherService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaPatcherService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaPatcherService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaPatcherService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaPatcherService.cs index 5d51769f7..55743b52d 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaPatcherService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaPatcherService.cs @@ -1,4 +1,4 @@ -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using HarmonyLib; using Microsoft.Xna.Framework; using MoonSharp.Interpreter; @@ -23,7 +23,7 @@ namespace Barotrauma public delegate DynValue LuaCsPatchFunc(object instance, LuaPatcherService.ParameterTable ptable); } -namespace Barotrauma.LuaCs.Services +namespace Barotrauma.LuaCs { public partial class LuaPatcherService : ILuaPatcher { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaScriptLoader.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaScriptLoader.cs similarity index 98% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaScriptLoader.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaScriptLoader.cs index 28376f513..7c5b0445e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaScriptLoader.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaScriptLoader.cs @@ -8,10 +8,10 @@ using MoonSharp.Interpreter.Loaders; using System.Linq; using System.Threading.Tasks; using Barotrauma.LuaCs.Data; -using Barotrauma.LuaCs.Services.Safe; +using Barotrauma.LuaCs; using FluentResults; -namespace Barotrauma.LuaCs.Services.Safe +namespace Barotrauma.LuaCs { public class LuaScriptLoader : ScriptLoaderBase, ILuaScriptLoader { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaUserDataService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaUserDataService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaUserDataService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaUserDataService.cs index 51a20c41d..0584fc056 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/LuaUserDataService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/LuaUserDataService.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface ILuaUserDataService : IReusableService { diff --git a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/SafeLuaUserDataService.cs b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/SafeLuaUserDataService.cs similarity index 99% rename from Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/SafeLuaUserDataService.cs rename to Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/SafeLuaUserDataService.cs index 9f2dc0130..fe23103fe 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/LuaCs/Services/Safe/SafeLuaUserDataService.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/LuaCs/_Services/_Lua/SafeLuaUserDataService.cs @@ -1,12 +1,12 @@ using Barotrauma; -using Barotrauma.LuaCs.Services; +using Barotrauma.LuaCs; using MoonSharp.Interpreter; using MoonSharp.Interpreter.Interop; using System; using System.Collections.Generic; using System.Reflection; -namespace Barotrauma.LuaCs.Services; +namespace Barotrauma.LuaCs; public interface ISafeLuaUserDataService : IService { diff --git a/Barotrauma/BarotraumaTest/LuaCs/HookPatchHelpers.cs b/Barotrauma/BarotraumaTest/LuaCs/HookPatchHelpers.cs index 213744534..854f01140 100644 --- a/Barotrauma/BarotraumaTest/LuaCs/HookPatchHelpers.cs +++ b/Barotrauma/BarotraumaTest/LuaCs/HookPatchHelpers.cs @@ -1,6 +1,6 @@ extern alias Client; extern alias Server; -using Client::Barotrauma.LuaCs.Services; +using Client::Barotrauma.LuaCs; using Client::Barotrauma; using MoonSharp.Interpreter; using System; @@ -8,7 +8,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Text; using System.Threading; -using Server::Barotrauma.LuaCs.Services.Compatibility; +using Server::Barotrauma.LuaCs.Compatibility; using Xunit; namespace TestProject.LuaCs