| //-------------------------------------------------------- | 
| //    [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<int> RedBagSorting = new List<int>();//红包排序 | 
|   | 
|         RedPacketModel m_RedPacket; | 
|         RedPacketModel redPacket { get { return m_RedPacket ?? (m_RedPacket = ModelCenter.Instance.GetModel<RedPacketModel>()); } } | 
|   | 
|         FullServerRechargeRedpackModel model { get { return ModelCenter.Instance.GetModel<FullServerRechargeRedpackModel>(); } } | 
|   | 
|         #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<RedBagScripts>(); | 
|                 _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<int> RedEnvelopeSorting()//红包排序 | 
|         { | 
|             List<int> _list = new List<int>(); | 
|   | 
|             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(); | 
|         } | 
|     } | 
| } |