//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Friday, December 07, 2018 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class FairyFeastTransmitListWin : Window { [SerializeField] Button m_Close; [SerializeField] Button m_Refresh; [SerializeField] ScrollerController m_ScrollerControl; [SerializeField] Text m_TimeStr; [SerializeField] Text m_AwardCount; [SerializeField] List m_Items; FairyModel model { get { return ModelCenter.Instance.GetModel(); } } FairyFeastModel fairyFeastModel { get { return ModelCenter.Instance.GetModel(); } } DailyQuestModel dailyQuestModel { 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; DisplayFairyMembers(); m_TimeStr.text = Language.Get("FamilyChuangong2", fairyFeastModel.activeOpenday - TimeUtility.OpenDay - 1); var completedTimes = dailyQuestModel.GetDailyQuestCompletedTimes((int)DailyQuestType.FairyChuanGong); var totalTimes = dailyQuestModel.GetDailyQuestTotalTimes((int)DailyQuestType.FairyChuanGong); m_AwardCount.text = Language.Get("FamilyChuangong3", completedTimes, totalTimes); for (int i = 0; i < m_Items.Count; i++) { if (i < fairyFeastModel.chuangongAwards.Length) { m_Items[i].SetActive(true); int itemID = fairyFeastModel.chuangongAwards[i][0]; m_Items[i].Init(new ItemCellModel(itemID, false, (ulong)fairyFeastModel.chuangongAwards[i][1])); m_Items[i].button.AddListener(() => { ItemTipUtility.Show(itemID); }); } else { m_Items[i].SetActive(false); } } } protected override void OnAfterOpen() { } protected override void OnPreClose() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= DisplayFairyMembers; 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); } 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; } } }