Split off battle creature stats into boosted and non-boosted
This commit is contained in:
		@@ -4,15 +4,27 @@
 | 
			
		||||
using namespace CreatureLib;
 | 
			
		||||
 | 
			
		||||
Core::StatisticSet<uint32_t>
 | 
			
		||||
Battling::BattleStatCalculator::CalculateStats(Battling::BattleCreature *creature) const {
 | 
			
		||||
Battling::BattleStatCalculator::CalculateFlatStats(Battling::BattleCreature *creature) const {
 | 
			
		||||
    return Core::StatisticSet<uint32_t>(
 | 
			
		||||
            CalculateStat(creature, Core::Statistic::Health),
 | 
			
		||||
            CalculateStat(creature, Core::Statistic::PhysicalAttack),
 | 
			
		||||
            CalculateStat(creature, Core::Statistic::PhysicalDefense),
 | 
			
		||||
            CalculateStat(creature, Core::Statistic::MagicalAttack),
 | 
			
		||||
            CalculateStat(creature, Core::Statistic::MagicalDefense),
 | 
			
		||||
            CalculateStat(creature, Core::Statistic::Speed)
 | 
			
		||||
            );
 | 
			
		||||
            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::BattleCreature *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::BattleCreature *creature){
 | 
			
		||||
@@ -32,8 +44,12 @@ uint32_t CalculateOtherStat(Battling::BattleCreature *creature, Core::Statistic
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
uint32_t Battling::BattleStatCalculator::CalculateStat(Battling::BattleCreature *creature, Core::Statistic stat) const{
 | 
			
		||||
uint32_t Battling::BattleStatCalculator::CalculateFlatStat(Battling::BattleCreature *creature, Core::Statistic stat) const{
 | 
			
		||||
    if (stat == Core::Statistic::Health)
 | 
			
		||||
        return CalculateHealthStat(creature);
 | 
			
		||||
    return CalculateOtherStat(creature, stat);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t Battling::BattleStatCalculator::CalculateBoostedStat(Battling::BattleCreature *creature, Core::Statistic stat) const{
 | 
			
		||||
    throw "TODO";
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,8 +9,10 @@ namespace CreatureLib::Battling {
 | 
			
		||||
 | 
			
		||||
    class BattleStatCalculator {
 | 
			
		||||
    public:
 | 
			
		||||
        virtual Core::StatisticSet<uint32_t > CalculateStats(BattleCreature* creature) const;
 | 
			
		||||
        virtual uint32_t CalculateStat(BattleCreature* creature, Core::Statistic stat) const;
 | 
			
		||||
        virtual Core::StatisticSet<uint32_t > CalculateFlatStats(BattleCreature* creature) const;
 | 
			
		||||
        virtual Core::StatisticSet<uint32_t > CalculateBoostedStats(BattleCreature* creature) const;
 | 
			
		||||
        virtual uint32_t CalculateFlatStat(BattleCreature* creature, Core::Statistic stat) const;
 | 
			
		||||
        virtual uint32_t CalculateBoostedStat(BattleCreature* creature, Core::Statistic stat) const;
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -21,17 +21,27 @@ void Battling::BattleCreature::ApplyPostBattleEffects() {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t Battling::BattleCreature::GetStat(Core::Statistic stat) {
 | 
			
		||||
    return _fullStats.GetStat(stat);
 | 
			
		||||
uint32_t Battling::BattleCreature::GetFlatStat(Core::Statistic stat) {
 | 
			
		||||
    return _flatStats.GetStat(stat);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Battling::BattleCreature::RecalculateStats() {
 | 
			
		||||
    this->_fullStats = this->__Battle->GetLibrary()->GetStatCalculator()->CalculateStats(this);
 | 
			
		||||
uint32_t Battling::BattleCreature::GetBoostedStat(Core::Statistic stat) {
 | 
			
		||||
    return _boostedStats.GetStat(stat);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Battling::BattleCreature::RecalculateStat(Core::Statistic stat) {
 | 
			
		||||
    auto s = this->__Battle->GetLibrary()->GetStatCalculator()->CalculateStat(this, stat);
 | 
			
		||||
    this->_fullStats.SetStat(stat, s);
 | 
			
		||||
void Battling::BattleCreature::RecalculateFlatStats() {
 | 
			
		||||
    this->_flatStats = this->__Battle->GetLibrary()->GetStatCalculator()->CalculateFlatStats(this);
 | 
			
		||||
}
 | 
			
		||||
void Battling::BattleCreature::RecalculateBoostedStats() {
 | 
			
		||||
    this->_boostedStats = this->__Battle->GetLibrary()->GetStatCalculator()->CalculateFlatStats(this);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Battling::BattleCreature::RecalculateFlatStat(Core::Statistic stat) {
 | 
			
		||||
    auto s = this->__Battle->GetLibrary()->GetStatCalculator()->CalculateFlatStat(this, stat);
 | 
			
		||||
    this->_flatStats.SetStat(stat, s);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Battling::BattleCreature::RecalculateBoostedStat(Core::Statistic stat) {
 | 
			
		||||
    auto s = this->__Battle->GetLibrary()->GetStatCalculator()->CalculateBoostedStat(this, stat);
 | 
			
		||||
    this->_boostedStats.SetStat(stat, s);
 | 
			
		||||
}
 | 
			
		||||
@@ -15,7 +15,8 @@ namespace CreatureLib::Battling{
 | 
			
		||||
    private:
 | 
			
		||||
        Library::Creature* _creature;
 | 
			
		||||
        Core::StatisticSet<int8_t > _statBoost;
 | 
			
		||||
        Core::StatisticSet<uint32_t > _fullStats;
 | 
			
		||||
        Core::StatisticSet<uint32_t > _flatStats;
 | 
			
		||||
        Core::StatisticSet<uint32_t > _boostedStats;
 | 
			
		||||
 | 
			
		||||
    public:
 | 
			
		||||
        BattleCreature(Battle* battle, Library::Creature* creature);
 | 
			
		||||
@@ -23,10 +24,13 @@ namespace CreatureLib::Battling{
 | 
			
		||||
        const Library::Creature* GetBackingCreature();
 | 
			
		||||
        void ApplyPostBattleEffects();
 | 
			
		||||
 | 
			
		||||
        uint32_t GetStat(Core::Statistic stat);
 | 
			
		||||
        void RecalculateStats();
 | 
			
		||||
        uint32_t GetFlatStat(Core::Statistic stat);
 | 
			
		||||
        uint32_t GetBoostedStat(Core::Statistic stat);
 | 
			
		||||
        void RecalculateFlatStats();
 | 
			
		||||
        void RecalculateBoostedStats();
 | 
			
		||||
 | 
			
		||||
        void RecalculateStat(Core::Statistic);
 | 
			
		||||
        void RecalculateFlatStat(Core::Statistic);
 | 
			
		||||
        void RecalculateBoostedStat(Core::Statistic);
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user