}
for (vector<Monster>::size_type i(0), end(monsters.size()); i < end; ++i) {
attackOrder.push_back(Order(i, true));
+ MonsterAt(i).GetAttackChoice() = AttackChoice(this);
}
std::sort(attackOrder.begin(), attackOrder.end(), OrderCompare(this));
-
- monsterAttacks.resize(monsters.size(), AttackChoice(this));
}
void BattleState::NextAttack() {
}
void BattleState::CalculateDamage() {
- AttackChoice &ac(CurrentAttack().isMonster ? monsterAttacks[CurrentAttack().index] : AttackChoiceAt(CurrentAttack().index));
+ AttackChoice &ac(CurrentAttack().isMonster ? MonsterAt(CurrentAttack().index).GetAttackChoice() : HeroAt(CurrentAttack().index).GetAttackChoice());
if (ac.GetType() == AttackChoice::DEFEND) return;
if (CurrentAttack().isMonster) {
void BattleState::ApplyDamage() {
if (attackCursor < 0) return;
- AttackChoice &ac(CurrentAttack().isMonster ? monsterAttacks[CurrentAttack().index] : AttackChoiceAt(CurrentAttack().index));
+ AttackChoice &ac(CurrentAttack().isMonster ? MonsterAt(CurrentAttack().index).GetAttackChoice() : HeroAt(CurrentAttack().index).GetAttackChoice());
TargetSelection &ts(ac.Selection());
if (ts.TargetsEnemies()) {
for (int i(0); i < MaxMonsters(); ++i) {
AttackChoice &BattleState::CurrentAttackAttackChoice() {
if (CurrentAttack().isMonster) {
- return monsterAttacks[CurrentAttack().index];
+ return MonsterAt(CurrentAttack().index).GetAttackChoice();
} else {
- return AttackChoiceAt(CurrentAttack().index);
+ return HeroAt(CurrentAttack().index).GetAttackChoice();
}
}
void BattleState::ClearAllAttacks() {
attackCursor = -1;
activeHero = -1;
- for (int i(0); i < numHeroes; ++i) {
- heroes[i].GetAttackChoice() = AttackChoice(this);
+ for (int i(0); i < NumHeroes(); ++i) {
+ HeroAt(i).GetAttackChoice() = AttackChoice(this);
+ }
+ for (int i(0); i < MaxMonsters(); ++i) {
+ MonsterAt(i).GetAttackChoice() = AttackChoice(this);
}
attackOrder.clear();
- monsterAttacks.clear();
}