using PkmnLib.Static.Libraries; namespace PkmnLib.Dynamic.Libraries; /// /// The dynamic library stores a static data library, as well as holding different libraries and /// calculators that might be customized between different generations and implementations. /// public interface IDynamicLibrary { /// /// The static data is the immutable storage data for this library. /// IStaticLibrary StaticLibrary { get; } /// /// The stat calculator deals with the calculation of flat and boosted stats, based on the /// Pokémon's attributes. /// IBattleStatCalculator StatCalculator { get; } /// /// The damage calculator deals with the calculation of things relating to damage. /// IDamageCalculator DamageCalculator { get; } /// /// The Misc Library holds minor functions that do not fall in any of the other libraries and /// calculators. /// IMiscLibrary MiscLibrary { get; } } public class DynamicLibraryImpl : IDynamicLibrary { public DynamicLibraryImpl(IStaticLibrary staticLibrary, IBattleStatCalculator statCalculator, IDamageCalculator damageCalculator, IMiscLibrary miscLibrary) { StaticLibrary = staticLibrary; StatCalculator = statCalculator; DamageCalculator = damageCalculator; MiscLibrary = miscLibrary; } public IStaticLibrary StaticLibrary { get; } /// public IBattleStatCalculator StatCalculator { get; } /// public IDamageCalculator DamageCalculator { get; } /// public IMiscLibrary MiscLibrary { get; } }