示例#1
0
 private void Setup(DamageData data)
 {
     this.damageData         = data;
     gameObject.name         = "Shooter";
     weapon                  = gameObject.AddComponent <Weapon>();
     transform.localPosition = Vector3.zero;
     enemyDuel               = GetComponentInParent <EnemyDuel>();
 }
示例#2
0
    public bool HasValidTargetOnRange(EnemyDuel targetToCheck = null)
    {
        if (targetToCheck)
        {
            return(listOfTargets.Any(tempTarget => tempTarget == targetToCheck.gameObject));
        }

        if (listOfTargets != null)
        {
            return(listOfTargets.Count > 0);
        }

        return(false);
    }
示例#3
0
    public void Update()
    {
        if (towerTransform)
        {
            enemyOnRange.transform.position = towerTransform.position;
        }

        if (healthData.isDead)
        {
            CancelDuel();
            return;
        }

        if (enemyDuel)
        {
            if (enemyDuel.GetComponent <Health>().isDead)
            {
                CancelDuel();
                return;
            }
        }

        if (moverData.isMoving && (duelData.isMovingToDuel == false))
        {
            CancelDuel();
            return;
        }

        if (moverData.isMoving)
        {
            duelData.canAttack = false;
        }

        if (!enemyOnRange.HasValidTargetOnRange(enemyDuel))
        {
            CancelDuel();
            return;
        }

        if (enemyDuel == null)
        {
            enemyDuel = GetNonDuelingTarget();
        }

        PrepareToDuel();
    }
示例#4
0
    void CheckIfThereIsOtherNonDuelingTarget()
    {
        if (enemyDuel)
        {
            if (enemyDuel.IsDuelingWithMoreThanMe() == false)
            {
                return;
            }
        }
        var target = GetNonDuelingTarget();

        if (target != enemyDuel)
        {
            CancelDuel();
            enemyDuel = target;
            PrepareToDuel();
        }
    }
示例#5
0
    public void CancelDuel()
    {
        if (enemyDuel)
        {
            enemyDuel.DisengageDuel(this);
            enemyDuel = null;
        }

        duelData.canAttack = false;

        if (healthData.isDead)
        {
            return;
        }

        if (towerTransform)
        {
            GetComponent <MoveToPoint>().SetTarget(this.anchorPoint);
        }
    }