| | |
| | | { |
| | | public class EndlessBuffSelect : Singleton<EndlessBuffSelect> |
| | | { |
| | | public Text Prompt; |
| | | |
| | | public List<SelectBuffIcon> IconList; |
| | | |
| | | public List<Sprite> SpriteList; |
| | | private string iconPath = "UI/Endless/BuffIcon/BuffIcon_"; |
| | | |
| | | /// <summary> |
| | | /// buff是否选中完成 |
| | |
| | | |
| | | public event Action<int> BuffSelectCompleted; |
| | | |
| | | private int SelectedIndex; |
| | | /// <summary> |
| | | /// 当前选择的索引,-1表示还未选中其中一个 |
| | | /// </summary> |
| | | private int SelectedIndex = -1; |
| | | |
| | | public Button SelectBtn; |
| | | |
| | | // Start is called before the first frame update |
| | | private void Start() |
| | |
| | | { |
| | | 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(); |
| | | } |
| | | } |
| | | |
| | | 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) |
| | | { |
| | | if (index == i) |
| | | IconList[i].SetState(EndlessBuffSelectState.Selected); |
| | | else |
| | | IconList[i].SetState(EndlessBuffSelectState.Unselected); |
| | | } |
| | | /// <summary> |
| | | /// 点击了选择按钮 |
| | | /// </summary> |
| | | public void OnClickSelectBtn() |
| | | { |
| | | if (SelectedIndex == -1) return; |
| | | |
| | | StartCoroutine(DelayToClose()); |
| | | HideBuffUI(); |
| | | |
| | | if (BuffSelectCompleted != null) |
| | | BuffSelectCompleted(SelectedIndex); |
| | | } |
| | | |
| | | public void ShowBuffUI() |
| | |
| | | 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); |