//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, December 07, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class FairyFeastTransmitListWin : Window { [SerializeField] Button m_Close; [SerializeField] Button m_Refresh; [SerializeField] ScrollerController m_ScrollerControl; FairyModel model { get { return ModelCenter.Instance.GetModel(); } } FairyFeastModel fairyFeastModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_Close.onClick.AddListener(CloseClick); m_Refresh.onClick.AddListener(Refresh); m_ScrollerControl.OnRefreshCell += OnRefreshCell; } protected override void OnPreOpen() { C0F07_tagCGetFamilyInfo pak = new C0F07_tagCGetFamilyInfo(); pak.Type = 0; GameNetSystem.Instance.SendInfo(pak); PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += DisplayFairyMembers; fairyFeastModel.fairyFeastPlayerUpdate += FairyFeastPlayerUpdate; DisplayFairyMembers(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= DisplayFairyMembers; fairyFeastModel.fairyFeastPlayerUpdate -= FairyFeastPlayerUpdate; fairyFeastModel.displayFairyMembers.Clear(); } protected override void OnAfterClose() { } #endregion private void Refresh() { C0F07_tagCGetFamilyInfo pak = new C0F07_tagCGetFamilyInfo(); pak.Type = 0; GameNetSystem.Instance.SendInfo(pak); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var fairyMemberCell = cell as FairyFeastMemberCell; fairyMemberCell.Display(cell.index); } private void FairyFeastPlayerUpdate() { m_ScrollerControl.m_Scorller.RefreshActiveCellViews(); } void DisplayFairyMembers() { fairyFeastModel.displayFairyMembers.Clear(); m_ScrollerControl.Refresh(); PlayerFairyData.FairyData fairy = PlayerDatas.Instance.fairyData.fairy; if (fairy != null) { List list = fairy.Member; if (list != null) { fairyFeastModel.displayFairyMembers.AddRange(list); } fairyFeastModel.displayFairyMembers.Sort(Compare); for (int i = 0; i < fairyFeastModel.displayFairyMembers.Count; i++) { m_ScrollerControl.AddCell(i % 2 == 0 ? ScrollerDataType.Header : ScrollerDataType.Normal, i); } } m_ScrollerControl.Restart(); } int Compare(PlayerFairyData.FairyMember lhs, PlayerFairyData.FairyMember rhs) { bool lOnline = lhs.Exattr2 == 0; bool rOnline = rhs.Exattr2 == 0; if (lOnline.CompareTo(rOnline) != 0) { return lhs.Exattr2.CompareTo(rhs.Exattr2); } if (lhs.LV.CompareTo(rhs.LV) != 0) { return -lhs.LV.CompareTo(rhs.LV); } if (lhs.FamilyLV.CompareTo(rhs.FamilyLV) != 0) { return -lhs.FamilyLV.CompareTo(rhs.FamilyLV); } return 1; } } }