mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-06 09:09:40 +02:00
refactoring: TDmgRange pair -> DamageRange struct
This commit is contained in:
@@ -13,9 +13,9 @@
|
||||
// Eventually only IBattleInfoCallback and battle::Unit should be used,
|
||||
// CUnitState should be private and CStack should be removed completely
|
||||
|
||||
uint64_t averageDmg(const TDmgRange & range)
|
||||
uint64_t averageDmg(const DamageRange & range)
|
||||
{
|
||||
return (range.first + range.second) / 2;
|
||||
return (range.min + range.max) / 2;
|
||||
}
|
||||
|
||||
AttackPossibility::AttackPossibility(BattleHex from, BattleHex dest, const BattleAttackInfo & attack)
|
||||
@@ -156,14 +156,14 @@ AttackPossibility AttackPossibility::evaluate(const BattleAttackInfo & attackInf
|
||||
{
|
||||
int64_t damageDealt, damageReceived, defenderDamageReduce, attackerDamageReduce;
|
||||
|
||||
TDmgRange retaliation(0, 0);
|
||||
DamageRange retaliation;
|
||||
auto attackDmg = state.battleEstimateDamage(ap.attack, &retaliation);
|
||||
|
||||
vstd::amin(attackDmg.first, defenderState->getAvailableHealth());
|
||||
vstd::amin(attackDmg.second, defenderState->getAvailableHealth());
|
||||
vstd::amin(attackDmg.min, defenderState->getAvailableHealth());
|
||||
vstd::amin(attackDmg.max, defenderState->getAvailableHealth());
|
||||
|
||||
vstd::amin(retaliation.first, ap.attackerState->getAvailableHealth());
|
||||
vstd::amin(retaliation.second, ap.attackerState->getAvailableHealth());
|
||||
vstd::amin(retaliation.min, ap.attackerState->getAvailableHealth());
|
||||
vstd::amin(retaliation.max, ap.attackerState->getAvailableHealth());
|
||||
|
||||
damageDealt = averageDmg(attackDmg);
|
||||
defenderDamageReduce = calculateDamageReduce(attacker, defender, damageDealt, state);
|
||||
|
||||
@@ -68,7 +68,7 @@ int64_t BattleExchangeVariant::trackAttack(
|
||||
static const auto selectorBlocksRetaliation = Selector::type()(Bonus::BLOCKS_RETALIATION);
|
||||
const bool counterAttacksBlocked = attacker->hasBonus(selectorBlocksRetaliation, cachingStringBlocksRetaliation);
|
||||
|
||||
TDmgRange retaliation;
|
||||
DamageRange retaliation;
|
||||
// FIXME: provide distance info for Jousting bonus
|
||||
BattleAttackInfo bai(attacker.get(), defender.get(), 0, shooting);
|
||||
|
||||
@@ -78,7 +78,7 @@ int64_t BattleExchangeVariant::trackAttack(
|
||||
}
|
||||
|
||||
auto attack = cb.battleEstimateDamage(bai, &retaliation);
|
||||
int64_t attackDamage = (attack.first + attack.second) / 2;
|
||||
int64_t attackDamage = (attack.min + attack.max) / 2;
|
||||
int64_t defenderDamageReduce = AttackPossibility::calculateDamageReduce(attacker.get(), defender.get(), attackDamage, cb);
|
||||
int64_t attackerDamageReduce = 0;
|
||||
|
||||
@@ -108,9 +108,9 @@ int64_t BattleExchangeVariant::trackAttack(
|
||||
|
||||
if(defender->alive() && defender->ableToRetaliate() && !counterAttacksBlocked && !shooting)
|
||||
{
|
||||
if(retaliation.second != 0)
|
||||
if(retaliation.max != 0)
|
||||
{
|
||||
auto retaliationDamage = (retaliation.first + retaliation.second) / 2;
|
||||
auto retaliationDamage = (retaliation.min + retaliation.max) / 2;
|
||||
attackerDamageReduce = AttackPossibility::calculateDamageReduce(defender.get(), attacker.get(), retaliationDamage, cb);
|
||||
|
||||
if(!evaluateOnly)
|
||||
|
||||
@@ -428,9 +428,9 @@ uint32_t HypotheticBattle::nextUnitId() const
|
||||
return nextId++;
|
||||
}
|
||||
|
||||
int64_t HypotheticBattle::getActualDamage(const TDmgRange & damage, int32_t attackerCount, vstd::RNG & rng) const
|
||||
int64_t HypotheticBattle::getActualDamage(const DamageRange & damage, int32_t attackerCount, vstd::RNG & rng) const
|
||||
{
|
||||
return (damage.first + damage.second) / 2;
|
||||
return (damage.min + damage.max) / 2;
|
||||
}
|
||||
|
||||
int64_t HypotheticBattle::getTreeVersion() const
|
||||
|
||||
@@ -138,7 +138,7 @@ public:
|
||||
|
||||
uint32_t nextUnitId() const override;
|
||||
|
||||
int64_t getActualDamage(const TDmgRange & damage, int32_t attackerCount, vstd::RNG & rng) const override;
|
||||
int64_t getActualDamage(const DamageRange & damage, int32_t attackerCount, vstd::RNG & rng) const override;
|
||||
|
||||
int64_t getTreeVersion() const;
|
||||
|
||||
|
||||
@@ -56,9 +56,9 @@ public:
|
||||
void calcDmg(const CStack * ourStack)
|
||||
{
|
||||
// FIXME: provide distance info for Jousting bonus
|
||||
TDmgRange retal, dmg = cbc->battleEstimateDamage(ourStack, s, 0, &retal);
|
||||
adi = static_cast<int>((dmg.first + dmg.second) / 2);
|
||||
adr = static_cast<int>((retal.first + retal.second) / 2);
|
||||
DamageRange retal, dmg = cbc->battleEstimateDamage(ourStack, s, 0, &retal);
|
||||
adi = static_cast<int>((dmg.min + dmg.max) / 2);
|
||||
adr = static_cast<int>((retal.min + retal.max) / 2);
|
||||
}
|
||||
|
||||
bool operator==(const EnemyInfo& ei) const
|
||||
|
||||
Reference in New Issue
Block a user