chenxin
2020-12-01 944950c86ab3be21c22b7c15039cf2e572efdc90
Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -351,7 +351,7 @@
        {
            foreach (Tower tower in m_listTower)
            {
                tower.bInAttackMode = canAttack;
                tower.CanAttack = canAttack;
            }
        }
@@ -762,13 +762,13 @@
        /// <param name="tower"></param>
        protected void growUpTower(Tower tower)
        {
            Tower newTower = EndlessRandomTower.instance.GetRandomTower(EFeatureTower.NULL, true);
            Tower newTower = EndlessRandomTower.instance.GetRandomTower(EFeatureTower.NULL);
            // 所有的Tower不能升级成为FeatureTower.
            int maxLoop = 20;
            while (newTower.towerFeature != EFeatureTower.NULL)
            {
                newTower = EndlessRandomTower.instance.GetRandomTower(EFeatureTower.NULL, true);
                newTower = EndlessRandomTower.instance.GetRandomTower(EFeatureTower.NULL);
                maxLoop--;
                if (maxLoop <= 0)
                {
@@ -1178,7 +1178,7 @@
            }
            else if (isFreeAttackGrid(pointerInfo) && !bSkill)
            {
                if (!TryPlaceTower(pointerInfo, false, true))
                if (!TryPlaceTower(pointerInfo, false))
                {
                    CancelPlaceTower(pointerInfo);
                    Debug.Log("这里需要返回原位");
@@ -1409,7 +1409,7 @@
        /// Attempt to position a tower at the given location
        /// </summary>
        /// <param name="pointerInfo">The pointer we're using to position the tower</param>
        public bool TryPlaceTower(PointerInfo pointerInfo, bool force = false, bool zeroCost = false)
        public bool TryPlaceTower(PointerInfo pointerInfo, bool force = false)
        {
            UIPointer pointer = WrapPointer(pointerInfo);
@@ -1420,7 +1420,7 @@
                return false;
            }
            return BuyTower(pointer, force, zeroCost);
            return BuyTower(pointer, force);
        }
        /// <summary>
@@ -1524,12 +1524,7 @@
            {
                return;
            }
            int upgradeCost = currentSelectedTower.GetCostForNextLevel();
            bool successfulUpgrade = EndlessLevelManager.instance.Currency.TryPurchase(upgradeCost);
            if (successfulUpgrade)
            {
                currentSelectedTower.UpgradeTower();
            }
            currentSelectedTower.UpgradeTower();
            DeselectTower();
        }
@@ -1552,7 +1547,8 @@
            // 直接随机升级,零成本。
            // 1:记录当前Tower的Level,删除当前的Tower. 2:从TowerLib中随机找一个高一级别的Tower.
            string towerName = currentSelectedTower.towerName;
            if (currentSelectedTower.towerFeature == EFeatureTower.NULL)
            if (currentSelectedTower.towerFeature == EFeatureTower.NULL && GameConfig.CreateRandomTower)
                towerName = "";
            int towerLvl = currentSelectedTower.currentLevel + 1;
            int posx = currentSelectedTower.gridPosition.x;
@@ -1585,15 +1581,10 @@
            {
                throw new InvalidOperationException("Selected Tower is null");
            }
            int sellValue = currentSelectedTower.GetSellLevel();
            if (EndlessLevelManager.instanceExists && sellValue > 0)
            {
                EndlessLevelManager.instance.Currency.AddCurrency(sellValue);
                currentSelectedTower.Sell();
            currentSelectedTower.Sell();
                // 从列表中删除Tower.
                delTower(currentSelectedTower);
            }
            // 从列表中删除Tower.
            delTower(currentSelectedTower);
            DeselectTower();
        }
@@ -1613,12 +1604,7 @@
            {
                return;
            }
            int cost = m_CurrentTower.controller.purchaseCost;
            bool successfulPurchase = EndlessLevelManager.instance.Currency.TryPurchase(cost);
            if (successfulPurchase)
            {
                PlaceTower();
            }
            PlaceTower();
        }
        /// <summary>
