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