//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, January 28, 2019 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class FullServerRechargeRedpackWin : Window { [SerializeField] ScrollerController m_RedEnvelopeControl; [SerializeField] Transform m_ContainerNoEnvelope; [SerializeField] Text m_GrabCount; List RedBagSorting = new List();//红包排序 RedPacketModel m_RedPacket; RedPacketModel redPacket { get { return m_RedPacket ?? (m_RedPacket = ModelCenter.Instance.GetModel()); } } FullServerRechargeRedpackModel model { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { m_RedEnvelopeControl.OnRefreshCell += OnRefreshRedEnvelopeCell; } protected override void OnPreOpen() { redPacket.ServerGrabCntEvent += ServerGrabCntEvent; redPacket.RedbagRefresh += RedEnvelopeToRefresh;//红包的刷新 Display(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { } protected override void OnAfterClose() { redPacket.ServerGrabCntEvent -= ServerGrabCntEvent; redPacket.RedbagRefresh -= RedEnvelopeToRefresh;//红包的刷新 } #endregion void Display() { OnCreateGridLineCell(m_RedEnvelopeControl); var count = Math.Max(model.GetMaxOpenRedpackCount() - redPacket.ServerGrabCnt, 0); m_GrabCount.text = model.GetMaxOpenRedpackCount() == 0 ? Language.Get("DailyQuest_NoLevelLimit") : count.ToString(); } private void OnRefreshRedEnvelopeCell(ScrollerDataType type, CellView cell) { int gridlineIndex = cell.index; for (int childCode = 0; childCode < cell.transform.childCount; childCode++) { int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1); RedBagScripts _redBagS = cell.transform.GetChild(childCode).GetComponent(); _redBagS.RedBag.SetActive(false); if (cellCount - 1 < RedBagSorting.Count) { int INdex = cellCount - 1; _redBagS.RedBag.SetActive(true); _redBagS.RedPacket(redPacket._DicRedBag[(RedBagSorting[INdex])].State, RedBagSorting[INdex]); } } } private void OnCreateGridLineCell(ScrollerController gridCtrl)//动态创建 { gridCtrl.Refresh(); RedBagSorting = RedEnvelopeSorting(); int line = Mathf.CeilToInt((float)RedBagSorting.Count / 4); for (int i = 0; i < line; i++) { gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); m_ContainerNoEnvelope.SetActive(RedBagSorting.Count == 0); } List RedEnvelopeSorting()//红包排序 { List _list = new List(); foreach (int key in redPacket._DicRedBag.Keys) { if (redPacket.IsDisplayRechargeTH(redPacket._DicRedBag[key])) { _list.Add(key); } } _list.Sort(Compare); return _list; } //0 未发 1 未领取 int Compare(int x, int y) { FamilyRedPacket xPack = redPacket._DicRedBag[x]; FamilyRedPacket yPack = redPacket._DicRedBag[y]; if (xPack.State != yPack.State) return xPack.State.CompareTo(yPack.State); return xPack.Time.CompareTo(yPack.Time); } void RedEnvelopeToRefresh()//红包的刷新 { OnCreateGridLineCell(m_RedEnvelopeControl); } void ServerGrabCntEvent() { var count = Math.Max(model.GetMaxOpenRedpackCount() - redPacket.ServerGrabCnt, 0); m_GrabCount.text = model.GetMaxOpenRedpackCount() == 0 ? Language.Get("DailyQuest_NoLevelLimit") : count.ToString(); } } }