Esempio n. 1
0
 /// <summary>
 /// 销毁
 /// </summary>
 public override void Destroy()
 {
     GameData.m_GameManager.m_GridManager.SetWalkable(this);
     GameData.m_ObjectList.Remove(this);
     if (m_TowerAttack != null)
     {
         m_TowerAttack.Destroy();
     }
     m_IntervalTime = Fix64.Zero;
     m_Pos          = FixVector3.Zero;
     m_TowerAttack  = null;
     m_TargetObject = null;
     #region 显示层
     if (m_Die != null)
     {
         m_Die.SetActive(true);
     }
     if (GameData.m_IsExecuteViewLogic)
     {
         GameObject.Destroy(m_VGo, (float)m_DestoryDelayTime);
     }
     if (m_DestoryMinMapCallback != null)
     {
         m_DestoryMinMapCallback(this);
     }
     #endregion
     m_Die  = null;
     m_Quan = null;
     m_VGo  = null;
 }
    public bool TryPlayCard(Vector2 pos)
    {
        if (CardController.instance.currencyLeft < m_CardData.cost)
        {
            return(false);
        }

        //Only hit tower colliders
        RaycastHit2D hit = Physics2D.Raycast(pos, Vector3.up, 1f, LayerMask.GetMask(new[] { "BuiltTower" }));

        if (!hit.collider)
        {
            return(false);
        }

        TowerAttack tower = hit.collider.gameObject.GetComponent <TowerAttack>();

        if (!tower)
        {
            return(false);
        }

        bool success = tower.TryUpgradeTower(m_CardData.damageMultiplier, m_CardData.speedMultiplier, m_CardData.rangeMultiplier);

        //if(success)
        //    foreach(TowerAttack t in FindObjectsOfType<TowerAttack>())
        //        t.RemoveHighlight();

        return(success);
    }
Esempio n. 3
0
 private void Start()
 {
     StartObject = GameObject.FindWithTag("Start").GetComponent <EnemySummon>();
     MKList      = GameObject.Find("Culling").GetComponent <TowerAttack>();
     Count       = EnemySummon.Instance.iCountingMonster;
     CharacteristicBuffSlow();
 }
Esempio n. 4
0
        public void RpcUpdateTower(string towerName, string zhenying, string bloodTag, bool toShow, int blood)
        {
            var towers = LobbyManager.s_Singleton.towers;

            if (towers.ContainsKey(towerName))
            {
                TowerAttack attack = towers [towerName].GetComponent <TowerAttack> ();
                attack.SyncFromServer(zhenying, bloodTag, toShow, blood);
            }
        }
Esempio n. 5
0
    private void OnTriggerEnter(Collider other)
    {
        TowerAttack bullet = other.GetComponent <TowerAttack>();

        if (bullet != null)
        {
            enemy.PlayOneShot(impactSound);
            Destroy(other.gameObject);
        }
    }
Esempio n. 6
0
 public void CheckTurnOver()
 {
     if (PlayerAttacks.Count >= 3)
     {
         AllMovesChosen = true;
         var Tower = new TowerAttack(PlayerAttacks.Where(a => a is ComboAttack).Select(a => a as ComboAttack).ToArray());
         Debug.Log(Tower);
         PlayerAttacks.Add(Tower);
         Debug.Log(PlayerAttacks.Count);
     }
 }
Esempio n. 7
0
 public static void SetTowerActivity(bool Activity)
 {
     GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
     foreach (GameObject enemy in enemies)
     {
         TowerAttack towerAttack = enemy.GetComponent <TowerAttack>();
         if (towerAttack != null)
         {
             towerAttack.CanAttack = Activity;
         }
     }
 }
Esempio n. 8
0
 public static void MonsterInTowerRange(MonsterAI monster, Tower tower)
 {
     int newID = GameEvents.GetNewID();
     GameObject arrow = GameObject.Instantiate(tower.arrowTemplate) as GameObject;
     arrow.transform.SetParent(tower.gameObject.transform, false);
     mAE.Animate(arrow, tower.gameObject, monster.gameObject, "TowerAttack");
     TowerAttack attack = new TowerAttack();
     attack.arrow = arrow;
     attack.tower = tower;
     attack.monster = monster;
     attack.id = newID;
     mTowerAttacks[newID] = attack;
 }
 void OnMouseEnter()
 {
     if (!place.isOccupied && PlacesForTowerManager.towerToBuy != null)
     {
         TowerAttack tower = Instantiate(PlacesForTowerManager.towerToBuy, transform.position, Quaternion.identity).GetComponentInChildren <TowerAttack>();
         tower.parentObject.transform.SetParent(place.transform);
         tower.ShowAttackRange(true);
         tower.isActive  = false;
         place.thisTower = tower;
         place.ChangeTowerTransparency(false);
         place.isOccupied = true;
         PlacesForTowerManager.currentlyUsedPlace = place;
     }
 }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        TowerAttack tower = (TowerAttack)target;

        if (!Application.isPlaying)
        {
            return;
        }

        if (GUILayout.Button("Upgrade tower"))
        {
            tower.Upgrade();
        }
    }
