From 85a92b4fc459b46a8f780ac31a9425f87f48821f Mon Sep 17 00:00:00 2001
From: liuzhiwei <liuzhiwei@qq.com>
Date: Wed, 18 Nov 2020 13:54:12 +0800
Subject: [PATCH] Merge branch 'master' of http://172.16.1.52:8090/r/GemBattle into master

---
 Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs |  119 ++++++++++++++---------------------------------------------
 1 files changed, 28 insertions(+), 91 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs
index 31b449e..2c97e51 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs
+++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessRandomTower.cs
@@ -14,15 +14,7 @@
     // 当前类所在的Btn.
     public Button randomBtn;
 
-    /// <summary>
-    /// 倒计时对应的背景图片.
-    /// </summary>
-    public Image cdTimeBg;
-
-    /// <summary>
-    /// 倒计划对应的文字.
-    /// </summary>
-    public TextMeshProUGUI cdTimeText;
+    public Button skillBtn;
 
     /// <summary>
     /// 购买二级宝石的按钮贴图.
@@ -60,9 +52,6 @@
     // 所有宝石位置权重列表
     private List<int> weightList;
 
-    // 是否初始化过出战数据
-    private bool isInitFightData = false;
-
     // Start is called before the first frame update
     void Start()
     {
@@ -86,24 +75,26 @@
 
         bSetBuyLvlUp = false;
         bCdTimeStart = false;
-
-        cdTimeBg.gameObject.SetActive(false);
-
-        cdTimeText.text = "";
-
-        randomBtn.onClick.AddListener(onClick);
-
+        randomBtn.onClick.AddListener(delegate () { onClick(EFeatureTower.NULL); });
+        skillBtn.onClick.AddListener(delegate () { onClick(EFeatureTower.Skill_Bomb); });
     }
 
     public void ChangeBtnClickNormal()
     {
         randomBtn.onClick.RemoveAllListeners();
-        randomBtn.onClick.AddListener(onClick);
+        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(() =>
+        {
+            AudioSourceManager.Ins.Play(AudioEnum.UIDisable);
+        });
+        skillBtn.onClick.AddListener(() =>
         {
             AudioSourceManager.Ins.Play(AudioEnum.UIDisable);
         });
@@ -129,14 +120,11 @@
         {
             bCdTimeStart = true;
             btnLvlUpCdTime = LEVELUP_TOWER_TIME - gstime;
-            cdTimeBg.gameObject.SetActive(true);
         }
         if ((!bSetBuyLvlUp) && (gstime > LEVELUP_TOWER_TIME))
         {
             bSetBuyLvlUp = true;
             this.randomBtn.GetComponent<Image>().sprite = buyBtnLevelUp;
-            cdTimeBg.gameObject.SetActive(false);
-            cdTimeText.text = "";
         }
 
         // 更新倒计时:
@@ -144,7 +132,6 @@
         {
             btnLvlUpCdTime -= Time.deltaTime;
             string distr = ((int)Math.Ceiling(btnLvlUpCdTime)).ToString() + "s";
-            cdTimeText.text = distr;
         }
     }
 
@@ -194,7 +181,7 @@
             if (name == this.towerArray[ti].towerName)
                 return towerArray[ti];
 
-        return GetRandomTower(false);
+        return GetRandomTower(EFeatureTower.NULL, true);
     }
 
     /// <summary>
@@ -222,81 +209,34 @@
     /// <summary>
     /// 根据规则生成一个随机的塔
     /// </summary>
-    /// <param name="onlySpawnElf">是否仅产生精灵宝石,而不产生技能宝石</param>
     /// <returns></returns>
-    public Tower GetRandomTower(bool onlySpawnElf = true)
+    public Tower GetRandomTower(EFeatureTower towerType, bool isRandom)
     {
-        if (!isInitFightData)
+        int[] indexArr = { 0, 1, 2, 3, 4 };
+
+        if (!isRandom)
         {
-            isInitFightData = true;
-            weightList = new List<int>();
-            List<posWeight> posWeight = JsonDataCenter.GetList<posWeight>();
-            randomTotalWeight = 0;
-
-            for (int i = 0; i < posWeight.Count; ++i)
+            if (towerType == EFeatureTower.NULL)
             {
-                weightList.Add(posWeight[i].weight);
-                randomTotalWeight += posWeight[i].weight;
+                // 只获得普通宝石
+                indexArr = new int[] { 0, 1, 2 };
             }
-
-            // 游戏开始之前先把出站组乱序
-            GameUtils.Shuffle(towerArray);
+            else
+            {
+                // 只获得技能宝石
+                indexArr = new int[] { 3, 4 };
+            }
         }
 
-        Tower ret = null;
+        int random = UnityEngine.Random.Range(0, indexArr.Length);
 
-        // 还没到技能时间,忽略掉技能宝石
-        if (onlySpawnElf)
-        {
-            // 精灵宝石位置索引列表
-            List<int> elfIndexList = new List<int>();
-
-            for (int i = 0; i < towerArray.Count; ++i)
-            {
-                if (towerArray[i].towerFeature == EFeatureTower.NULL)
-                    elfIndexList.Add(i);
-            }
-
-            // 没有上阵精灵宝石
-            if (elfIndexList.Count == 0)
-            {
-                Debug.LogError("--------------------- 没有上阵精灵宝石 ---------------------");
-                return null;
-            }
-
-            // 计算所有精灵宝石位置的总权重
-            int elfTotalWeight = 0;
-            // 精灵宝石位置权重列表
-            List<int> elfWeightList = new List<int>();
-
-            for (int i = 0; i < elfIndexList.Count; ++i)
-            {
-                elfTotalWeight += weightList[elfIndexList[i]];
-                elfWeightList.Add(weightList[elfIndexList[i]]);
-            }
-
-            // 所有精灵宝石位置的权重都为0,直接等概率出一个精灵宝石
-            int index = elfTotalWeight == 0 ? mRandom.Next(0, elfIndexList.Count) : GetRandomIndex(elfWeightList, elfTotalWeight);
-            ret = towerArray[elfIndexList[index]];
-        }
-        // 可以自由产生
-        else
-        {
-            int index = randomTotalWeight == 0 ? mRandom.Next(0, towerArray.Count) : GetRandomIndex(weightList, randomTotalWeight);
-            ret = towerArray[index];
-        }
-
-        // 生成宝石成功,需要调整宝石位置,把宝石放到队尾
-        towerArray.Remove(ret);
-        towerArray.Add(ret);
-
-        return ret;
+        return towerArray[indexArr[random]];
     }
 
     /// <summary>
     /// 随机购买Tower的入口,如果购买成功,则需要实时更新价格
     /// </summary>
-    public void onClick()
+    public void onClick(EFeatureTower towerType)
     {
         if (GameConfig.IsNewbie && !GameConfig.CanBuyNewTower)
         {
@@ -307,13 +247,10 @@
 
         AudioSourceManager.Ins.Play(AudioEnum.UI);
 
-        // 还没到技能时间,忽略掉技能宝石
-        Tower newTower = GetRandomTower(EndlessUIStart.instance.GameStartTime <= SKILL_TOWER_TIME);
+        Tower newTower = GetRandomTower(towerType, false);
 
         if (!newTower)
             throw new Exception("未能成功产生Tower");
-
-
 
         if (newTower.towerFeature == EFeatureTower.NULL)
         {

--
Gitblit v1.9.1