コード例 #1
0
ファイル: MapView.cs プロジェクト: w1r2p1/unitrpg
        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();
            }
        }
コード例 #2
0
 public FightAction(ICombatant attacker, ICombatant defender, FinalizedFight fight)
 {
     _attacker = attacker;
     _defender = defender;
     Fight     = fight;
 }
コード例 #3
0
 public FightAction(FinalizedFight fight)
 {
     _attacker = fight.InitialPhase.Initiator;
     _defender = fight.InitialPhase.Receiver;
     Fight     = fight;
 }