#include "BattleStatCalculator.hpp" #include "../../Core/Exceptions/NotImplementedException.hpp" #include "../Models/Creature.hpp" using namespace CreatureLib; Core::StatisticSet Battling::BattleStatCalculator::CalculateFlatStats(Battling::Creature* creature) const { return Core::StatisticSet(CalculateFlatStat(creature, Core::Statistic::Health), CalculateFlatStat(creature, Core::Statistic::PhysicalAttack), CalculateFlatStat(creature, Core::Statistic::PhysicalDefense), CalculateFlatStat(creature, Core::Statistic::MagicalAttack), CalculateFlatStat(creature, Core::Statistic::MagicalDefense), CalculateFlatStat(creature, Core::Statistic::Speed)); } Core::StatisticSet Battling::BattleStatCalculator::CalculateBoostedStats(Battling::Creature* creature) const { return Core::StatisticSet(CalculateBoostedStat(creature, Core::Statistic::Health), CalculateBoostedStat(creature, Core::Statistic::PhysicalAttack), CalculateBoostedStat(creature, Core::Statistic::PhysicalDefense), CalculateBoostedStat(creature, Core::Statistic::MagicalAttack), CalculateBoostedStat(creature, Core::Statistic::MagicalDefense), CalculateBoostedStat(creature, Core::Statistic::Speed)); } uint32_t CalculateHealthStat(Battling::Creature* creature) { auto level = creature->GetLevel(); auto a = (creature->GetBaseStat(Core::Statistic::Health)) * 2 * level; return floor(a / 100) + level + 10; } uint32_t CalculateOtherStat(Battling::Creature* creature, Core::Statistic stat) { auto level = creature->GetLevel(); auto a = (creature->GetBaseStat(stat)) * 2 * level; return floor(a / 100) + 10; } uint32_t Battling::BattleStatCalculator::CalculateFlatStat(Battling::Creature* creature, Core::Statistic stat) const { if (stat == Core::Statistic::Health) return CalculateHealthStat(creature); return CalculateOtherStat(creature, stat); } uint32_t Battling::BattleStatCalculator::CalculateBoostedStat(Battling::Creature* creature, Core::Statistic stat) const { throw NotImplementedException(); }