neon-sprawl/server/NeonSprawl.Server/Game/Mastery/IMasteryCatalogRegistry.cs

22 lines
1.0 KiB
C#

using System.Diagnostics.CodeAnalysis;
namespace NeonSprawl.Server.Game.Mastery;
/// <summary>
/// Read-only access to validated mastery tracks and perks loaded at startup (<see cref="MasteryCatalog"/>).
/// </summary>
public interface IMasteryCatalogRegistry
{
/// <summary>Attempts to resolve a track by <c>skillId</c>. Unknown ids and <c>null</c> return <c>false</c> without throwing.</summary>
bool TryGetTrack(string? skillId, [NotNullWhen(true)] out MasteryTrackRow? track);
/// <summary>Attempts to resolve a perk by stable <c>id</c>. Unknown ids and <c>null</c> return <c>false</c> without throwing.</summary>
bool TryGetPerk(string? perkId, [NotNullWhen(true)] out PerkDefRow? perk);
/// <summary>Every loaded track, ordered by <see cref="MasteryTrackRow.SkillId"/> (ordinal).</summary>
IReadOnlyList<MasteryTrackRow> GetTracksInSkillIdOrder();
/// <summary>Every loaded perk, ordered by <see cref="PerkDefRow.Id"/> (ordinal).</summary>
IReadOnlyList<PerkDefRow> GetPerksInIdOrder();
}