//--------------------------------------------------------
|
// [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();
|
}
|
}
|
}
|