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