private List <Character> SelectFinalTargets(EnemyTargetedAction targetedAction, List <Character> potentialTargets, Character targettingCharacter) { List <Character> finalTargets = new List <Character>(); Character targetPreference; switch (targetedAction.TargetType) { case TargetType.AllEnemiesExclusive: case TargetType.AllEnemiesInclusive: case TargetType.AllPlayersExclusive: case TargetType.AllPlayersInclusive: finalTargets = potentialTargets; break; case TargetType.EnemySingle: targetPreference = potentialTargets.FirstOrDefault(x => x.Name == targetedAction.TargetPreferenceName); if (targetPreference != null) { finalTargets.Add(targetPreference); } else if (targetedAction.TargetLowest) { finalTargets.Add(CharacterManager.Instance.GetWeakestEnemy()); } else { finalTargets.Add(CharacterManager.Instance.GetRandomAliveEnemy()); } break; case TargetType.PlayersSingle: targetPreference = potentialTargets.FirstOrDefault(x => x.Name == targetedAction.TargetPreferenceName); if (targetPreference != null) { finalTargets.Add(targetPreference); } else if (targetedAction.TargetLowest) { finalTargets.Add(CharacterManager.Instance.GetWeakestPlayer()); } else { finalTargets.Add(CharacterManager.Instance.GetRandomAlivePlayer()); } break; case TargetType.Self: potentialTargets.Add(targettingCharacter); break; } return(finalTargets); }
private List <Character> FindPotentialActionTargets(EnemyTargetedAction targetedAction, Character targettingCharacter) { List <Character> potentialTargets = new List <Character>(); switch (targetedAction.TargetType) { case TargetType.AllEnemiesExclusive: potentialTargets = CharacterManager.Instance.GetAliveEnemies(); break; case TargetType.AllEnemiesInclusive: potentialTargets = CharacterManager.Instance.GetAliveEnemies(); break; case TargetType.AllPlayersExclusive: potentialTargets = CharacterManager.Instance.GetAlivePlayers(); break; case TargetType.AllPlayersInclusive: potentialTargets = CharacterManager.Instance.GetAlivePlayers(); break; case TargetType.EnemySingle: potentialTargets = CharacterManager.Instance.GetAliveEnemies(); break; case TargetType.PlayersSingle: potentialTargets = CharacterManager.Instance.GetAlivePlayers(); break; case TargetType.Self: potentialTargets.Add(targettingCharacter); break; } return(potentialTargets); }