Exemple #1
0
    public override void onTargetReached()
    {
        Vector3 explodePosition = m_target.transform.position;

        if (m_target != null)
        {
            DestroyObject(m_target);
        }
        GameObject [] aAllEnemies = TDWorld.getWorld().getAllEnemiesUnsafe();
        foreach (GameObject thisObject in aAllEnemies)
        {
            if (thisObject == null)
            {
                continue;
            }
            if ((thisObject.transform.position - explodePosition).magnitude > TDWorld.getWorld().m_configuration.towerCanonBallDamageRadius)
            {
                continue;
            }
            TDEnemy enemy = TDWorld.getWorld().getTDEnemy(thisObject);
            if (enemy == null)
            {
                continue;
            }
            if (enemy.canFly())
            {
                continue;
            }
            enemy.receiveDamage(m_damage.clone(enemy), null);
        }
    }
Exemple #2
0
    private void fight()
    {
        TDWorld world   = TDWorld.getWorld();
        TDEnemy tdEnemy = world.getTDEnemy(target());

        if (null == tdEnemy)
        {
            m_state = State.ePatrol;
            return;
        }
        if ((target().transform.position - transform.position).magnitude > world.m_configuration.heroFightRadius)
        {
            if (hasPathTo(target()))
            {
                m_state = State.eWalk;
            }
            else
            {
                m_state = State.ePatrol;
            }
            return;
        }
        TDDamage damage = new TDDamage(TDDamage.Type.ePhysical, world.m_configuration.heroPhysicalDamagePerSec * Time.deltaTime, 0f);

        tdEnemy.receiveDamage(damage, this);
    }
Exemple #3
0
    protected override void onTargetReached(GameObject obj)
    {
        TDWorld    world  = TDWorld.getWorld();
        GameObject player = world.getPlayer();

        if (obj == player)
        {
            return;
        }

        TDEnemy tdEnemy = world.getTDEnemy(obj);

        if (null != tdEnemy)
        {
            m_state = State.eFight;
            return;
        }

        if (world.isFakeTarget(obj))
        {
            DestroyObject(obj);
        }

        m_state = State.ePatrol;
    }
Exemple #4
0
 void destroyCallback(TDEnemy enemy)
 {
     enemy.OnEventDestroy -= destroyCallback;
     if (m_followedEnemies.ContainsKey(enemy))
     {
         m_followedEnemies.Remove(enemy);
     }
 }
Exemple #5
0
 void destroyCallback(TDEnemy enemy)
 {
     enemy.OnEventDestroy -= destroyCallback;
     if (m_followedEnemies.ContainsKey(enemy))
     {
         m_followedEnemies.Remove(enemy);
     }
 }
    void Start() {
        units = GetComponent<TDEnemy>();
        nextTarget = new Queue<Transform>();
        turretCtrl = GetComponentInChildren<TankTurretControl>();

        GameObject gameManager = GameObject.FindGameObjectWithTag("Game Manager");
        timer = gameManager.GetComponent<Timer>();
        powerUpLocationManager = gameManager.GetComponent<PowerUpLocationManager>();
    }
Exemple #7
0
    // Update is called once per frame
    void Update()
    {
        float currentTime = Time.time;
        float respawn     = getRestoration();

        if (currentTime < (m_restTime + respawn))
        {
            return;
        }
        GameObject [] aAllEnemies = TDWorld.getWorld().getAllEnemiesUnsafe();
        double        recDist     = -1;
        GameObject    recObject   = null;
        TDDamage      damage      = getTowerDamage();

        foreach (GameObject thisObject in aAllEnemies)
        {
            if (thisObject == null)
            {
                continue;
            }
            float dist            = (transform.position - thisObject.transform.position).magnitude;
            float efficientRadius = getEfficientRadius();
            if (dist < efficientRadius)
            {
                TDEnemy enemy = TDWorld.getWorld().getTDEnemy(thisObject);
                if (enemy.canFly())
                {
                    if (!shootsFlying())
                    {
                        continue;
                    }
                }
                if (!TDWorld.getWorld().m_strategy.shouldShootAt(enemy, damage))
                {
                    continue;
                }
                if ((recDist < 0) || (recDist > dist))
                {
                    recDist   = dist;
                    recObject = thisObject;
                }
            }
        }
        if (recObject == null)
        {
            return;
        }
        TDEnemy recEnemy = TDWorld.getWorld().getTDEnemy(recObject);

        TDWorld.getWorld().m_strategy.shootingAt(recEnemy, damage);
        shootTo(recEnemy);
        m_restTime = Time.time;
    }
Exemple #8
0
 public override bool shouldShootAt(TDEnemy enemy, TDDamage potentialDamage)
 {
     if (m_followedEnemies == null)
         m_followedEnemies = new List<TDEnemy>();
     m_counter++;
     if (m_counter > m_counterLimit)
     {
         m_counter = 0;
         m_followedEnemies.Clear();
     }
     if (!m_followedEnemies.Contains(enemy)) // New enemies always have preference
         return true;
     return false;
 }
    void Awake() {
        units = GetComponent<TDEnemy>();
        followers = new List<Transform>();
        tanks = GameObject.FindGameObjectsWithTag("Tank");
        soldiers = GameObject.FindGameObjectsWithTag("Rocket Brigadier");

        foreach(GameObject tank in tanks){ 
            if(tank.name != "CyberTank Leader"){ 
               followers.Add(tank.transform);
               followers.Reverse();
               tankFollower = tank.GetComponent<TankFollower>();
            }
        }
    }
