- struct Order {
- enum Performer {
- HERO,
- CAPSULE,
- MONSTER,
- };
- Order(Performer by, int index = 0)
- : index(index), by(by) { }
- AttackChoice &GetAttackChoice(BattleState &) const;
- common::Stats &GetStats(BattleState &) const;
- bool IsHero() const { return by == HERO; }
- bool IsCapsule() const { return by == CAPSULE; }
- bool IsMonster() const { return by == MONSTER; }
- int index;
- Performer by;
- };
-
- void CalculateAttackOrder();
- void NextAttack();
- bool AttacksFinished() const;
- void CalculateDamage();
- void ApplyDamage();
- const Order &CurrentAttack() const { assert(attackCursor >= 0 && attackCursor < int(attackOrder.size())); return attackOrder[attackCursor]; };
- AttackChoice &CurrentAttackAttackChoice();
- void ClearAllAttacks();
-
- bool Victory() const;
- bool Defeat() const;
-