namespace PkmnLib.Static.Libraries; /// <summary> /// The storage for all different static libraries. /// </summary> public interface IStaticLibrary { /// <summary> /// The miscellaneous settings for the library. /// </summary> LibrarySettings Settings { get; } /// <summary> /// All data for Pokémon species. /// </summary> IReadOnlySpeciesLibrary Species { get; } /// <summary> /// All data for Pokémon moves. /// </summary> IReadOnlyMoveLibrary Moves { get; } /// <summary> /// All data for Pokémon abilities. /// </summary> IReadOnlyAbilityLibrary Abilities { get; } /// <summary> /// All data for Pokémon types and their effectiveness. /// </summary> IReadOnlyTypeLibrary Types { get; } /// <summary> /// All data for Pokémon natures. /// </summary> IReadOnlyNatureLibrary Natures { get; } /// <summary> /// All data for Pokémon growth rates. /// </summary> IReadOnlyGrowthRateLibrary GrowthRates { get; } /// <summary> /// All data for Pokémon items. /// </summary> IReadOnlyItemLibrary Items { get; } } /// <inheritdoc /> public class StaticLibraryImpl : IStaticLibrary { /// <inheritdoc cref="StaticLibraryImpl" /> public StaticLibraryImpl(LibrarySettings settings, IReadOnlySpeciesLibrary species, IReadOnlyMoveLibrary moves, IReadOnlyAbilityLibrary abilities, IReadOnlyTypeLibrary types, IReadOnlyNatureLibrary natures, IReadOnlyGrowthRateLibrary growthRates, IReadOnlyItemLibrary items) { Settings = settings; Species = species; Moves = moves; Abilities = abilities; Types = types; Natures = natures; GrowthRates = growthRates; Items = items; } /// <inheritdoc /> public LibrarySettings Settings { get; } /// <inheritdoc /> public IReadOnlySpeciesLibrary Species { get; } /// <inheritdoc /> public IReadOnlyMoveLibrary Moves { get; } /// <inheritdoc /> public IReadOnlyAbilityLibrary Abilities { get; } /// <inheritdoc /> public IReadOnlyTypeLibrary Types { get; } /// <inheritdoc /> public IReadOnlyNatureLibrary Natures { get; } /// <inheritdoc /> public IReadOnlyGrowthRateLibrary GrowthRates { get; } /// <inheritdoc /> public IReadOnlyItemLibrary Items { get; } }