From 1fe72e022dad01d87d64ba90d22db110029b8136 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Sat, 26 Dec 2020 15:37:51 +0800
Subject: [PATCH] 召唤分身UI出现会把技能特效遮盖

---
 Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs |  114 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 81 insertions(+), 33 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs b/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs
index cc26693..8c88a41 100644
--- a/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs
+++ b/Assets/Scripts/TowerDefense/UI/EndlessBuffSelect.cs
@@ -14,20 +14,22 @@
 {
     public class EndlessBuffSelect : Singleton<EndlessBuffSelect>
     {
-        public Text Prompt;
-
         public List<SelectBuffIcon> IconList;
-
-        public List<Sprite> SpriteList;
-
-        /// <summary>
-        /// buff是否选中完成
-        /// </summary>
-        private bool isCompleted;
 
         public event Action<int> BuffSelectCompleted;
 
-        private int SelectedIndex;
+        /// <summary>
+        /// 当前选择的索引,-1表示还未选中其中一个
+        /// </summary>
+        private int SelectedIndex = -1;
+
+        public Button SelectBtn;
+
+        public GameObject EffectPrefabObject;
+
+        private GameObject effectObj;
+
+        private Vector3[] effectPosArr = { new Vector3(-21.6f, 0, 6.6f), new Vector3(0, 0, 6.6f), new Vector3(21.6f, 0, 6.6f) };
 
         // Start is called before the first frame update
         private void Start()
@@ -36,65 +38,111 @@
             {
                 IconList[i].OnSelectBuffCompleted += OnClick;
             }
+
+            SelectBtn.onClick.AddListener(OnClickSelectBtn);
         }
 
         private void OnEnable()
         {
-            isCompleted = false;
-            Prompt.text = "点击选择buff";
-            
+            SelectedIndex = -1;
+
             for (int i = 0; i < IconList.Count; ++i)
             {
-                IconList[i].SetIcon(SpriteList[i]);
-                IconList[i].SetState(EndlessBuffSelectState.Normal);
+                IconList[i].Reset();
             }
+
+        }
+
+        private void OnDisable()
+        {
+            if (effectObj != null)
+                Destroy(effectObj);
         }
 
         public void OnClick(int index)
         {
-            if (isCompleted) return;
+            // 如果点击同一个直接返回
+            if (index == SelectedIndex) return;
 
-            isCompleted = true;
+            // 如果已经选择过了,设置一个之前选择的item
+            if (SelectedIndex != -1)
+                IconList[SelectedIndex].SetState(false);
+
             SelectedIndex = index;
-            Prompt.text = "选择buff成功";
+            IconList[index].SetState(true);
 
-            for (int i = 0; i < IconList.Count; ++i)
+            //PlayEffect();
+        }
+
+
+        private void PlayEffect()
+        {
+            if (effectObj == null)
             {
-                if (index == i)
-                    IconList[i].SetState(EndlessBuffSelectState.Selected);
-                else
-                    IconList[i].SetState(EndlessBuffSelectState.Unselected);
+                effectObj = Instantiate(EffectPrefabObject);
+                GameObject particleSystemObject = GameObject.Find("ParticleSystemObject");
+                effectObj.transform.SetParent(particleSystemObject.transform, false);
+                effectObj.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);
             }
+            effectObj.transform.localPosition = effectPosArr[SelectedIndex];
+            ParticleSystem ps = effectObj.transform.GetChild(0).GetComponent<ParticleSystem>();
+            ps.Play();
+        }
 
-            StartCoroutine(DelayToClose());
+        private void StopEffect()
+        {
+            if (effectObj != null)
+            {
+                ParticleSystem ps = effectObj.transform.GetChild(0).GetComponent<ParticleSystem>();
+                ps.Stop();
+                ps.Clear();
+            }
+        }
+
+        /// <summary>
+        /// 点击了选择按钮
+        /// </summary>
+        public void OnClickSelectBtn()
+        {
+            if (SelectedIndex == -1) return;
+
+            int index = SelectedIndex;
+
+            AudioSourceManager.Ins.Play(AudioEnum.UI);
+
+            HideBuffUI();
+
+            IconList[index].Fly();
+            EndlessRandomTower.instance.SetCountDown(true,true);
+
+            if (BuffSelectCompleted != null)
+                BuffSelectCompleted(index);
         }
 
         public void ShowBuffUI()
         {
+            EndlessMaskUI.instance.Show();
             gameObject.SetActive(true);
+            AudioSourceManager.Ins?.Play(AudioEnum.ChooseBuff);
         }
 
         public void HideBuffUI()
         {
+            EndlessMaskUI.instance.Hide();
+            StopEffect();
             gameObject.SetActive(false);
-        }
-
-        private IEnumerator DelayToClose()
-        {
-            yield return new WaitForSeconds(0.5f);
-            HideBuffUI();
-
-            if (BuffSelectCompleted != null)
-                BuffSelectCompleted(SelectedIndex);
         }
 
         public void Refresh(List<EndlessBuffConfig> list)
         {
             for (int i = 0; i < IconList.Count; ++i)
             {
+                IconList[i].SetIcon(list[i].Config.image);
+                IconList[i].SetQuality(list[i].Config.rare);
                 IconList[i].SetName(list[i].Config.name);
                 IconList[i].SetEffect(list[i].Config.brief);
                 IconList[i].SetRare(list[i].Config.rare);
+                IconList[i].SetIsGold(list[i].EffectType == EndlessBuffEffectType.GoldAdd);
             }
         }
     }

--
Gitblit v1.9.1