using System.Diagnostics.CodeAnalysis; namespace NeonSprawl.Server.Game.Gathering; /// Adapter over (NEO-59). public sealed class ResourceNodeDefinitionRegistry(ResourceNodeCatalog catalog) : IResourceNodeDefinitionRegistry { /// public bool TryGetDefinition(string? nodeDefId, [NotNullWhen(true)] out ResourceNodeDefRow? definition) { if (nodeDefId is null) { definition = null; return false; } if (catalog.NodesById.TryGetValue(nodeDefId, out var row)) { definition = row; return true; } definition = null; return false; } /// public bool TryGetYield(string? nodeDefId, [NotNullWhen(true)] out ResourceYieldRow? yield) { if (nodeDefId is null) { yield = null; return false; } if (catalog.YieldsByNodeDefId.TryGetValue(nodeDefId, out var row)) { yield = row; return true; } yield = null; return false; } /// public IReadOnlyList GetDefinitionsInIdOrder() => [.. catalog.NodesById .OrderBy(kv => kv.Key, StringComparer.Ordinal) .Select(kv => kv.Value)]; }