using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Core.Utilities; using System; /** * 选择buff脚本 * @Author: chenxin * @Date: 2020-10-19 15:55:46 */ namespace KTGMGemClient { public class EndlessBuffSelect : Singleton { public List IconList; private string iconPath = "UI/Endless/BuffIcon/BuffIcon_"; /// /// buff是否选中完成 /// private bool isCompleted; public event Action BuffSelectCompleted; /// /// 当前选择的索引,-1表示还未选中其中一个 /// private int SelectedIndex = -1; public Button SelectBtn; public GameObject EffectObj; private Vector3[] effectPosArr = { new Vector3(-21.6f, 73.4f, 5.5f), new Vector3(0, 73.4f, 5.5f), new Vector3(21.6f, 73.4f, 5.5f) }; // Start is called before the first frame update private void Start() { for (int i = 0; i < IconList.Count; ++i) { IconList[i].OnSelectBuffCompleted += OnClick; } SelectBtn.onClick.AddListener(OnClickSelectBtn); } private void OnEnable() { isCompleted = false; SelectedIndex = -1; for (int i = 0; i < IconList.Count; ++i) { IconList[i].Reset(); } EndlessMaskUI.instance.Show(); } public void OnClick(int index) { // 如果点击同一个直接返回 if (index == SelectedIndex) return; // 如果已经选择过了,设置一个之前选择的item if (SelectedIndex != -1) { IconList[SelectedIndex].SetState(false); } SelectedIndex = index; IconList[index].SetState(true); PlayEffect(); } private void PlayEffect() { EffectObj.transform.localPosition = effectPosArr[SelectedIndex]; ParticleSystem ps = EffectObj.transform.GetChild(0).GetComponent(); ps.Play(); } private void StopEffect() { ParticleSystem ps = EffectObj.transform.GetChild(0).GetComponent(); ps.Stop(); ps.Clear(); } /// /// 点击了选择按钮 /// public void OnClickSelectBtn() { if (SelectedIndex == -1) return; int index = SelectedIndex; HideBuffUI(); if (BuffSelectCompleted != null) BuffSelectCompleted(index); } public void ShowBuffUI() { gameObject.SetActive(true); } public void HideBuffUI() { EndlessMaskUI.instance.Hide(); StopEffect(); gameObject.SetActive(false); } public void Refresh(List 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); } } } }