From 1e192494412a34d17548834a6aff639202cdfdda Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Wed, 23 Dec 2020 15:18:48 +0800 Subject: [PATCH] 开塔BUG --- Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs | 199 ++++++++++++++++++++++++++++++++++++------------- 1 files changed, 145 insertions(+), 54 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs index b096b3b..8a7dd22 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs @@ -8,18 +8,21 @@ using UnityEngine.UI; using TMPro; using KTGMGemClient; +using DG.Tweening; +using System.Collections; public class EndlessRandomTower : Singleton<EndlessRandomTower> { // 当前类所在的Btn. public Button randomBtn; - public Button skillBtn; - /// <summary> /// 购买二级宝石的按钮贴图. /// </summary> public Sprite buyBtnLevelUp; + + [SerializeField] + private TextMeshProUGUI cashText; protected bool bSetBuyLvlUp; @@ -39,9 +42,6 @@ // 开始出现技能塔的时间: public static float SKILL_TOWER_TIME = 30.0f; - // 购买之后直接出现2级宝石的时间. - public static float LEVELUP_TOWER_TIME = 10.0f; - protected System.Random mRandom; protected int rTowerIdx = 2; @@ -56,9 +56,34 @@ public Text SkillDesc; + public ParticleSystem btnPS; + + IEnumerator ReadJson() + { + while (!GameConfig.JsonReadDone) + { + yield return 10; + } + + countDownLimit = JsonDataCenter.GetById<battle>(23).value; + Debug.Log("设置了倒计时:" + countDownLimit); + yield break; + } + // Start is called before the first frame update void Start() { +#if UNITY_ANDROID + +#endif +#if UNITY_IPHONE + +#endif +#if UNITY_EDITOR + +#endif + StartCoroutine(ReadJson()); + if (!EndlessLevelManager.instanceExists) Debug.LogError("[UI] No level manager for tower list"); @@ -80,34 +105,28 @@ bSetBuyLvlUp = false; bCdTimeStart = false; randomBtn.onClick.AddListener(delegate () { onClick(EFeatureTower.NULL); }); - skillBtn.onClick.AddListener(delegate () { onClick(EFeatureTower.Skill_Bomb); }); - UpdateDescDisplay(); + NormalDesc.text = $"购买{0 + 1}级精灵"; + Invoke("UpdateDescDisplay", 1.0f); + //UpdateDescDisplay(); } public void UpdateDescDisplay() { - int minLevel = EndlessGameUI.instance.MinLevel; + int minLevel = GameConfig.IsUpgradeTowerLevel ? 1 : 0; - NormalDesc.text = $"购买{minLevel + 1}级宝石"; - SkillDesc.text = $"购买{minLevel + 1}级技能宝石"; + NormalDesc.text = $"购买{minLevel + 1}级精灵"; } public void ChangeBtnClickNormal() { randomBtn.onClick.RemoveAllListeners(); - skillBtn.onClick.RemoveAllListeners(); randomBtn.onClick.AddListener(delegate () { onClick(EFeatureTower.NULL); }); - skillBtn.onClick.AddListener(delegate () { onClick(EFeatureTower.Skill_Bomb); }); } public void ChangeBtnClick() { randomBtn.onClick.RemoveAllListeners(); - skillBtn.onClick.RemoveAllListeners(); + randomBtn.onClick.AddListener(delegate () { onClick(EFeatureTower.NULL); }); randomBtn.onClick.AddListener(() => - { - AudioSourceManager.Ins.Play(AudioEnum.UIDisable); - }); - skillBtn.onClick.AddListener(() => { AudioSourceManager.Ins.Play(AudioEnum.UIDisable); }); @@ -167,7 +186,7 @@ if (name == this.towerArray[ti].towerName) return towerArray[ti]; - return GetRandomTower(EFeatureTower.NULL, true); + return GetRandomTower(EFeatureTower.NULL); } /// <summary> @@ -196,7 +215,7 @@ /// 根据规则生成一个随机的塔 /// </summary> /// <returns></returns> - public Tower GetRandomTower(EFeatureTower towerType, bool isRandom) + public Tower GetRandomTower(EFeatureTower towerType, bool isRandom = false) { int[] indexArr = { 0, 1, 2, 3, 4 }; @@ -224,10 +243,18 @@ /// </summary> public void onClick(EFeatureTower towerType) { - if (GameConfig.IsNewbie && !GameConfig.CanBuyNewTower) + if (GameConfig.IsNewbie) { - AudioSourceManager.Ins.Play(AudioEnum.UIDisable); + AudioSourceManager.Ins.Play(AudioEnum.UI); + btnPS?.Play(); + return; + } + if (EndlessGameUI.instance.tdBuyDisable) + { + cashText.color = new Color(218f / 255f, 32f / 255f, 32f / 255f); + DOTween.To(() => cashText.color, (Color v) => cashText.color = v, cashText.color, 0.2f) + .OnComplete(CheckCurrencyEnough); return; } @@ -238,41 +265,103 @@ if (!newTower) throw new Exception("未能成功产生Tower"); - if (newTower.towerFeature == EFeatureTower.NULL) + RandomPlaceTower(newTower, -1, -1, -1, -1, true); + + btnPS?.Play(); + //重置倒计时 + + if (!isCountStartDown) { - string tmpTowerName = newTower.towerName; - towerNameLis.Add(tmpTowerName); - int count = 0; - bool isFirstBuy = true; - for (int i = 0; i < towerNameLis.Count; i++) - { - if (towerNameLis[i] == tmpTowerName) - { - count++; - if (count == 2) - { - isFirstBuy = false; - break; - } - } - } - - if (isFirstBuy) - { - //Debug.Log("首次购买:" + tmpTowerName); - - } - else - { - //Debug.Log("购买了多次了:" + tmpTowerName); - } - RandomPlaceTower(newTower, -1, -1, -1, -1, isFirstBuy); - + needClickPS.Stop(); + isCountStartDown = true; } + + countDownTime = 0f; + } + + + private bool isCountStartDown = false;//是否开始倒计时 + public void SetCountDown(bool isOn, bool isReset = false) + { + isCountStartDown = isOn; + if (isReset) + { + countDownTime = 0; + if (needClickPS.isPlaying) + needClickPS.Stop(); + } + } + + public void SetPS(bool isOn) + { + if (needClickPS.gameObject.activeSelf != isOn) + { + needClickPS.gameObject.SetActive(isOn); + } + + } + float countDownTime = 0f; + float countDownLimit = 5f; + public ParticleSystem needClickPS;//提示点击按钮 + /// <summary> + /// This function is called every fixed framerate frame, if the MonoBehaviour is enabled. + /// </summary> + void FixedUpdate() + { + if (isCountStartDown) + { + countDownTime += Time.deltaTime; + if (countDownTime > countDownLimit) + { + + CheckTower(); + countDownTime = 0; + } + } + } + + /// <summary> + /// 查看是否满足播放按钮提示 + /// </summary> + private void CheckTower() + { + //条件 金币是否满足,合成区是否有位置 + int result; + int.TryParse(cashText.text.ToString(), out result); + int current = EndlessLevelManager.instance.Currency.currentCurrency; + int num = EndlessGameUI.instance.GetTowerNum(); + + if (current >= result && num < 10)//自己的钱多 + { + //Debug.Log($"当前金币 :{current} 下一次购买需要金币:{result} 塔的数量:{num}"); + isCountStartDown = false; + needClickPS.Play(); + } + } + + public void CheckMoney() + { + int result; + int.TryParse(cashText.text.ToString(), out result); + int current = EndlessLevelManager.instance.Currency.currentCurrency; + if (current < result && needClickPS.isPlaying)//自己的钱多 + { + needClickPS.Stop(); + isCountStartDown = true; + countDownTime = 0; + } + } + + private void CheckCurrencyEnough() + { + int result; + int.TryParse(cashText.text.ToString(), out result); + int current = EndlessLevelManager.instance.Currency.currentCurrency; + + if (current >= result) + EndlessGameUI.instance.enableRandomTowerBtn(); else - { - RandomPlaceTower(newTower, -1, -1, -1, -1, false); - } + EndlessGameUI.instance.disableRandomTowerBtn(); } private List<string> towerNameLis = new List<string>();//用来判断是否是首次购买宝石 @@ -289,7 +378,9 @@ gameUI.CancelGhostPlacement(); if (level == -1) - level = Mathf.Min(EndlessGameUI.instance.MinLevel, 1); + { + level = GameConfig.IsUpgradeTowerLevel ? 1 : 0; + } return gameUI.RandomPlaceTower(tower, posx, posy, level, cost, false, isFirstAppear); } -- Gitblit v1.9.1