/// <summary>
        /// Creates a new instance of the configuration loader.
        /// </summary>
        public TurretConfigLoader()
        {
            // extract the bot version from bot's assembly
            this.BotVersion = TurretUtilities.GetBotVersion();

            // set the expected config version
            this.ConfigVersion = 2;
        }
예제 #2
0
    private void detectEnemies()
    {
        float            range   = turretStats.GetStatValue(StatType.ATTACKRANGE);
        List <Transform> targets = targetsDetector.GetTargets(range, enemyLayer);

        targets.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy));
        if (targets.Count > 0)
        {
            Transform nearestTarget = getNearestTarget(targets);
            target    = nearestTarget;
            enemyCol  = target.GetComponent <Collider>();
            hasTarget = true;
        }
    }
예제 #3
0
    void detectEnemiesOnRangeAndSelectTheNearest()
    {
        float            range          = turretStats.GetStatValue(StatType.ATTACKRANGE);
        List <Transform> targetsOnRange = detectTargets(range);

        targetsOnRange.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy));
        if (targetsOnRange.Count > 0)
        {
            areTargetsInRange = true;
            selectTheNearestEnemy(targetsOnRange);
        }
        else
        {
            areTargetsInRange = false;
        }
    }
    void randomizeTargets()
    {
        clearTargets();
        float range      = turretStats.GetStatValue(StatType.ATTACKRANGE);
        int   objectives = (int)turretStats.GetStatValue(StatType.OBJECTIVESTOHIT);

        List <Transform> targets = targetsDetector.GetTargets(range, targetLayer);

        areTargetsInRange = targets.Count > 0;
        targets.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy));
        for (int i = 0; i < objectives; i++)
        {
            if (targets.Count <= 0)
            {
                return;
            }
            selectRandomTarget(targets);
        }
    }
예제 #5
0
    private void searchAnotherTarget()
    {
        transform.position = lastEnemyPos;
        float            range   = turretStats.GetStatValue(StatType.PROJECTILERANGE);
        List <Transform> targets = targetsDetector.GetTargets(range, enemyLayer);

        targets.RemoveAll((Transform enemy) => TurretUtilities.IsEnemyDying(enemy));
        Transform target = getNearestTarget(targets);

        if (target != null)
        {
            this.target   = target;
            enemyCol      = target.GetComponent <Collider>();
            lastEnemyPos  = enemyCol.bounds.center;
            isTargetAlive = true;
        }
        else
        {
            disable();
        }
    }
예제 #6
0
    // Update is called once per frame
    void Update()
    {
        // aiming
        GameObject enemy = TurretUtilities.GetTargetedEnemy(gameObject, range);

        if (enemy != null)
        {
            Utilities.LookAt2D(gameObject.transform, enemy.transform);

            // shooting
            if (Time.time - timeOfLastShot > shotInterval)
            {
                timeOfLastShot = Time.time;
                GameObject bullet = Instantiate(Bullet, transform.position, transform.rotation) as GameObject;

                BulletControl bulletControl = bullet.GetComponent("BulletControl") as BulletControl;
                bulletControl.Range  = range;
                bulletControl.Speed  = bulletSpeed;
                bulletControl.Damage = bulletDamage;
            }
        }
    }