neon-sprawl/server/NeonSprawl.Server/Game/Skills/ContentPathsOptions.cs

92 lines
4.3 KiB
C#

namespace NeonSprawl.Server.Game.Skills;
/// <summary>Configuration for loading authoring content from disk (NEO-34).</summary>
public sealed class ContentPathsOptions
{
public const string SectionName = "Content";
/// <summary>
/// Optional. Absolute path, or path relative to <see cref="Microsoft.Extensions.Hosting.IHostEnvironment.ContentRootPath"/>.
/// When unset, the host walks ancestors of <see cref="AppContext.BaseDirectory"/> for a <c>content/skills</c> directory.
/// </summary>
public string? SkillsDirectory { get; set; }
/// <summary>
/// Optional override for <c>skill-def.schema.json</c>.
/// When unset, resolved as <c>{parent of skills directory}/schemas/skill-def.schema.json</c> (same layout as the repo).
/// </summary>
public string? SkillDefSchemaPath { get; set; }
/// <summary>
/// Optional. Absolute path, or path relative to <see cref="Microsoft.Extensions.Hosting.IHostEnvironment.ContentRootPath"/>.
/// When unset, the host walks ancestors of <see cref="AppContext.BaseDirectory"/> for a <c>content/mastery</c> directory.
/// </summary>
public string? MasteryDirectory { get; set; }
/// <summary>
/// Optional override for <c>mastery-catalog.schema.json</c>.
/// When unset, resolved as <c>{parent of mastery directory}/schemas/mastery-catalog.schema.json</c>.
/// </summary>
public string? MasteryCatalogSchemaPath { get; set; }
/// <summary>
/// Optional. Absolute path, or path relative to <see cref="Microsoft.Extensions.Hosting.IHostEnvironment.ContentRootPath"/>.
/// When unset, the host walks ancestors of <see cref="AppContext.BaseDirectory"/> for a <c>content/items</c> directory.
/// </summary>
public string? ItemsDirectory { get; set; }
/// <summary>
/// Optional override for <c>item-def.schema.json</c>.
/// When unset, resolved as <c>{parent of items directory}/schemas/item-def.schema.json</c>.
/// </summary>
public string? ItemDefSchemaPath { get; set; }
/// <summary>
/// Optional. Absolute path, or path relative to <see cref="Microsoft.Extensions.Hosting.IHostEnvironment.ContentRootPath"/>.
/// When unset, the host walks ancestors of <see cref="AppContext.BaseDirectory"/> for a <c>content/resource-nodes</c> directory.
/// </summary>
public string? ResourceNodesDirectory { get; set; }
/// <summary>
/// Optional override for <c>resource-node-def.schema.json</c>.
/// When unset, resolved as <c>{parent of resource-nodes directory}/schemas/resource-node-def.schema.json</c>.
/// </summary>
public string? ResourceNodeDefSchemaPath { get; set; }
/// <summary>
/// Optional override for <c>resource-yield-row.schema.json</c>.
/// When unset, resolved as <c>{parent of resource-nodes directory}/schemas/resource-yield-row.schema.json</c>.
/// </summary>
public string? ResourceYieldRowSchemaPath { get; set; }
/// <summary>
/// Optional. Absolute path, or path relative to <see cref="Microsoft.Extensions.Hosting.IHostEnvironment.ContentRootPath"/>.
/// When unset, the host walks ancestors of <see cref="AppContext.BaseDirectory"/> for a <c>content/recipes</c> directory.
/// </summary>
public string? RecipesDirectory { get; set; }
/// <summary>
/// Optional override for <c>recipe-def.schema.json</c>.
/// When unset, resolved as <c>{parent of recipes directory}/schemas/recipe-def.schema.json</c>.
/// </summary>
public string? RecipeDefSchemaPath { get; set; }
/// <summary>
/// Optional override for <c>recipe-io-row.schema.json</c>.
/// When unset, resolved as <c>{parent of recipes directory}/schemas/recipe-io-row.schema.json</c>.
/// </summary>
public string? RecipeIoRowSchemaPath { get; set; }
/// <summary>
/// Optional. Absolute path, or path relative to <see cref="Microsoft.Extensions.Hosting.IHostEnvironment.ContentRootPath"/>.
/// When unset, the host walks ancestors of <see cref="AppContext.BaseDirectory"/> for a <c>content/abilities</c> directory.
/// </summary>
public string? AbilitiesDirectory { get; set; }
/// <summary>
/// Optional override for <c>ability-def.schema.json</c>.
/// When unset, resolved as <c>{parent of abilities directory}/schemas/ability-def.schema.json</c>.
/// </summary>
public string? AbilityDefSchemaPath { get; set; }
}