Пример #1
0
    private void StartParticles(TowerInstance t)
    {
        GameObject obj = t.GetGameObject();

        if (obj != null)
        {
            ParticleSystem[] psArray = obj.GetComponentsInChildren <ParticleSystem>();
            if (psArray.Length > 0 && psArray[0].isStopped)
            {
                psArray[0].Play();
            }
        }
    }
Пример #2
0
    public void Act(TowerInstance t)
    {
        GameObject obj = t.GetGameObject();

        if (obj != null)
        {
            ParticleSystem[] psArray = obj.GetComponentsInChildren <ParticleSystem>();
            if (psArray.Length > 0)
            {
                psArray[0].Emit(15);
            }
        }

        Game.AddLumber(gain);
    }
Пример #3
0
    public void Act(TowerInstance t)
    {
        GameObject obj = t.GetGameObject();

        if (obj != null)
        {
            ParticleSystem[] psArray = obj.GetComponentsInChildren <ParticleSystem>();
            if (psArray.Length > 0)
            {
                psArray[0].Emit(15);
            }
        }

        int gainWithUpgrades = (int)Math.Round(gain * t.GetTotalUpgrades(Upgrade.UpgradeType.Gain));

        Game.AddLumber(gainWithUpgrades);
    }
Пример #4
0
    public void Clicked()
    {
        TowerInstance ti = Game.GetSelectedTower();

        if (ti != null)
        {
            Tile tile = ti.GetTile();
            if (tile.GetHeld() != null)
            {
                tile.SetUsed(false);
                Destroy(ti.GetGameObject());
                tile.Hold(null);
                Game.SelectTower(null);

                Game.AddLumber((int)Math.Round(ti.GetCost() / 3.0));
            }
        }
    }
Пример #5
0
    // Update is called once per frame
    void Update()
    {
        if (tower.GetData() != null)
        {
            transform.localPosition = Camera.main.WorldToScreenPoint(tower.GetGameObject().transform.position + new Vector3(0, 12f, 0)) - new Vector3(Screen.width / 2, Screen.height / 2, 0);

            if (tower.GetData() is Tower)
            {
                progressBar.transform.localScale = new Vector3((float)TechTree.GetProgress(tower.GetData() as Tower) /
                                                               ((tower.GetData() as Tower).GetCost()), 1f, 1f);
            }
            else
            {
                progressBar.transform.localScale = new Vector3((float)TechTree.GetProgress(tower.GetData() as Upgrade) /
                                                               ((tower.GetData() as Upgrade).GetCost()), 1f, 1f);
            }
        }
        else
        {
            transform.position = new Vector3(-1000f, -1000f, 0f);
        }
    }
Пример #6
0
    public void Act(TowerInstance t)
    {
        GetCollider(t);

        if (attackCollider != null)
        {
            int damageWithBonus = (int)Math.Round(damage * t.GetTotalUpgrades(Upgrade.UpgradeType.Damage));

            GameObject proj = UnityEngine.Object.Instantiate(projectilePrefab, t.GetGameObject().transform);
            proj.transform.position += new Vector3(0, 8f, 0);
            GameObject bullet;
            if (projectile != null)
            {
                bullet = UnityEngine.Object.Instantiate(projectile, proj.transform);
                proj.GetComponent <ProjectileScript>().bullet = bullet.transform;
            }
            proj.GetComponent <ProjectileScript>().target = attackCollider.transform;
            proj.GetComponent <ProjectileScript>().damage = damageWithBonus;
        }
        else
        {
            t.SetCooldown(0);
        }
    }
Пример #7
0
    void FixedUpdate()
    {
        if (enemy.IsDead())
        {
            System.Random r = new System.Random();
            if (r.NextDouble() < chance)
            {
                Game.AddMP((int)Math.Round(enemy.GetMaxHealth() * .20));
            }

            Enemies.KillEnemy(enemy);

            Destroy(healthBar);

            GameObject.Destroy(gameObject);

            // Make this dependent on enemy type
            Game.IncreaseScore(1);
        }

        enemy.Update();

        if (enemy.GetAttackState())
        {
            if (hitTower == null)
            {
                enemy.SetAttackState(false);
            }
            else if (enemy.GetCooldown() <= 0)
            {
                if (enemy.GetTypeName() == Enemy.EnemyType.Boomer)
                {
                    hitTower.SendMessageUpwards("DestroyAll");
                }
                else
                {
                    enemy.SetCooldown((int)Math.Round(120 / ((30 + enemy.GetAttackSpeed() / 3) * 0.01)));
                    hitTower.SendMessageUpwards("AddHealth", -enemy.GetDamage());
                }
            }
        }
        else
        {
            float step = enemy.GetSpeed() * Time.deltaTime; // calculate distance to move
            if (towerTarget != null)
            {
                float distance = Vector3.Distance(transform.position, towerTarget.position + new Vector3(0, 8f, 0));
                if (distance < enemy.GetAttackRange())
                {
                    enemy.SetAttackState(true);
                }
                transform.position = Vector3.MoveTowards(transform.position, towerTarget.position + new Vector3(0, 8f, 0), step);
            }
            else
            {
                transform.position = Vector3.MoveTowards(transform.position, Game.baseTower.GetPosition() + new Vector3(0, 8f, 0), step);
            }

            Collider[] hitColliders = Physics.OverlapSphere(transform.position, enemy.GetDetectionRange());

            double highest = -9999;
            for (int i = 0; i < hitColliders.Length; i++)
            {
                if (hitColliders[i].tag == "tower" || hitColliders[i].tag == "base")
                {
                    TowerInstance ti = hitColliders[i].GetComponentInParent <TowerScript>().tower;
                    if (ti != null)
                    {
                        double thisValue = enemy.GetPriority(ti, enemy.GetPosition());
                        if (thisValue > highest)
                        {
                            towerTarget = ti.GetGameObject().transform;
                            highest     = thisValue;
                            hitTower    = hitColliders[i];
                        }
                    }
                }
            }
        }
    }