+
+ struct Order {
+ Order(int index, bool isMonster)
+ : index(index), isMonster(isMonster) { }
+ int index;
+ bool isMonster;
+ };
+
+ void CalculateAttackOrder();
+ void NextAttack();
+ bool AttacksFinished() const { return attackCursor >= int(attackOrder.size()); }
+ void CalculateDamage();
+ void ApplyDamage();
+ const Order &CurrentAttack() const { return attackOrder[attackCursor]; };