using System.Diagnostics.CodeAnalysis; namespace NeonSprawl.Server.Game.Skills; /// Adapter over (NEO-35). public sealed class SkillDefinitionRegistry(SkillDefinitionCatalog catalog) : ISkillDefinitionRegistry { /// public bool TryGetDefinition(string? skillId, [NotNullWhen(true)] out SkillDefRow? definition) { if (skillId is null) { definition = null; return false; } if (catalog.ById.TryGetValue(skillId, out var row)) { definition = row; return true; } definition = null; return false; } /// public IReadOnlyList GetDefinitionsInIdOrder() { string[] ids = [.. catalog.ById.Keys.OrderBy(k => k, StringComparer.Ordinal)]; var list = new List(ids.Length); foreach (var id in ids) { list.Add(catalog.ById[id]); } return list; } }