50 lines
2.7 KiB
C++
50 lines
2.7 KiB
C++
#include "BattleStatCalculator.hpp"
|
|
#include "../Models/Creature.hpp"
|
|
|
|
using namespace CreatureLib;
|
|
|
|
Library::StatisticSet<uint32_t> Battling::BattleStatCalculator::CalculateFlatStats(Battling::Creature* creature) const {
|
|
return Library::StatisticSet<uint32_t>(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<uint32_t>
|
|
Battling::BattleStatCalculator::CalculateBoostedStats(Battling::Creature* creature) const {
|
|
return Library::StatisticSet<uint32_t>(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) {
|
|
EnsureNotNull(creature)
|
|
auto level = creature->GetLevel();
|
|
float a = (creature->GetBaseStat(Library::Statistic::Health)) * 2.0 * level;
|
|
return static_cast<uint32_t>(floor(a / 100.0) + level + 10);
|
|
}
|
|
|
|
uint32_t CalculateOtherStat(Battling::Creature* creature, Library::Statistic stat) {
|
|
EnsureNotNull(creature)
|
|
auto level = creature->GetLevel();
|
|
float a = (creature->GetBaseStat(stat)) * 2.0 * level;
|
|
return static_cast<uint32_t>(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));
|
|
}
|