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<SortElement> m_SortElements;
|
[SerializeField] ScrollerController m_Controller;
|
[SerializeField] ClickScreenOtherSpace m_ClickOtherSpace;
|
[SerializeField] Text m_TargetDisplay;
|
public event Action<SortType, int> 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;
|
}
|
}
|
|