mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-15 01:24:45 +02:00
Use small vector for unit list
This commit is contained in:
@ -92,8 +92,8 @@ void DamageCache::buildDamageCache(std::shared_ptr<HypotheticBattle> hb, BattleS
|
|||||||
return u->isValidTarget();
|
return u->isValidTarget();
|
||||||
});
|
});
|
||||||
|
|
||||||
std::vector<const battle::Unit *> ourUnits;
|
battle::Units ourUnits;
|
||||||
std::vector<const battle::Unit *> enemyUnits;
|
battle::Units enemyUnits;
|
||||||
|
|
||||||
for(auto stack : stacks)
|
for(auto stack : stacks)
|
||||||
{
|
{
|
||||||
@ -346,9 +346,9 @@ AttackPossibility AttackPossibility::evaluate(
|
|||||||
if (!attackInfo.shooting)
|
if (!attackInfo.shooting)
|
||||||
ap.attackerState->setPosition(hex);
|
ap.attackerState->setPosition(hex);
|
||||||
|
|
||||||
std::vector<const battle::Unit *> defenderUnits;
|
battle::Units defenderUnits;
|
||||||
std::vector<const battle::Unit *> retaliatedUnits = {attacker};
|
battle::Units retaliatedUnits = {attacker};
|
||||||
std::vector<const battle::Unit *> affectedUnits;
|
battle::Units affectedUnits;
|
||||||
|
|
||||||
if (attackInfo.shooting)
|
if (attackInfo.shooting)
|
||||||
defenderUnits = state->getAttackedBattleUnits(attacker, defender, defHex, true, hex, defender->getPosition());
|
defenderUnits = state->getAttackedBattleUnits(attacker, defender, defHex, true, hex, defender->getPosition());
|
||||||
|
@ -471,10 +471,10 @@ MoveTarget BattleExchangeEvaluator::findMoveTowardsUnreachable(
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<const battle::Unit *> BattleExchangeEvaluator::getAdjacentUnits(const battle::Unit * blockerUnit) const
|
battle::Units BattleExchangeEvaluator::getAdjacentUnits(const battle::Unit * blockerUnit) const
|
||||||
{
|
{
|
||||||
std::queue<const battle::Unit *> queue;
|
std::queue<const battle::Unit *> queue;
|
||||||
std::vector<const battle::Unit *> checkedStacks;
|
battle::Units checkedStacks;
|
||||||
|
|
||||||
queue.push(blockerUnit);
|
queue.push(blockerUnit);
|
||||||
|
|
||||||
@ -506,7 +506,7 @@ ReachabilityData BattleExchangeEvaluator::getExchangeUnits(
|
|||||||
uint8_t turn,
|
uint8_t turn,
|
||||||
PotentialTargets & targets,
|
PotentialTargets & targets,
|
||||||
std::shared_ptr<HypotheticBattle> hb,
|
std::shared_ptr<HypotheticBattle> hb,
|
||||||
std::vector<const battle::Unit *> additionalUnits) const
|
battle::Units additionalUnits) const
|
||||||
{
|
{
|
||||||
ReachabilityData result;
|
ReachabilityData result;
|
||||||
|
|
||||||
@ -515,7 +515,7 @@ ReachabilityData BattleExchangeEvaluator::getExchangeUnits(
|
|||||||
if(!ap.attack.shooting)
|
if(!ap.attack.shooting)
|
||||||
hexes.insert(ap.from);
|
hexes.insert(ap.from);
|
||||||
|
|
||||||
std::vector<const battle::Unit *> allReachableUnits = additionalUnits;
|
battle::Units allReachableUnits = additionalUnits;
|
||||||
|
|
||||||
for(auto hex : hexes)
|
for(auto hex : hexes)
|
||||||
{
|
{
|
||||||
@ -636,7 +636,7 @@ BattleScore BattleExchangeEvaluator::calculateExchange(
|
|||||||
PotentialTargets & targets,
|
PotentialTargets & targets,
|
||||||
DamageCache & damageCache,
|
DamageCache & damageCache,
|
||||||
std::shared_ptr<HypotheticBattle> hb,
|
std::shared_ptr<HypotheticBattle> hb,
|
||||||
std::vector<const battle::Unit *> additionalUnits) const
|
battle::Units additionalUnits) const
|
||||||
{
|
{
|
||||||
#if BATTLE_TRACE_LEVEL>=1
|
#if BATTLE_TRACE_LEVEL>=1
|
||||||
logAi->trace("Battle exchange at %d", ap.attack.shooting ? ap.dest.hex : ap.from.hex);
|
logAi->trace("Battle exchange at %d", ap.attack.shooting ? ap.dest.hex : ap.from.hex);
|
||||||
@ -649,8 +649,8 @@ BattleScore BattleExchangeEvaluator::calculateExchange(
|
|||||||
return BattleScore(EvaluationResult::INEFFECTIVE_SCORE, 0);
|
return BattleScore(EvaluationResult::INEFFECTIVE_SCORE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<const battle::Unit *> ourStacks;
|
battle::Units ourStacks;
|
||||||
std::vector<const battle::Unit *> enemyStacks;
|
battle::Units enemyStacks;
|
||||||
|
|
||||||
if(hb->battleGetUnitByID(ap.attack.defender->unitId())->alive())
|
if(hb->battleGetUnitByID(ap.attack.defender->unitId())->alive())
|
||||||
enemyStacks.push_back(ap.attack.defender);
|
enemyStacks.push_back(ap.attack.defender);
|
||||||
|
@ -112,13 +112,13 @@ private:
|
|||||||
|
|
||||||
struct ReachabilityData
|
struct ReachabilityData
|
||||||
{
|
{
|
||||||
std::map<int, std::vector<const battle::Unit *>> units;
|
std::map<int, battle::Units> units;
|
||||||
|
|
||||||
// shooters which are within mellee attack and mellee units
|
// shooters which are within mellee attack and mellee units
|
||||||
std::vector<const battle::Unit *> melleeAccessible;
|
battle::Units melleeAccessible;
|
||||||
|
|
||||||
// far shooters
|
// far shooters
|
||||||
std::vector<const battle::Unit *> shooters;
|
battle::Units shooters;
|
||||||
|
|
||||||
std::set<uint32_t> enemyUnitsReachingAttacker;
|
std::set<uint32_t> enemyUnitsReachingAttacker;
|
||||||
};
|
};
|
||||||
@ -158,7 +158,7 @@ private:
|
|||||||
PotentialTargets & targets,
|
PotentialTargets & targets,
|
||||||
DamageCache & damageCache,
|
DamageCache & damageCache,
|
||||||
std::shared_ptr<HypotheticBattle> hb,
|
std::shared_ptr<HypotheticBattle> hb,
|
||||||
std::vector<const battle::Unit *> additionalUnits = {}) const;
|
battle::Units additionalUnits = {}) const;
|
||||||
|
|
||||||
bool canBeHitThisTurn(const AttackPossibility & ap);
|
bool canBeHitThisTurn(const AttackPossibility & ap);
|
||||||
|
|
||||||
@ -193,7 +193,7 @@ public:
|
|||||||
uint8_t turn,
|
uint8_t turn,
|
||||||
PotentialTargets & targets,
|
PotentialTargets & targets,
|
||||||
std::shared_ptr<HypotheticBattle> hb,
|
std::shared_ptr<HypotheticBattle> hb,
|
||||||
std::vector<const battle::Unit *> additionalUnits = {}) const;
|
battle::Units additionalUnits = {}) const;
|
||||||
|
|
||||||
bool checkPositionBlocksOurStacks(HypotheticBattle & hb, const battle::Unit * unit, BattleHex position);
|
bool checkPositionBlocksOurStacks(HypotheticBattle & hb, const battle::Unit * unit, BattleHex position);
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ public:
|
|||||||
DamageCache & damageCache,
|
DamageCache & damageCache,
|
||||||
std::shared_ptr<HypotheticBattle> hb);
|
std::shared_ptr<HypotheticBattle> hb);
|
||||||
|
|
||||||
std::vector<const battle::Unit *> getAdjacentUnits(const battle::Unit * unit) const;
|
battle::Units getAdjacentUnits(const battle::Unit * unit) const;
|
||||||
|
|
||||||
float getPositiveEffectMultiplier() const { return 1; }
|
float getPositiveEffectMultiplier() const { return 1; }
|
||||||
float getNegativeEffectMultiplier() const { return negativeEffectMultiplier; }
|
float getNegativeEffectMultiplier() const { return negativeEffectMultiplier; }
|
||||||
|
@ -14,7 +14,7 @@ class PotentialTargets
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::vector<AttackPossibility> possibleAttacks;
|
std::vector<AttackPossibility> possibleAttacks;
|
||||||
std::vector<const battle::Unit *> unreachableEnemies;
|
battle::Units unreachableEnemies;
|
||||||
|
|
||||||
PotentialTargets(){};
|
PotentialTargets(){};
|
||||||
PotentialTargets(
|
PotentialTargets(
|
||||||
|
8
Global.h
8
Global.h
@ -670,15 +670,15 @@ namespace vstd
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template <typename Container>
|
||||||
void removeDuplicates(std::vector<T> &vec)
|
void removeDuplicates(Container &vec)
|
||||||
{
|
{
|
||||||
std::sort(vec.begin(), vec.end());
|
std::sort(vec.begin(), vec.end());
|
||||||
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
|
vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename Container>
|
||||||
void concatenate(std::vector<T> &dest, const std::vector<T> &src)
|
void concatenate(Container &dest, const Container &src)
|
||||||
{
|
{
|
||||||
dest.reserve(dest.size() + src.size());
|
dest.reserve(dest.size() + src.size());
|
||||||
dest.insert(dest.end(), src.begin(), src.end());
|
dest.insert(dest.end(), src.begin(), src.end());
|
||||||
|
@ -22,6 +22,7 @@ class SpellSchool;
|
|||||||
namespace battle
|
namespace battle
|
||||||
{
|
{
|
||||||
class Unit;
|
class Unit;
|
||||||
|
using Units = boost::container::small_vector<const Unit *, 4>;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace spells
|
namespace spells
|
||||||
@ -65,7 +66,7 @@ public:
|
|||||||
virtual void getCasterName(MetaString & text) const = 0;
|
virtual void getCasterName(MetaString & text) const = 0;
|
||||||
|
|
||||||
///full default text
|
///full default text
|
||||||
virtual void getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const = 0;
|
virtual void getCastDescription(const Spell * spell, const battle::Units & attacked, MetaString & text) const = 0;
|
||||||
|
|
||||||
virtual void spendMana(ServerCallback * server, const int32_t spellCost) const = 0;
|
virtual void spendMana(ServerCallback * server, const int32_t spellCost) const = 0;
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ BattleStateInfoForRetreat::BattleStateInfoForRetreat():
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t getFightingStrength(const std::vector<const battle::Unit *> & stacks, const CGHeroInstance * hero = nullptr)
|
uint64_t getFightingStrength(const battle::Units & stacks, const CGHeroInstance * hero = nullptr)
|
||||||
{
|
{
|
||||||
uint64_t result = 0;
|
uint64_t result = 0;
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ VCMI_LIB_NAMESPACE_BEGIN
|
|||||||
namespace battle
|
namespace battle
|
||||||
{
|
{
|
||||||
class Unit;
|
class Unit;
|
||||||
|
using Units = boost::container::small_vector<const Unit *, 4>;
|
||||||
}
|
}
|
||||||
|
|
||||||
class CGHeroInstance;
|
class CGHeroInstance;
|
||||||
@ -27,8 +28,8 @@ public:
|
|||||||
bool canSurrender;
|
bool canSurrender;
|
||||||
bool isLastTurnBeforeDie;
|
bool isLastTurnBeforeDie;
|
||||||
BattleSide ourSide;
|
BattleSide ourSide;
|
||||||
std::vector<const battle::Unit *> ourStacks;
|
battle::Units ourStacks;
|
||||||
std::vector<const battle::Unit *> enemyStacks;
|
battle::Units enemyStacks;
|
||||||
const CGHeroInstance * ourHero;
|
const CGHeroInstance * ourHero;
|
||||||
const CGHeroInstance * enemyHero;
|
const CGHeroInstance * enemyHero;
|
||||||
int turnsSkippedByDefense;
|
int turnsSkippedByDefense;
|
||||||
|
@ -383,11 +383,9 @@ battle::Units CBattleInfoCallback::battleAliveUnits(BattleSide side) const
|
|||||||
|
|
||||||
using namespace battle;
|
using namespace battle;
|
||||||
|
|
||||||
//T is battle::Unit descendant
|
static const battle::Unit * takeOneUnit(battle::Units & allUnits, const int turn, BattleSide & sideThatLastMoved, int phase)
|
||||||
template <typename T>
|
|
||||||
const T * takeOneUnit(std::vector<const T*> & allUnits, const int turn, BattleSide & sideThatLastMoved, int phase)
|
|
||||||
{
|
{
|
||||||
const T * returnedUnit = nullptr;
|
const battle::Unit * returnedUnit = nullptr;
|
||||||
size_t currentUnitIndex = 0;
|
size_t currentUnitIndex = 0;
|
||||||
|
|
||||||
for(size_t i = 0; i < allUnits.size(); i++)
|
for(size_t i = 0; i < allUnits.size(); i++)
|
||||||
@ -1168,7 +1166,7 @@ std::pair<const battle::Unit *, BattleHex> CBattleInfoCallback::getNearestStack(
|
|||||||
|
|
||||||
std::vector<DistStack> stackPairs;
|
std::vector<DistStack> stackPairs;
|
||||||
|
|
||||||
std::vector<const battle::Unit *> possible = battleGetUnitsIf([=](const battle::Unit * unit)
|
battle::Units possible = battleGetUnitsIf([=](const battle::Unit * unit)
|
||||||
{
|
{
|
||||||
return unit->isValidTarget(false) && unit != closest;
|
return unit->isValidTarget(false) && unit != closest;
|
||||||
});
|
});
|
||||||
@ -1436,7 +1434,7 @@ AttackableTiles CBattleInfoCallback::getPotentiallyShootableHexes(const battle::
|
|||||||
return at;
|
return at;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<const battle::Unit*> CBattleInfoCallback::getAttackedBattleUnits(
|
battle::Units CBattleInfoCallback::getAttackedBattleUnits(
|
||||||
const battle::Unit * attacker,
|
const battle::Unit * attacker,
|
||||||
const battle::Unit * defender,
|
const battle::Unit * defender,
|
||||||
BattleHex destinationTile,
|
BattleHex destinationTile,
|
||||||
@ -1444,7 +1442,7 @@ std::vector<const battle::Unit*> CBattleInfoCallback::getAttackedBattleUnits(
|
|||||||
BattleHex attackerPos,
|
BattleHex attackerPos,
|
||||||
BattleHex defenderPos) const
|
BattleHex defenderPos) const
|
||||||
{
|
{
|
||||||
std::vector<const battle::Unit*> units;
|
battle::Units units;
|
||||||
RETURN_IF_NOT_BATTLE(units);
|
RETURN_IF_NOT_BATTLE(units);
|
||||||
|
|
||||||
if(attackerPos == BattleHex::INVALID)
|
if(attackerPos == BattleHex::INVALID)
|
||||||
|
@ -147,7 +147,7 @@ public:
|
|||||||
|
|
||||||
AttackableTiles getPotentiallyShootableHexes(const battle::Unit* attacker, BattleHex destinationTile, BattleHex attackerPos) const;
|
AttackableTiles getPotentiallyShootableHexes(const battle::Unit* attacker, BattleHex destinationTile, BattleHex attackerPos) const;
|
||||||
|
|
||||||
std::vector<const battle::Unit *> getAttackedBattleUnits(
|
battle::Units getAttackedBattleUnits(
|
||||||
const battle::Unit* attacker,
|
const battle::Unit* attacker,
|
||||||
const battle::Unit * defender,
|
const battle::Unit * defender,
|
||||||
BattleHex destinationTile,
|
BattleHex destinationTile,
|
||||||
|
@ -464,7 +464,7 @@ void CUnitState::getCasterName(MetaString & text) const
|
|||||||
addNameReplacement(text, true);
|
addNameReplacement(text, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CUnitState::getCastDescription(const spells::Spell * spell, const std::vector<const Unit *> & attacked, MetaString & text) const
|
void CUnitState::getCastDescription(const spells::Spell * spell, const battle::Units & attacked, MetaString & text) const
|
||||||
{
|
{
|
||||||
text.appendLocalString(EMetaText::GENERAL_TXT, 565);//The %s casts %s
|
text.appendLocalString(EMetaText::GENERAL_TXT, 565);//The %s casts %s
|
||||||
//todo: use text 566 for single creature
|
//todo: use text 566 for single creature
|
||||||
|
@ -183,7 +183,7 @@ public:
|
|||||||
PlayerColor getCasterOwner() const override;
|
PlayerColor getCasterOwner() const override;
|
||||||
const CGHeroInstance * getHeroCaster() const override;
|
const CGHeroInstance * getHeroCaster() const override;
|
||||||
void getCasterName(MetaString & text) const override;
|
void getCasterName(MetaString & text) const override;
|
||||||
void getCastDescription(const spells::Spell * spell, const std::vector<const Unit *> & attacked, MetaString & text) const override;
|
void getCastDescription(const spells::Spell * spell, const battle::Units & attacked, MetaString & text) const override;
|
||||||
int32_t manaLimit() const override;
|
int32_t manaLimit() const override;
|
||||||
|
|
||||||
bool ableToRetaliate() const override;
|
bool ableToRetaliate() const override;
|
||||||
|
@ -27,7 +27,7 @@ namespace battle
|
|||||||
{
|
{
|
||||||
class IUnitInfo;
|
class IUnitInfo;
|
||||||
class Unit;
|
class Unit;
|
||||||
using Units = std::vector<const Unit *>;
|
using Units = boost::container::small_vector<const Unit *, 4>;
|
||||||
using UnitFilter = std::function<bool(const Unit *)>;
|
using UnitFilter = std::function<bool(const Unit *)>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -856,7 +856,7 @@ void CGHeroInstance::getCasterName(MetaString & text) const
|
|||||||
text.replaceRawString(getNameTranslated());
|
text.replaceRawString(getNameTranslated());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGHeroInstance::getCastDescription(const spells::Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const
|
void CGHeroInstance::getCastDescription(const spells::Spell * spell, const battle::Units & attacked, MetaString & text) const
|
||||||
{
|
{
|
||||||
const bool singleTarget = attacked.size() == 1;
|
const bool singleTarget = attacked.size() == 1;
|
||||||
const int textIndex = singleTarget ? 195 : 196;
|
const int textIndex = singleTarget ? 195 : 196;
|
||||||
|
@ -309,7 +309,7 @@ public:
|
|||||||
const CGHeroInstance * getHeroCaster() const override;
|
const CGHeroInstance * getHeroCaster() const override;
|
||||||
|
|
||||||
void getCasterName(MetaString & text) const override;
|
void getCasterName(MetaString & text) const override;
|
||||||
void getCastDescription(const spells::Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const override;
|
void getCastDescription(const spells::Spell * spell, const battle::Units & attacked, MetaString & text) const override;
|
||||||
void spendMana(ServerCallback * server, const int spellCost) const override;
|
void spendMana(ServerCallback * server, const int spellCost) const override;
|
||||||
|
|
||||||
void attachToBoat(CGBoat* newBoat);
|
void attachToBoat(CGBoat* newBoat);
|
||||||
|
@ -49,7 +49,7 @@ int32_t AbilityCaster::getEffectLevel(const Spell * spell) const
|
|||||||
return getSpellSchoolLevel(spell);
|
return getSpellSchoolLevel(spell);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AbilityCaster::getCastDescription(const Spell * spell, const std::vector<const battle::Unit*> & attacked, MetaString & text) const
|
void AbilityCaster::getCastDescription(const Spell * spell, const battle::Units & attacked, MetaString & text) const
|
||||||
{
|
{
|
||||||
//do nothing
|
//do nothing
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
|
|
||||||
int32_t getSpellSchoolLevel(const Spell * spell, SpellSchool * outSelectedSchool = nullptr) const override;
|
int32_t getSpellSchoolLevel(const Spell * spell, SpellSchool * outSelectedSchool = nullptr) const override;
|
||||||
int32_t getEffectLevel(const Spell * spell) const override;
|
int32_t getEffectLevel(const Spell * spell) const override;
|
||||||
void getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const override;
|
void getCastDescription(const Spell * spell, const battle::Units & attacked, MetaString & text) const override;
|
||||||
void spendMana(ServerCallback * server, const int32_t spellCost) const override;
|
void spendMana(ServerCallback * server, const int32_t spellCost) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -473,7 +473,7 @@ std::set<const battle::Unit *> BattleSpellMechanics::collectTargets() const
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BattleSpellMechanics::doRemoveEffects(ServerCallback * server, const std::vector<const battle::Unit *> & targets, const CSelector & selector)
|
void BattleSpellMechanics::doRemoveEffects(ServerCallback * server, const battle::Units & targets, const CSelector & selector)
|
||||||
{
|
{
|
||||||
SetStackEffect sse;
|
SetStackEffect sse;
|
||||||
sse.battleID = battle()->getBattle()->getBattleID();
|
sse.battleID = battle()->getBattle()->getBattleID();
|
||||||
|
@ -18,6 +18,11 @@ VCMI_LIB_NAMESPACE_BEGIN
|
|||||||
|
|
||||||
struct BattleSpellCast;
|
struct BattleSpellCast;
|
||||||
|
|
||||||
|
namespace battle
|
||||||
|
{
|
||||||
|
using Units = boost::container::small_vector<const Unit *, 4>;
|
||||||
|
}
|
||||||
|
|
||||||
namespace spells
|
namespace spells
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -66,14 +71,14 @@ private:
|
|||||||
std::shared_ptr<effects::Effects> effects;
|
std::shared_ptr<effects::Effects> effects;
|
||||||
std::shared_ptr<IReceptiveCheck> targetCondition;
|
std::shared_ptr<IReceptiveCheck> targetCondition;
|
||||||
|
|
||||||
std::vector<const battle::Unit *> affectedUnits;
|
battle::Units affectedUnits;
|
||||||
effects::Effects::EffectsToApply effectsToApply;
|
effects::Effects::EffectsToApply effectsToApply;
|
||||||
|
|
||||||
void beforeCast(BattleSpellCast & sc, vstd::RNG & rng, const Target & target);
|
void beforeCast(BattleSpellCast & sc, vstd::RNG & rng, const Target & target);
|
||||||
|
|
||||||
std::set<const battle::Unit *> collectTargets() const;
|
std::set<const battle::Unit *> collectTargets() const;
|
||||||
|
|
||||||
void doRemoveEffects(ServerCallback * server, const std::vector<const battle::Unit *> & targets, const CSelector & selector);
|
void doRemoveEffects(ServerCallback * server, const battle::Units & targets, const CSelector & selector);
|
||||||
|
|
||||||
BattleHexArray spellRangeInHexes(BattleHex centralHex) const;
|
BattleHexArray spellRangeInHexes(BattleHex centralHex) const;
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ void BonusCaster::getCasterName(MetaString & text) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BonusCaster::getCastDescription(const Spell * spell, const std::vector<const battle::Unit*> & attacked, MetaString & text) const
|
void BonusCaster::getCastDescription(const Spell * spell, const battle::Units & attacked, MetaString & text) const
|
||||||
{
|
{
|
||||||
const bool singleTarget = attacked.size() == 1;
|
const bool singleTarget = attacked.size() == 1;
|
||||||
const int textIndex = singleTarget ? 195 : 196;
|
const int textIndex = singleTarget ? 195 : 196;
|
||||||
|
@ -26,7 +26,7 @@ public:
|
|||||||
virtual ~BonusCaster();
|
virtual ~BonusCaster();
|
||||||
|
|
||||||
void getCasterName(MetaString & text) const override;
|
void getCasterName(MetaString & text) const override;
|
||||||
void getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const override;
|
void getCastDescription(const Spell * spell, const battle::Units & attacked, MetaString & text) const override;
|
||||||
void spendMana(ServerCallback * server, const int spellCost) const override;
|
void spendMana(ServerCallback * server, const int spellCost) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -75,7 +75,7 @@ void SilentCaster::getCasterName(MetaString & text) const
|
|||||||
logGlobal->debug("Unexpected call to SilentCaster::getCasterName");
|
logGlobal->debug("Unexpected call to SilentCaster::getCasterName");
|
||||||
}
|
}
|
||||||
|
|
||||||
void SilentCaster::getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const
|
void SilentCaster::getCastDescription(const Spell * spell, const battle::Units & attacked, MetaString & text) const
|
||||||
{
|
{
|
||||||
//do nothing
|
//do nothing
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ public:
|
|||||||
SilentCaster(PlayerColor owner_, const Caster * caster);
|
SilentCaster(PlayerColor owner_, const Caster * caster);
|
||||||
|
|
||||||
void getCasterName(MetaString & text) const override;
|
void getCasterName(MetaString & text) const override;
|
||||||
void getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const override;
|
void getCastDescription(const Spell * spell, const battle::Units & attacked, MetaString & text) const override;
|
||||||
void spendMana(ServerCallback * server, const int spellCost) const override;
|
void spendMana(ServerCallback * server, const int spellCost) const override;
|
||||||
PlayerColor getCasterOwner() const override;
|
PlayerColor getCasterOwner() const override;
|
||||||
int32_t manaLimit() const override;
|
int32_t manaLimit() const override;
|
||||||
|
@ -106,7 +106,7 @@ void ProxyCaster::getCasterName(MetaString & text) const
|
|||||||
actualCaster->getCasterName(text);
|
actualCaster->getCasterName(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProxyCaster::getCastDescription(const Spell * spell, const std::vector<const battle::Unit*> & attacked, MetaString & text) const
|
void ProxyCaster::getCastDescription(const Spell * spell, const battle::Units & attacked, MetaString & text) const
|
||||||
{
|
{
|
||||||
if(actualCaster)
|
if(actualCaster)
|
||||||
actualCaster->getCastDescription(spell, attacked, text);
|
actualCaster->getCastDescription(spell, attacked, text);
|
||||||
|
@ -33,7 +33,7 @@ public:
|
|||||||
int64_t getEffectValue(const Spell * spell) const override;
|
int64_t getEffectValue(const Spell * spell) const override;
|
||||||
PlayerColor getCasterOwner() const override;
|
PlayerColor getCasterOwner() const override;
|
||||||
void getCasterName(MetaString & text) const override;
|
void getCasterName(MetaString & text) const override;
|
||||||
void getCastDescription(const Spell * spell, const std::vector<const battle::Unit *> & attacked, MetaString & text) const override;
|
void getCastDescription(const Spell * spell, const battle::Units & attacked, MetaString & text) const override;
|
||||||
void spendMana(ServerCallback * server, const int32_t spellCost) const override;
|
void spendMana(ServerCallback * server, const int32_t spellCost) const override;
|
||||||
const CGHeroInstance * getHeroCaster() const override;
|
const CGHeroInstance * getHeroCaster() const override;
|
||||||
int32_t manaLimit() const override;
|
int32_t manaLimit() const override;
|
||||||
|
@ -28,7 +28,7 @@ public:
|
|||||||
MOCK_CONST_METHOD1(getEffectValue, int64_t(const spells::Spell *));
|
MOCK_CONST_METHOD1(getEffectValue, int64_t(const spells::Spell *));
|
||||||
MOCK_CONST_METHOD0(getCasterOwner, PlayerColor());
|
MOCK_CONST_METHOD0(getCasterOwner, PlayerColor());
|
||||||
MOCK_CONST_METHOD1(getCasterName, void(MetaString &));
|
MOCK_CONST_METHOD1(getCasterName, void(MetaString &));
|
||||||
MOCK_CONST_METHOD3(getCastDescription, void(const spells::Spell *, const std::vector<const battle::Unit *> &, MetaString &));
|
MOCK_CONST_METHOD3(getCastDescription, void(const spells::Spell *, const battle::Units &, MetaString &));
|
||||||
MOCK_CONST_METHOD2(spendMana, void(ServerCallback *, const int32_t));
|
MOCK_CONST_METHOD2(spendMana, void(ServerCallback *, const int32_t));
|
||||||
MOCK_CONST_METHOD0(manaLimit, int32_t());
|
MOCK_CONST_METHOD0(manaLimit, int32_t());
|
||||||
MOCK_CONST_METHOD0(getHeroCaster, CGHeroInstance*());
|
MOCK_CONST_METHOD0(getHeroCaster, CGHeroInstance*());
|
||||||
|
Reference in New Issue
Block a user