public IEnumerator DoFight() { // if (this.fighter.isEnemy()) { // this.getEnemyAction(); // } Messenger.Broadcast <FightResult>(Messages.OnFightStart, new FightResult(this.fighter, queuedAction.GetAction())); QueuedAction attackerAction = queuedAction; string attackerName = this.fighter.Name; if (attackerAction == null) { Debug.LogError("Cannot find queued action: " + attackerName); yield break; } ActionBase action = attackerAction.GetAction(); string attackName = action.name; List <FightingEntity> targets = action.GetTargets(this.fighter, attackerAction.GetTargetIds()); if (targets.Count == 1) { Debug.Log(this.fighter.Name + " Execute Action: " + attackName + targets[0].targetId); } List <FightingEntity> focusedFighters = new List <FightingEntity>(); focusedFighters.Add(fighter); List <FightingEntity> focusedTargets = action.GetFocusedTargets(this.fighter, attackerAction.GetTargetIds()); foreach (FightingEntity target in focusedTargets) { focusedFighters.Add(target); } List <FightingEntity> unfocusedFighters = this._field.GetAllFightingEntities().Filter(fighter => !focusedFighters.Contains(fighter)); foreach (FightingEntity focusedFighter in focusedFighters) { this._ui.focusOverlay.AddToFocusLayer(focusedFighter.gameObject, true); } foreach (FightingEntity unfocusedFighter in unfocusedFighters) { this._ui.focusOverlay.AddToFocusLayer(unfocusedFighter.gameObject, false); } yield return(GameManager.Instance.time.GetController().StartCoroutine(action.ExecuteAction(fighter, targets, this))); }