Details: - Assembly Mgmt Service for loading now a separate interface, not intended for normal use. - Assembly Loader work; implemented custom dictionary key and table. - Assembly loading work. - EventService completed. - Moved assembly extensions to ModUtils.cs - Work to event service. NetworkService work - Added ImpromptuInterfaces package. - Networking Service work to support NetVars - Event Service - Added assemblies references package for script compilation. Updated Roslyn version for compatibility. - Package Loading work. Swap Harmony to HarmonyX - More refactor conversion to FluentResults. - Updated StylesService to return Results. - Refactor of PackageService partially complete. - Made IService.Reset() required to return a Result. - Moved plugin/assembly related code to their own folder (same namespace). - Updated interfaces to reflect the use of Result<T>. - Partial refactor, incomplete. - Added 'FluentResults' so we can stop using cursed Exception-based flow control in loading code. - Added 'OneOf' nuget package: https://github.com/mcintyre321/OneOf for the implementation of the Optional<T> pattern and complex discrete return types instead of cursed enums (see current AssemblyManager.cs). - Reapplied old branch changes.
53 lines
2.0 KiB
C#
53 lines
2.0 KiB
C#
using System.Collections.Generic;
|
|
using System.Xml.Linq;
|
|
using Barotrauma.LuaCs.Data;
|
|
using FluentResults;
|
|
|
|
namespace Barotrauma.LuaCs.Services.Processing;
|
|
|
|
#region TypeDef
|
|
|
|
// ReSharper disable once TypeParameterCanBeVariant
|
|
public interface IConverterService<TSrc, TOut> : IReusableService
|
|
{
|
|
Result<TOut> TryParseResource(TSrc src);
|
|
Result<TOut> TryParseResources(IEnumerable<TSrc> sources);
|
|
}
|
|
|
|
public interface IXmlResourceConverterService<TOut> : IConverterService<XElement, TOut> { }
|
|
public interface IResourceToXmlConverterService<TSrc> : IConverterService<TSrc, XElement> { }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Parses Xml to produce loading metadata info for linked loadable files.
|
|
/// </summary>
|
|
#region XmlToResourceInfoParsers
|
|
|
|
public interface IXmlAssemblyResConverter : IXmlResourceConverterService<IAssemblyResourceInfo> { }
|
|
public interface IXmlConfigResConverterService : IXmlResourceConverterService<IConfigResourceInfo> { }
|
|
public interface IXmlLocalizationResConverterService : IXmlResourceConverterService<ILocalizationResourceInfo> { }
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Parses Xml to produce ready-to-use info/data without any additional file/data loading.
|
|
/// </summary>
|
|
#region XmlToInfoParsers
|
|
public interface IXmlDependencyConverterService : IXmlResourceConverterService<IPackageDependencyInfo> { }
|
|
public interface IXmlModConfigConverterService : IXmlResourceConverterService<IModConfigInfo> { }
|
|
/// <summary>
|
|
/// Parses legacy packages that make use of the RunConfig.xml structure to produce a ModConfig.
|
|
/// </summary>
|
|
public interface IXmlLegacyModConfigConverterService : IXmlResourceConverterService<IModConfigInfo> { }
|
|
|
|
#endregion
|
|
|
|
|
|
#region ResToInfoParsers
|
|
public interface ILocalizationResToInfoParser : IConverterService<ILocalizationResourceInfo, ILocalizationInfo> { }
|
|
public interface IConfigResConverterService : IConverterService<IConfigResourceInfo, IConfigInfo> { }
|
|
public interface IConfigProfileResConverterService : IConverterService<IConfigProfileResourceInfo, IConfigProfileInfo> { }
|
|
|
|
#endregion
|