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