using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Globalization; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Xml.Linq; using Barotrauma.LuaCs.Services; using Barotrauma.Steam; using OneOf; namespace Barotrauma.LuaCs.Data; #region ModConfigurationInfo public record ModConfigInfo : IModConfigInfo { public ContentPackage Package { get; init; } public ImmutableArray Assemblies { get; init; } public ImmutableArray LuaScripts { get; init; } public ImmutableArray Configs { get; init; } public ImmutableArray ConfigProfiles { get; init; } } #endregion #region DataContracts_Resources public record AssemblyResourcesInfo(ImmutableArray Assemblies) : IAssembliesResourcesInfo; public record LuaScriptsResourcesInfo(ImmutableArray LuaScripts) : ILuaScriptsResourcesInfo; public record ConfigResourcesInfo(ImmutableArray Configs) : IConfigsResourcesInfo; public record ConfigProfilesResourcesInfo(ImmutableArray ConfigProfiles) : IConfigProfilesResourcesInfo; public record BaseResourceInfo : IBaseResourceInfo { public Platform SupportedPlatforms { get; init; } public Target SupportedTargets { get; init; } public int LoadPriority { get; init; } public ImmutableArray FilePaths { get; init; } public bool Optional { get; init; } public string InternalName { get; init; } public ContentPackage OwnerPackage { get; init; } public ImmutableArray RequiredPackages { get; init; } public ImmutableArray IncompatiblePackages { get; init; } } public record AssemblyResourceInfo : BaseResourceInfo, IAssemblyResourceInfo { public string FriendlyName { get; init; } public bool IsScript { get; init; } } public record ConfigResourceInfo : BaseResourceInfo, IConfigResourceInfo {} public record ConfigProfileResourceInfo : BaseResourceInfo, IConfigProfileResourceInfo {} public record LuaScriptsResourceInfo : BaseResourceInfo, ILuaScriptResourceInfo { public bool IsAutorun { get; init; } } #endregion #region DataContracts_ParsedInfo public record ConfigInfo : IConfigInfo { public string InternalName { get; init; } public ContentPackage OwnerPackage { get; init; } public Type DataType { get; init; } public OneOf DefaultValue { get; init; } public OneOf Value { get; init; } public RunState EditableStates { get; init; } public NetSync NetSync { get; init; } #if CLIENT // IConfigDisplayInfo public string DisplayName { get; init; } public string Description { get; init; } public string DisplayCategory { get; init; } public bool ShowInMenus { get; init; } public string Tooltip { get; init; } public string ImageIconPath { get; init; } #endif } public record ConfigProfileInfo : IConfigProfileInfo { public string InternalName { get; init; } public ContentPackage OwnerPackage { get; init; } public IReadOnlyList<(string ConfigName, OneOf Value)> ProfileValues { get; init; } } #endregion