Esempio n. 11
0
    private void OnTriggerEnter(Collider other)
    {
        TowerAttack bullet = other.GetComponent <TowerAttack>();

        if (bullet != null)
        {
            enemyHealth -= bullet.towerDamage;
            UpdateUI();
            enemy.PlayOneShot(impactSound);
            if (enemyHealth <= 0)
            {
                Destroy(this.gameObject);
                score.AddScore();
            }
            Destroy(other.gameObject);
        }
    }
Esempio n. 12
0
 /// <summary>
 /// 创建对象
 /// </summary>
 /// <param name="charData">对象数据</param>
 public void Create(TowerData towerData)
 {
     m_TowerData   = new TowerData(towerData.m_CampId, towerData.m_Type, towerData.m_HP);
     m_Data        = m_TowerData;
     m_TowerAttack = new TowerAttack();
     if (towerData.m_CampId == CampType.BLUE && towerData.m_Type == ObjectType.ARROW_TOWER)
     {
         m_VGo = GameObject.Find("Tower_Blue");
     }
     if (towerData.m_CampId == CampType.RED && towerData.m_Type == ObjectType.ARROW_TOWER)
     {
         m_VGo = GameObject.Find("Tower_Red");
     }
     if (towerData.m_CampId == CampType.BLUE && towerData.m_Type == ObjectType.CRYSTAL_TOWER)
     {
         m_VGo = GameObject.Find("Camp_Blue");
     }
     if (towerData.m_CampId == CampType.RED && towerData.m_Type == ObjectType.CRYSTAL_TOWER)
     {
         m_VGo = GameObject.Find("Camp_Red");
     }
     #region 显示层
     //是否执行显示层逻辑
     if (GameData.m_IsExecuteViewLogic)
     {
         m_Quan            = m_VGo.transform.Find("quan_hero").gameObject;
         m_Attack          = m_VGo.transform.Find("attack0").gameObject;
         m_Die             = m_VGo.transform.Find("death").gameObject;
         m_SelectedGo      = m_VGo.transform.Find("Effect_targetselected").gameObject;
         m_Health          = m_VGo.GetComponent <PlayerHealth>();
         m_Health.m_Health = towerData.m_HP;
         m_Pos             = new FixVector3((Fix64)m_VGo.transform.position.x, (Fix64)m_VGo.transform.position.y, (Fix64)m_VGo.transform.position.z);
         MobaMiniMap.instance.AddMapIconByType(this);
     }
     #endregion
 }
Esempio n. 13
0
 public int GetTotalAttack(int attack)
 {
     attack += units.Count * 3;
     return(attack);
 }
Esempio n. 14
0
 public abstract void AddEffect(TowerAttack baseAttack);
Esempio n. 15
0
 public override void AddEffect(TowerAttack baseAttack)
 {
     baseAttack.damage += 5;
 }
Esempio n. 16
0
 public void DestoryTowerAttack()
 {
     m_TowerAttack = null;
 }
Esempio n. 17
0
 protected override void Start()
 {
     base.Start();
     attack = GetComponent <TowerAttack>();
 }
Esempio n. 18
0
    void Attack(TowerAttack attack)
    {
        areaHeal.GetComponent<VisibilityManager>().isVisible = false;
        areaRain.GetComponent<VisibilityManager>().isVisible = false;
        areaFire.GetComponent<VisibilityManager>().isVisible = false;
        areaThunder.GetComponent<VisibilityManager>().isVisible = false;

        GameObject tmpAttck = pool.Get(attack.gameObject);
        tmpAttck.transform.position = transform.position;
        tmpAttck.SetActive(true);
        //attack.ShowParticles();
        //AddCircle(attack.GetRange()); //To see attack area

        baseHighlight.GetComponent<VisibilityManager>().isVisible = false;

        attackPerformed = true;
        for (int i = 0; i < EnemyManager.Instance.activeEnemies.Count; ++i)
        {
            EnemyStats enemy = EnemyManager.Instance.activeEnemies[i];
            float distance = Vector3.Distance(transform.position, enemy.transform.position);
            if (distance <= attack.GetRange())
            {
                enemy.OnAttacked(attack.GetDamage());
                enemy.speedMultiplier = attack.GetSpeedMultiplier();
            }
        }
        timeSpellStart = Time.time;
    }
