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

170 lines
8.1 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; }
/// <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/npc-behaviors</c> directory.
/// </summary>
public string? NpcBehaviorsDirectory { get; set; }
/// <summary>
/// Optional override for <c>npc-behavior-def.schema.json</c>.
/// When unset, resolved as <c>{parent of npc-behaviors directory}/schemas/npc-behavior-def.schema.json</c>.
/// </summary>
public string? NpcBehaviorDefSchemaPath { 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/reward-tables</c> directory.
/// </summary>
public string? RewardTablesDirectory { get; set; }
/// <summary>
/// Optional override for <c>reward-table.schema.json</c>.
/// When unset, resolved as <c>{parent of reward-tables directory}/schemas/reward-table.schema.json</c>.
/// </summary>
public string? RewardTableDefSchemaPath { get; set; }
/// <summary>
/// Optional override for <c>reward-grant-row.schema.json</c>.
/// When unset, resolved as <c>{parent of reward-tables directory}/schemas/reward-grant-row.schema.json</c>.
/// </summary>
public string? RewardGrantRowSchemaPath { 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/encounters</c> directory.
/// </summary>
public string? EncountersDirectory { get; set; }
/// <summary>
/// Optional override for <c>encounter-def.schema.json</c>.
/// When unset, resolved as <c>{parent of encounters directory}/schemas/encounter-def.schema.json</c>.
/// </summary>
public string? EncounterDefSchemaPath { 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/quests</c> directory.
/// </summary>
public string? QuestsDirectory { get; set; }
/// <summary>
/// Optional override for <c>quest-def.schema.json</c>.
/// When unset, resolved as <c>{parent of quests directory}/schemas/quest-def.schema.json</c>.
/// </summary>
public string? QuestDefSchemaPath { get; set; }
/// <summary>
/// Optional override for <c>quest-step-def.schema.json</c>.
/// When unset, resolved as <c>{parent of quests directory}/schemas/quest-step-def.schema.json</c>.
/// </summary>
public string? QuestStepDefSchemaPath { get; set; }
/// <summary>
/// Optional override for <c>quest-objective-def.schema.json</c>.
/// When unset, resolved as <c>{parent of quests directory}/schemas/quest-objective-def.schema.json</c>.
/// </summary>
public string? QuestObjectiveDefSchemaPath { 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/factions</c> directory.
/// </summary>
public string? FactionsDirectory { get; set; }
/// <summary>
/// Optional override for <c>faction-def.schema.json</c>.
/// When unset, resolved as <c>{parent of factions directory}/schemas/faction-def.schema.json</c>.
/// </summary>
public string? FactionDefSchemaPath { get; set; }
}