using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
//用于显示获得物品的窗口
|
public class FairySiegeSpringPassAllAwardWin : Window
|
{
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] RichText desc;
|
[SerializeField] Button sureBtn;
|
[SerializeField] Text sureText;
|
[SerializeField] TextEx closeText;
|
FairySiegeActModel model { get { return ModelCenter.Instance.GetModel<FairySiegeActModel>(); } }
|
|
float openTime;
|
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
sureBtn.AddListener(() =>
|
{
|
CloseClick();
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.OnGetSpringItemShowEvent += OnGetItemShowEvent;
|
scroller.OnRefreshCell += OnRefreshCell;
|
desc.SetActive(!string.IsNullOrEmpty(model.getSpringItemInfo));
|
desc.text = model.getSpringItemInfo;
|
sureText.text = model.getSpringItemBtnText;
|
CreateScroller();
|
closeText.text = Language.Get("L2004");
|
openTime = Time.time;
|
}
|
|
protected override void OnPreClose()
|
{
|
model.OnGetSpringItemShowEvent -= OnGetItemShowEvent;
|
scroller.OnRefreshCell -= OnRefreshCell;
|
model.OnGetItem?.Invoke();
|
model.ClearGetItem();
|
}
|
|
private void CreateScroller()
|
{
|
scroller.Refresh();
|
var keys = model.totalSpringShowItems.Keys.ToList();
|
int rowCount = (int)Mathf.Ceil((float)keys.Count / 5);
|
for (int i = 0; i < rowCount; i++)
|
{
|
scroller.AddCell(ScrollerDataType.Header, i);
|
}
|
scroller.Restart();
|
}
|
|
float needRefreshTime; //避免封包过多卡顿
|
|
private void OnGetItemShowEvent()
|
{
|
needRefreshTime = Time.time + 0.3f;
|
}
|
|
private void RefreshScroller()
|
{
|
if (needRefreshTime <= 0)
|
return;
|
|
if (Time.time < needRefreshTime)
|
return;
|
|
if (scroller.GetNumberOfCells(scroller.m_Scorller) != model.totalSpringShowItems.Count)
|
{
|
CreateScroller();
|
}
|
else
|
{
|
scroller.m_Scorller.RefreshActiveCellViews();
|
}
|
needRefreshTime = 0;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void LateUpdate()
|
{
|
RefreshScroller();
|
if (model.springCloseSeconds == 0)
|
return;
|
|
float closeTime = model.springCloseSeconds - (Time.time - openTime);
|
if (closeTime <= 0)
|
{
|
CloseClick();
|
return;
|
}
|
closeText.text = Language.Get("AutoCloseAfterSeconds", (int)closeTime);
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell as FairySiegeSpringPassAllAwardCell;
|
_cell?.Display(cell.index);
|
}
|
}
|
}
|