Esempio n. 1
0
    private Unit ChooseTarget(EnemyInstruction instruction)
    {
        Unit[] targetPool;
        switch (instruction.targetPool)
        {
        case TargetPool.Allies:
            targetPool = UnitManager.Instance.allies;
            break;

        case TargetPool.Enemies:
            targetPool = UnitManager.Instance.currentEnemies;
            break;

        default:
            targetPool = UnitManager.Instance.allies.Concat(UnitManager.Instance.currentEnemies).ToArray();
            break;
        }
        targetPool = targetPool.Where(unit => unit.CanBeTargeted).ToArray();
        if (targetPool.Length == 0)
        {
            return(null);
        }
        Unit targetUnit;

        switch (instruction.target)
        {
        case Target.Random:
            targetUnit = targetPool[Random.Range(0, targetPool.Length)];
            break;

        case Target.LowestHealth:
            targetUnit = targetPool.GetLowestHealth();
            break;

        default:
            targetUnit = targetPool.GetHighestHealth();
            break;
        }
        return(targetUnit);
    }
Esempio n. 2
0
 protected void ExecuteEnemyInstruction(EnemyInstruction instruction)
 {
     ExecuteAction(instruction.command, nextTarget);
 }