using System.Diagnostics.CodeAnalysis; using PkmnLib.Static.Species; using PkmnLib.Static.Utils; namespace PkmnLib.Static.Libraries; /// /// The library for all abilities in the game. /// public interface IReadOnlyAbilityLibrary : IEnumerable { /// /// Tries to get an ability from the library. Returns false if the ability is not found. /// bool TryGet(StringKey key, [MaybeNullWhen(false)] out IAbility value); /// /// Gets a random ability from the library. /// IAbility GetRandom(IRandom random); /// /// The amount of abilities in the library. /// int Count { get; } /// /// Whether the library is empty. /// bool IsEmpty { get; } } /// public class AbilityLibrary : DataLibrary, IReadOnlyAbilityLibrary;