47 lines
2.5 KiB
C++
47 lines
2.5 KiB
C++
#include "BattleStatCalculator.hpp"
|
|
#include "../../Core/Exceptions/NotImplementedException.hpp"
|
|
#include "../Models/Creature.hpp"
|
|
|
|
using namespace CreatureLib;
|
|
|
|
Core::StatisticSet<uint32_t> Battling::BattleStatCalculator::CalculateFlatStats(Battling::Creature* creature) const {
|
|
return Core::StatisticSet<uint32_t>(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<uint32_t> Battling::BattleStatCalculator::CalculateBoostedStats(Battling::Creature* creature) const {
|
|
return Core::StatisticSet<uint32_t>(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();
|
|
}
|