From f5a5416b754abdfb2b84a72ede5d237161a2a248 Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Thu, 26 Nov 2020 15:22:00 +0800
Subject: [PATCH] buff预览界面

---
 Assets/Scripts/TowerDefense/UI/EndlessBuffPreview.cs |  109 ++++++++++++++++++++++++++----------------------------
 1 files changed, 53 insertions(+), 56 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/UI/EndlessBuffPreview.cs b/Assets/Scripts/TowerDefense/UI/EndlessBuffPreview.cs
index d6a081e..3c64453 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessBuffPreview.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessBuffPreview.cs
@@ -1,8 +1,7 @@
-using UnityEngine.UI;
-using System.Collections;
-using TowerDefense.Level;
 using System.Collections.Generic;
+using UnityEngine.UI;
 using UnityEngine;
+using TowerDefense.Level;
 
 /**
  * 无尽模式buff预览
@@ -13,87 +12,85 @@
 {
     public class EndlessBuffPreview : MonoBehaviour
     {
+        /// <summary>
+        /// buff预览界面
+        /// </summary>
         public GameObject Panel;
 
-        private bool isShow;
+        public GameObject Content;
 
-        private string iconPath = "UI/Endless/BuffPreviewIcon/buff_";
+        /// <summary>
+        /// buff预览界面返回按钮
+        /// </summary>
+        public Button BackBtn;
 
-        public List<GameObject> ItemList;
-
-        public List<Image> IconList;
-
-        public List<Text> TextList;
-
-        private string[] elementNameArr = { "火", "水", "木" };
+        /// <summary>
+        /// 未获得buff提示文字
+        /// </summary>
+        public Text NoBuffText;
 
         // Start is called before the first frame update
         private void Start()
         {
             GetComponent<Button>().onClick.AddListener(OnClick);
+            BackBtn.onClick.AddListener(HideBuffPreview);
             EventCenter.Ins.Add((int)KTGMGemClient.EventType.EndlessBuffRefresh, Refresh);
-            ShowPanel();
+            Panel.SetActive(false);
         }
 
         public void OnClick()
         {
-            ShowPanel();
-        }
-
-        private void ShowPanel()
-        {
-            if (isShow)
-                Refresh();
-            Panel.SetActive(isShow);
-            isShow = !isShow;
+            ShowBuffPreview();
         }
 
         private void Refresh()
         {
+            ClearContent();
+
             List<EndlessBuffConfig> buffList = EndlessBuffManager.instance.BuffList;
-            // 0.火  1.水  2.木
-            int[] addArr = { 0, 0, 0 };
+
+            if (buffList.Count == 0)
+            {
+                NoBuffText.gameObject.SetActive(true);
+                return;
+            }
+
+            NoBuffText.gameObject.SetActive(false);
 
             for (int i = 0; i < buffList.Count; ++i)
             {
-                // 只统计了加攻击力的
-                if (buffList[i].EffectType != EndlessBuffEffectType.AttackAdd) continue;
+                GameObject prefab = Resources.Load<GameObject>("UI/BuffPreview/BuffItem");
+                GameObject item = Instantiate(prefab);
+                item.transform.SetParent(Content.transform, false);
 
-                switch (buffList[i].UseTarget)
-                {
-                    case EndlessBuffUseTarget.All:
-                        addArr[0] += (int)buffList[i].Config.buff_effect[1];
-                        addArr[1] += (int)buffList[i].Config.buff_effect[1];
-                        addArr[2] += (int)buffList[i].Config.buff_effect[1];
-                        break;
-                    case EndlessBuffUseTarget.Element:
-                        addArr[(int)buffList[i].Config.target_type[1] - 1] += (int)buffList[i].Config.buff_effect[1];
-                        break;
-                    case EndlessBuffUseTarget.Designated:
-                        break;
-                    case EndlessBuffUseTarget.SkillLevelUp:
-                        break;
-
-                }
+                SelectBuffIcon buffSelect = item.GetComponent<SelectBuffIcon>();
+                buffSelect.SetIcon(buffList[i].Config.image);
+                buffSelect.SetQuality(buffList[i].Config.rare);
+                buffSelect.SetName(buffList[i].Config.name);
+                buffSelect.SetEffect(buffList[i].Config.brief);
+                buffSelect.SetRare(buffList[i].Config.rare);
             }
+        }
 
-            int count = 0;
-
-            for (int i = 0; i < addArr.Length; ++i)
+        private void ClearContent()
+        {
+            for (int i = Content.transform.childCount - 1; i >= 0; --i)
             {
-                if (addArr[i] == 0) continue;
-
-                ItemList[count].SetActive(true);
-                Sprite sp = Resources.Load<Sprite>($"{iconPath}{i + 1}");
-                IconList[count].sprite = sp;
-                TextList[count].text = $"{elementNameArr[i]}精灵攻击+{addArr[i]}%";
-                ++count;
+                Destroy(Content.transform.GetChild(i).gameObject);
             }
+        }
 
-            for (; count < 3; ++count)
-            {
-                ItemList[count].SetActive(false);
-            }
+        private void ShowBuffPreview()
+        {
+            EndlessLevelManager.instance.PauseWave();
+            Refresh();
+            Panel.SetActive(true);
+        }
+
+        private void HideBuffPreview()
+        {
+            EndlessLevelManager.instance.RestartWave();
+            Panel.SetActive(false);
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1