@@ -1628,7 +1614,7 @@
        /// Throws exception when not in a build mode or when tower is not a valid position
        /// </exception>
        /// </summary>
        public bool BuyTower(UIPointer pointer, bool force = false, bool zeroCost = false)
        public bool BuyTower(UIPointer pointer, bool force = false)
        {
            if (!isBuilding) return false;
@@ -1677,10 +1663,7 @@
                return false;
            }
            int cost = m_CurrentTower.controller.purchaseCost;
            if (zeroCost)
                cost = 0;
            bool successfulPurchase = EndlessLevelManager.instance.Currency.TryPurchase(cost);
            bool successfulPurchase = EndlessLevelManager.instance.Currency.TryPurchase(0);
            if (successfulPurchase)
            {
                PlaceGhost(pointer);
@@ -1696,27 +1679,6 @@
        public void PlayUpgradeEffect(Tower newTower)
        {
            newTower.currentTowerLevel.PlayUpGradeEffect();
            // GameObject effect = TowerUpgradeEffectPrefab;
            // if (newTower.towerFeature == EFeatureTower.NULL)
            // {
            //     string path = $"UI/ToBattle_{newTower.attributeId}";
            //     GameObject prefab = Resources.Load<GameObject>(path);
            //     effect = Instantiate(prefab);
            // }
            // // 在sTower的位置播放升级特效
            // GameObject obj = Instantiate(effect);
            // obj.transform.position = newTower.transform.position;
            // Vector3 pos = obj.transform.position;
            // pos.y += 5f;
            // obj.transform.position = pos;
            // ParticleSystem ps = obj.GetComponent<ParticleSystem>();
            // if (ps == null)
            //     ps = obj.transform.GetChild(0).GetComponent<ParticleSystem>();
            // ps.Play();
            // Destroy(obj, ps.main.duration);
        }
        /// <summary>
@@ -1775,7 +1737,7 @@
            if (m_CurrentTower == null || m_CurrentArea == null)
                return false;
            return EndlessLevelManager.instance.Currency.CanAfford(m_CurrentTower.controller.purchaseCost);
            return true;
        }
        /// <summary>
@@ -2047,7 +2009,7 @@
            }
            if (tm)
            {
                tm.GetComponent<Transform>().SetParent(GameObject.Find("MainUI").GetComponent<Transform>(), true);
                tm.GetComponent<Transform>().SetParent(GameObject.Find("MainUI/TextPanel").GetComponent<Transform>(), true);
                string bloodStr = "";
                if (doubleHit)
                    bloodStr += "Dble!";
@@ -2224,7 +2186,7 @@
            RaycastHit output;
            // River: Raycast的碰撞是游戏内物品的Collider进行碰撞检测的
            bool hasHit = Physics.Raycast(uiPointer.ray, out output, float.MaxValue, towerSelectionLayer);
            if (!hasHit)//|| uiPointer.overUI)
            if (!hasHit || uiPointer.overUI)
            {
                //Debug.Log("没有点中或者点中了UI:" + hasHit.ToString() + "," + uiPointer.overUI.ToString());
                return;
@@ -2584,19 +2546,7 @@
        /// <param name="worldPos">世界坐标</param>
        public void PlayToAttackEffect(int attributeId, Vector3 worldPos)
        {
            string path = "";
            if (attributeId == 101)
            {
                path = "UI/Effect_Elf_Huo_DengChang_101";
            }
            else if (attributeId == 105)
            {
                path = "UI/Effect_Elf_Shui_DengChang_105";
            }
            else if (attributeId == 109)
            {
                path = "UI/Effect_Elf_Mu_DengChang_109";
            }
            string path = $"UI/DengChang_{attributeId}";
            GameObject prefab = Resources.Load<GameObject>(path);
            GameObject obj = Instantiate(prefab);