using EnhancedUI.EnhancedScroller; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class SortTable : MonoBehaviour { [SerializeField] SortType m_SortType; public SortType sortType { get { return m_SortType; } set { m_SortType = value; } } [SerializeField] List m_SortElements; [SerializeField] ScrollerController m_Controller; [SerializeField] ClickScreenOtherSpace m_ClickOtherSpace; [SerializeField] Text m_TargetDisplay; public event Action onSelectSortEvent; public event Action onSortCloseEvent; private void Awake() { m_Controller.OnRefreshCell += OnRefreshCell; } private void OnEnable() { m_Controller.Refresh(); if (m_SortElements != null) { for (int i = 0; i < m_SortElements.Count; i++) { m_Controller.AddCell(ScrollerDataType.Header, i, OnSortSelect); } } m_Controller.Restart(); if (m_ClickOtherSpace != null) { m_ClickOtherSpace.RemoveAllListeners(); m_ClickOtherSpace.AddListener(() => { if (onSortCloseEvent != null) { onSortCloseEvent(); } }); } } private void OnSortSelect(CellView _cell) { var _index = _cell.index; var type = m_SortElements[_index].type; if (onSelectSortEvent != null) { onSelectSortEvent(sortType,type); } if (onSortCloseEvent != null) { onSortCloseEvent(); } if (m_TargetDisplay != null) { m_TargetDisplay.text = Language.Get(m_SortElements[_index].textKey); } this.SetActive(false); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _sortCell = cell as SortCell; _sortCell.sortTypeTxt.text = Language.Get(m_SortElements[cell.index].textKey); } public void SetDefault(int value = 0) { if(value == 0) { if (m_TargetDisplay != null && m_SortElements != null && m_SortElements.Count > 0) { m_TargetDisplay.text = Language.Get(m_SortElements[0].textKey); } } else { if (m_TargetDisplay != null && m_SortElements != null && m_SortElements.Count > 0) { foreach(var key in m_SortElements) { if(key.type == value) { m_TargetDisplay.text = Language.Get(key.textKey); break; } } } } } } public enum SortType { EquipQuality, EquipStar, EquipLv, } [Serializable] public struct SortElement { [Header("语言表key")] public string textKey; public int type; } }