Esempio n. 19
0
    void OnGUI()
    {
        if (over == 1)
        {
            Vector3 TowerPos = Camera.main.WorldToScreenPoint(transform.position);
            if (GUI.Button(new Rect(TowerPos.x - 25, Screen.height - TowerPos.y - 25, 50, 50), option))
            {
                cooldown = Time.time;
                waitTime = 3;
                over     = 2;
            }
        }
        if (over == 2)
        {
            Vector3 TowerPos = Camera.main.WorldToScreenPoint(transform.position);

            if (GUI.Button(new Rect(TowerPos.x - 150, Screen.height - TowerPos.y - 70, 140, 80), "WEATHER STATION\n Coste: " + MagicCost + "\n Daño: Bajo\n Alcance: Alto\n Especial: Ralentiza"))
            {
                if ((score && score.resources >= MagicCost) || (scoreTut && scoreTut.resources >= MagicCost))
                {
                    if (score)
                    {
                        score.resources -= MagicCost;
                    }
                    if (scoreTut)
                    {
                        scoreTut.resources -= MagicCost;
                    }

                    Vector3    pos   = new Vector3(transform.position.x, transform.position.y + 0.1f, transform.position.z);
                    GameObject torre = Instantiate(MagicTower, pos, transform.rotation) as GameObject;
                    tower = torre.GetComponentInChildren <TowerAttack>();
                    Debug.Log("Desplegada FrostTower!");

                    activeRespawn = false;
                    costeMejora   = MagicCost * 2;
                    over          = 0;
                }
            }

            if (GUI.Button(new Rect(TowerPos.x - 50, Screen.height - TowerPos.y + 20, 130, 80), "THUMPER\n Coste: " + AreaCost + "\n Daño: Medio\n Alcance: Alto\n Especial: Area"))
            {
                if ((score && score.resources >= AreaCost) || (scoreTut && scoreTut.resources >= AreaCost))
                {
                    if (score)
                    {
                        score.resources -= AreaCost;
                    }
                    if (scoreTut)
                    {
                        scoreTut.resources -= AreaCost;
                    }

                    Vector3    pos   = new Vector3(transform.position.x, transform.position.y + 0.1f, transform.position.z);
                    GameObject torre = Instantiate(AreaTower, pos, transform.rotation) as GameObject;
                    tower = torre.GetComponentInChildren <TowerAttack>();
                    Debug.Log("Desplegada CannonTower!");

                    activeRespawn = false;
                    costeMejora   = AreaCost * 2;
                    over          = 0;
                }
            }

            if (GUI.Button(new Rect(TowerPos.x + 40, Screen.height - TowerPos.y - 70, 130, 80), "AUTOCANNON\n Coste: " + ArrowCost + "\n Daño: Alto\n Alcance: Medio\n Especial: Criticos"))
            {
                if ((score && score.resources >= ArrowCost) || (scoreTut && scoreTut.resources >= ArrowCost))
                {
                    if (score)
                    {
                        score.resources -= ArrowCost;
                    }
                    if (scoreTut)
                    {
                        scoreTut.resources -= ArrowCost;
                    }

                    Vector3    pos   = new Vector3(transform.position.x, transform.position.y, transform.position.z);
                    GameObject torre = Instantiate(ArrowTower, pos, transform.rotation) as GameObject;
                    tower = torre.GetComponentInChildren <TowerAttack>();
                    Debug.Log("Desplegada ArrowTower!");

                    activeRespawn = false;
                    costeMejora   = ArrowCost * 2;
                    over          = 0;
                }
            }
        }
        if (over == 4)
        {
            Vector3 TowerPos = Camera.main.WorldToScreenPoint(transform.position);
            if (GUI.Button(new Rect(TowerPos.x - 75, Screen.height - TowerPos.y - 25, 150, 50), "Torre Nivel " + tower.level + "\nCoste mejora: " + costeMejora))
            {
                if ((score && score.resources >= costeMejora) || (scoreTut && scoreTut.resources >= costeMejora))
                {
                    if (score)
                    {
                        score.resources -= costeMejora;
                    }
                    if (scoreTut)
                    {
                        scoreTut.resources -= costeMejora;
                    }
                    costeMejora *= 2;

                    tower.level++;

                    cooldown = Time.time;
                    waitTime = 3;
                    over     = 0;
                }
            }
        }
    }
 void Awake()
 {
     towerAttack    = gameObject.GetComponent <TowerAttack>();
     upgradeBonuses = (TowerUpgradeBase)SaveLoad.Load(towerName);
 }