//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, September 11, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; //红包信息 namespace Snxxz.UI { public class RedBagTipsWin : Window { [SerializeField] ScrollerController m_ScrollerController; [SerializeField] ScrollerController m_ScrollerController1; List RedBagSorting = new List();//红包排序 public static RedBagTipsWin _RedBagTipsWin; [SerializeField] Button _V6Btn;//V6封红包按钮 [SerializeField] Button _CloseBtn;//关闭按钮 private int _PlayerID;//获取玩家的ID public bool _RedBool = false;//用来控制判断是否V6红包 PlayerRedPacketDatas m_RedPacket; PlayerRedPacketDatas redPacket { get { return m_RedPacket ?? (m_RedPacket = ModelCenter.Instance.GetModel()); } } #region Built-in protected override void BindController() { _RedBagTipsWin = this; } protected override void AddListeners() { _V6Btn.onClick.AddListener(V6Button); _CloseBtn.onClick.AddListener(CloseButton); } protected override void OnPreOpen() { PlayerRedPacketDatas.Event_RedEnvelopeToAdd += RedEnvelopeToAdd;//红包的添加 PlayerRedPacketDatas.Event_RedEnvelopeToRefresh += RedEnvelopeToRefresh;//红包的刷新 //PlayerRedPacketDatas.Event_DetailsRedEnvelopeRefresh += DetailsRedEnvelopeRefresh;//红包详情刷新 m_ScrollerController.OnRefreshCell += OnRefreshGridCell; m_ScrollerController1.OnRefreshCell += BulletinBoard; _PlayerID = (int)PlayerDatas.Instance.baseData.PlayerID;//获取玩家的ID _RedBool = false; OnCreateGridLineCellEntry(m_ScrollerController1); OnCreateGridLineCell(m_ScrollerController); } protected override void OnAfterOpen() { m_ScrollerController1.lockType = EnhanceLockType.LockVerticalBottom; } protected override void OnPreClose() { } protected override void OnAfterClose() { m_ScrollerController1.OnRefreshCell -= BulletinBoard; m_ScrollerController.OnRefreshCell -= OnRefreshGridCell; //PlayerRedPacketDatas.Event_DetailsRedEnvelopeRefresh -= DetailsRedEnvelopeRefresh;//红包详情刷新 PlayerRedPacketDatas.Event_RedEnvelopeToAdd -= RedEnvelopeToAdd;//红包的添加 PlayerRedPacketDatas.Event_RedEnvelopeToRefresh -= RedEnvelopeToRefresh;//红包的刷新 } private void BulletinBoard(ScrollerDataType type, CellView cell)//公告栏生成位置 { int _key = cell.index; if (!redPacket._DicRedBag.ContainsKey(_key)) { return; } Text _particulars = cell.GetComponent(); if (redPacket._DicRedBag[_key].MoneyType == 1) { _particulars.text = string.Format(Language.Get("RedBag_V6"), TimeUtility.GetTime((uint)redPacket._DicRedBag[_key].Time). ToString("MM-dd HH:mm"), UIHelper.ServerStringTrim(redPacket._DicRedBag[_key].Name), redPacket._DicRedBag[_key].MoneyNum); } else { _particulars.text = string.Format(Language.Get("Z1055"), TimeUtility.GetTime((uint)redPacket._DicRedBag[_key].Time). ToString("MM-dd HH:mm"), UIHelper.ServerStringTrim(redPacket._DicRedBag[_key].Name), RedEnvelopeContent(redPacket._DicRedBag[_key].GetWay), redPacket._DicRedBag[_key].MoneyNum); } } private void OnCreateGridLineCellEntry(ScrollerController gridCtrl)//动态创建 { gridCtrl.Refresh(); foreach (int key in redPacket._DicRedBag.Keys) { if (redPacket._DicRedBag[key].GetWay != 5) { gridCtrl.AddCell(ScrollerDataType.Header, key); } } gridCtrl.Restart(); } private void OnCreateGridLineCell(ScrollerController gridCtrl)//动态创建 { gridCtrl.Refresh(); RedBagSorting = RedEnvelopeSorting(); int line = Mathf.CeilToInt((float)RedBagSorting.Count / 3); for (int i = 0; i < line; i++) { gridCtrl.AddCell(ScrollerDataType.Header, i); } gridCtrl.Restart(); } private void OnRefreshGridCell(ScrollerDataType type, CellView cell)//属性赋值 { int gridlineIndex = cell.index; int childCode = 0; for (childCode = 0; childCode < cell.transform.childCount; childCode++) { int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1); RedBagScripts _redBagS = cell.transform.GetChild(childCode).GetComponent(); _redBagS.RedBag.gameObject.SetActive(false); if (cellCount - 1 < RedBagSorting.Count) { int INdex = cellCount - 1; _redBagS.RedBag.gameObject.SetActive(true); _redBagS.RedPacket(redPacket._DicRedBag[(RedBagSorting[INdex])].State, RedBagSorting[INdex]); } } } #endregion void CloseButton()//关闭按钮 { Close(); } void V6Button()//V6 红包 { int VipLV = PlayerDatas.Instance.baseData.VIPLv; if (VipLV >= 6) { _RedBool = true; WindowCenter.Instance.Open();//打开发放红包界面 } else { ScrollTip.ShowTip(Language.Get("BossHome_VipNoMeet"));//当前金币不足 } } string RedEnvelopeContent(int _getWay)//红包显示内容 { string _str = null; if (_getWay == 0) { _str = Language.Get("AnswerThree_Z"); return _str; } var redpack = Config.Instance.GetAllValues(); foreach (var value in redpack) { if (value.RedEnvelopeType == _getWay) { _str = value.content; return _str; } } return _str; } void RedEnvelopeToAdd(FamilyRedPacket _familyRedPacket)//红包的添加 { OnCreateGridLineCell(m_ScrollerController); OnCreateGridLineCellEntry(m_ScrollerController1); } void RedEnvelopeToRefresh(FamilyRedPacket _familyRedPacket)//红包的刷新 { OnCreateGridLineCell(m_ScrollerController); } void DetailsRedEnvelopeRefresh()//红包详情的刷新 { //WindowCenter.Instance.Open(); } List RedEnvelopeSorting()//红包排序 { List _list = new List(); foreach (int key in redPacket._DicRedBag.Keys) { if (redPacket._DicRedBag[key].GetWay != 5) { _list.Add(key); } } _list.Sort(Compare); return _list; } int Compare(int x, int y) { FamilyRedPacket xPack = redPacket._DicRedBag[x]; FamilyRedPacket yPack = redPacket._DicRedBag[y]; bool isGetX = xPack.State == 1; bool isGetY = yPack.State == 1; if (isGetX.CompareTo(isGetY) != 0) return -isGetX.CompareTo(isGetY); if (xPack.State.CompareTo(yPack.State) != 0) return xPack.State.CompareTo(yPack.State); if (xPack.RedPacketID.CompareTo(yPack.RedPacketID) != 0) return -xPack.RedPacketID.CompareTo(yPack.RedPacketID); return 1; } } }