Exemple #10
0
    public GameObject addEnemy(TDEnemy.Type type, Vector3 pos)
    {
        GameObject enemy = null;
        switch (type)
        {
            case TDEnemy.Type.eImp:
                enemy = (GameObject) Instantiate(m_prefabEnemyImp, pos, Quaternion.identity);
                break;
            case TDEnemy.Type.eGargoyle:
                enemy = (GameObject) Instantiate(m_prefabEnemyGargoyle, pos, Quaternion.identity);
                break;

        }
        return enemy;
    }
Exemple #11
0
 public bool shouldShootAt(TDEnemy enemy, TDDamage potentialDamage)
 {
     if (m_followedEnemies == null)
         m_followedEnemies = new Dictionary<TDEnemy, float>();
     if (!m_followedEnemies.ContainsKey(enemy))
     {
         m_followedEnemies[enemy] = 0;
         enemy.OnEventDestroy += destroyCallback;
         return true;
     }
     float followedDamage = m_followedEnemies[enemy];
     if (followedDamage > enemy.getStartHP())
         return false;
     return true;
 }
    void Awake() {
        units = GetComponent<TDEnemy>();
        followers = new List<Transform>();
        tanks = GameObject.FindGameObjectsWithTag("Tank");
        soldiers = GameObject.FindGameObjectsWithTag("Rocket Brigadier");

        foreach(GameObject soldier in soldiers){
             if(!soldier.name.Contains("leader")){ 
                followers.Add(soldier.transform);
            }
        }

        foreach(GameObject tank in tanks){
             if(tank.name.Contains("leader")){ 
                tankLeader = tank.transform;
            }
        }
    }
    void Start() {
        maxRotationSpd = 6f;
        accelerationLookingSpd = 2.5f;
        enemyFirePos = new Vector3();
        units = GetComponent<TDEnemy>();
        animator = GetComponent<Animator>();

        audio = GetComponent<AudioSource>();        
        rigidbody = GetComponent<Rigidbody>();
        timer = GameObject.FindGameObjectWithTag("Game Manager").GetComponent<Timer>();
        powerUpLocationManager = GameObject.FindGameObjectWithTag("Game Manager").GetComponent<PowerUpLocationManager>();
        
        //Destroy Invisible Objects
        Debug.Log("Soldiers: "+soldiers.Length);
        /*for(int i=0; i<soldiers.Length; i++){
             Destroy(soldiers[i]);
        } Debug.Log(soldiers.Length);  */   
    }
Exemple #14
0
    public bool shouldShootAt(TDEnemy enemy, TDDamage potentialDamage)
    {
        if (m_followedEnemies == null)
        {
            m_followedEnemies = new Dictionary <TDEnemy, float>();
        }
        if (!m_followedEnemies.ContainsKey(enemy))
        {
            m_followedEnemies[enemy] = 0;
            enemy.OnEventDestroy    += destroyCallback;
            return(true);
        }
        float followedDamage = m_followedEnemies[enemy];

        if (followedDamage > enemy.getStartHP())
        {
            return(false);
        }
        return(true);
    }
Exemple #15
0
    private void patrol()
    {
        m_path = null;
        TDWorld world = TDWorld.getWorld();

        GameObject [] aEnemies = world.getAllEnemiesUnsafe();
        foreach (GameObject enemy in aEnemies)
        {
            if ((enemy.transform.position - transform.position).magnitude < world.m_configuration.heroPatrolRadius)
            {
                TDEnemy tdEnemy = world.getTDEnemy(enemy);
                if (tdEnemy.canFly())
                {
                    continue;
                }
                if (hasPathTo(enemy))
                {
                    m_state = State.eWalk;
                    break;
                }
            }
        }
    }
Exemple #16
0
 public void shootingAt(TDEnemy enemy, TDDamage potentialDamage)
 {
     m_followedEnemies[enemy] += potentialDamage.estimatedFirstDamage();
 }
 void Start() {
     units = GetComponent<TDEnemy>();
 }
Exemple #18
0
 public abstract void shootingAt(TDEnemy enemy, TDDamage potentialDamage);
Exemple #19
0
 public void shootingAt(TDEnemy enemy, TDDamage potentialDamage)
 {
     m_followedEnemies[enemy] += potentialDamage.estimatedFirstDamage();
 }
Exemple #20
0
 public override bool shouldShootAt(TDEnemy enemy, TDDamage potentialDamage)
 {
     return true;
 }
Exemple #21
0
 public override void shootingAt(TDEnemy enemy, TDDamage potentialDamage)
 {
     if (!m_followedEnemies.Contains(enemy))
         m_followedEnemies.Add(enemy);
 }
Exemple #22
0
 public override void destroyCallback(TDEnemy enemy)
 {
 }
Exemple #23
0
 public abstract bool shouldShootAt(TDEnemy enemy, TDDamage potentialDamage);
Exemple #24
0
 public override void shootingAt(TDEnemy enemy, TDDamage potentialDamage)
 {
 }
Exemple #25
0
 public void destroyCallback(TDEnemy enemy)
 {
     enemy.OnEventDestroy -= destroyCallback;
     m_watchedEnemies--;
 }
Exemple #26
0
 public abstract void destroyCallback(TDEnemy enemy);