#ifndef PKMNLIB_STATCALCULATOR_HPP #define PKMNLIB_STATCALCULATOR_HPP #include #include "../../Library/Statistic.hpp" namespace PkmnLib::Battling { class Pokemon; class StatCalculator : public CreatureLib::Battling::BattleStatCalculator { protected: virtual uint32_t CalculateHealthStat(const Pokemon* pkmn) const; virtual uint32_t CalculateOtherStat(const Pokemon* pkmn, CreatureLib::Core::Statistic stat) const; virtual float GetStatBoostModifier(const CreatureLib::Battling::Creature* pkmn, CreatureLib::Core::Statistic stat) const; public: ~StatCalculator() override = default; CreatureLib::Core::StatisticSet CalculateFlatStats(CreatureLib::Battling::Creature* creature) const override; CreatureLib::Core::StatisticSet CalculateBoostedStats(CreatureLib::Battling::Creature* creature) const override; uint32_t CalculateFlatStat(CreatureLib::Battling::Creature* creature, CreatureLib::Core::Statistic stat) const override; uint32_t CalculateBoostedStat(CreatureLib::Battling::Creature* creature, CreatureLib::Core::Statistic stat) const override; }; } #endif // PKMNLIB_STATCALCULATOR_HPP