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)];
}