22 lines
1.0 KiB
C#
22 lines
1.0 KiB
C#
using System.Collections.ObjectModel;
|
|
|
|
namespace NeonSprawl.Server.Game.Contracts;
|
|
|
|
/// <summary>In-memory contract template catalog loaded at startup (NEO-145). Game code should prefer <see cref="IContractTemplateRegistry"/> for lookups.</summary>
|
|
public sealed class ContractTemplateCatalog(
|
|
string contractsDirectory,
|
|
IReadOnlyDictionary<string, ContractTemplateRow> byId,
|
|
int catalogJsonFileCount)
|
|
{
|
|
/// <summary>Absolute path to the directory that was enumerated for <c>*_contract_templates.json</c> catalogs.</summary>
|
|
public string ContractsDirectory { get; } = contractsDirectory;
|
|
|
|
public IReadOnlyDictionary<string, ContractTemplateRow> ById { get; } =
|
|
new ReadOnlyDictionary<string, ContractTemplateRow>(new Dictionary<string, ContractTemplateRow>(byId, StringComparer.Ordinal));
|
|
|
|
public int DistinctTemplateCount => ById.Count;
|
|
|
|
/// <summary>Number of <c>*_contract_templates.json</c> files under <see cref="ContractsDirectory"/>.</summary>
|
|
public int CatalogJsonFileCount { get; } = catalogJsonFileCount;
|
|
}
|