using System.Diagnostics.CodeAnalysis; namespace NeonSprawl.Server.Game.Mastery; /// Adapter over (NEO-46). public sealed class MasteryCatalogRegistry(MasteryCatalog catalog) : IMasteryCatalogRegistry { /// public bool TryGetTrack(string? skillId, [NotNullWhen(true)] out MasteryTrackRow? track) { if (string.IsNullOrEmpty(skillId)) { track = null; return false; } return catalog.TracksBySkillId.TryGetValue(skillId, out track); } /// public bool TryGetPerk(string? perkId, [NotNullWhen(true)] out PerkDefRow? perk) { if (string.IsNullOrEmpty(perkId)) { perk = null; return false; } return catalog.PerksById.TryGetValue(perkId, out perk); } public IReadOnlyList GetTracksInSkillIdOrder() => [.. catalog.TracksBySkillId.Values.OrderBy(t => t.SkillId, StringComparer.Ordinal)]; public IReadOnlyList GetPerksInIdOrder() => [.. catalog.PerksById.Values.OrderBy(p => p.Id, StringComparer.Ordinal)]; }