-- Squash:

- In progress implementation of services model.
This commit is contained in:
MapleWheels
2024-09-18 20:54:56 -04:00
committed by Maplewheels
parent 9e957a75b0
commit 01cc1d331b
68 changed files with 3083 additions and 152 deletions
@@ -0,0 +1,77 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
namespace Barotrauma.LuaCs.Data;
public interface IPlatformInfo
{
/// <summary>
/// Platforms that these localization files should be loaded for.
/// </summary>
[Required]
Platform SupportedPlatforms { get; }
/// <summary>
/// Targets that these localization files should be loaded for.
/// </summary>
[Required]
Target SupportedTargets { get; }
}
/// <summary>
/// Which package does the following data belong to?
/// </summary>
public interface IPackageInfo
{
ContentPackage OwnerPackage { get; }
}
/// <summary>
/// ResourceInfos contain metadata about a resource.
/// </summary>
public interface IResourceInfo : IPlatformInfo
{
/// <summary>
/// [Optional]
/// Allows you to specify the loading order for all assets of the same type (ie. styles, assemblies, etc.).
/// </summary>
int LoadPriority { get; }
/// <summary>
/// Resource absolute file paths.
/// </summary>
[Required]
ImmutableArray<string> FilePaths { get; }
/// <summary>
/// Marks this resource as optional (ie. Cross-CP content). Setting this to true will allow the dependency system to
/// try and order the loading but not fail if it runs into circular dependency issues.
/// </summary>
bool Optional { get; }
}
/// <summary>
/// Information about supported cultures. It is intended to be ignored if the array is ImmutableArray.Empty .
/// </summary>
public interface IResourceCultureInfo
{
/// <summary>
/// List of supported cultures by this resource.
/// </summary>
ImmutableArray<CultureInfo> SupportedCultures { get; }
}
public interface ILoadableResourceInfo
{
/// <summary>
/// [UNIQUE] The name that will be used when trying to reference this resource for execution or loading.
/// </summary>
[Required]
public string InternalName { get; }
}