public IEnumerator AnimateFight(FinalizedFight fight) { var phases = new List <FightPhase> { fight.InitialPhase }; if (fight.FlankerPhase != null) { phases.Add(fight.FlankerPhase); } if (fight.CounterPhase != null) { phases.Add(fight.CounterPhase); } if (fight.DoubleAttackPhase != null) { phases.Add(fight.DoubleAttackPhase); } var participants = new List <CombatantView>(); var primaryAttacker = FindCombatantViewById(fight.InitialPhase.Initiator.Id); var primaryAttackerDirection = MathUtils.DirectionTo(fight.InitialPhase.Initiator.Position, fight.InitialPhase.Receiver.Position); primaryAttacker.PrepareForCombat(primaryAttackerDirection); participants.Add(primaryAttacker); var defender = FindCombatantViewById(fight.InitialPhase.Receiver.Id); var defenderDirection = MathUtils.DirectionTo(fight.InitialPhase.Receiver.Position, fight.InitialPhase.Initiator.Position); defender.PrepareForCombat(defenderDirection); participants.Add(defender); if (fight.FlankerPhase != null) { var flanker = FindCombatantViewById(fight.FlankerPhase.Initiator.Id); var flankerDirection = MathUtils.DirectionTo(fight.FlankerPhase.Initiator.Position, fight.FlankerPhase.Receiver.Position); flanker.PrepareForCombat(flankerDirection); participants.Add(flanker); } yield return(StartCoroutine(AnimateFights(phases))); foreach (var combatantView in participants) { combatantView.ReturnToRest(); } }
public FightAction(ICombatant attacker, ICombatant defender, FinalizedFight fight) { _attacker = attacker; _defender = defender; Fight = fight; }
public FightAction(FinalizedFight fight) { _attacker = fight.InitialPhase.Initiator; _defender = fight.InitialPhase.Receiver; Fight = fight; }