using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using System.Linq;
|
|
namespace Snxxz.UI
|
{
|
public class XMZZAchieveWin : Window
|
{
|
[SerializeField] ScrollerController achieveCtrl;
|
[SerializeField] Button closeBtn;
|
|
HeavenBattleModel battleModel { get { return ModelCenter.Instance.GetModel<HeavenBattleModel>(); } }
|
List<XMZZAchievementConfig> achievelist;
|
protected override void BindController()
|
{
|
achieveCtrl.OnRefreshCell += RefreshAchieveCell;
|
achieveCtrl.lockType = EnhanceLockType.KeepVertical;
|
}
|
|
protected override void AddListeners()
|
{
|
closeBtn.AddListener(CloseClick);
|
}
|
|
protected override void OnPreOpen()
|
{
|
battleModel.AchieveModel.achievementCompletedEvent += RefreshComplete;
|
CreateCell();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
this.transform.SetAsLastSibling();
|
achieveCtrl.JumpIndex(0);
|
}
|
|
protected override void OnPreClose()
|
{
|
battleModel.AchieveModel.achievementCompletedEvent -= RefreshComplete;
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
private void RefreshComplete(int id)
|
{
|
if (achievelist != null)
|
{
|
for (int i = 0; i < achievelist.Count; i++)
|
{
|
if (achievelist[i].AchieveID.Contains(id))
|
{
|
achievelist = battleModel.GetAchievelist();
|
CreateCell();
|
}
|
}
|
}
|
}
|
|
private void CreateCell()
|
{
|
achievelist = battleModel.GetAchievelist();
|
achieveCtrl.Refresh();
|
int i = 0;
|
for (i = 0; i < achievelist.Count; i++)
|
{
|
Achievement achieve = null;
|
battleModel.SetAchievement(achievelist[i].AchieveID, out achieve);
|
if(achieve != null)
|
{
|
if(!achieve.completed)
|
{
|
achieveCtrl.AddCell(ScrollerDataType.Header,achieve.id);
|
}
|
else
|
{
|
achieveCtrl.AddCell(ScrollerDataType.Normal,achieve.id);
|
}
|
}
|
|
}
|
achieveCtrl.Restart();
|
}
|
|
private void RefreshAchieveCell(ScrollerDataType type, CellView cell)
|
{
|
switch (type)
|
{
|
case ScrollerDataType.Header:
|
XMZZAchieveCell achieveCell = cell.GetComponent<XMZZAchieveCell>();
|
achieveCell.Init(cell.index);
|
break;
|
}
|
}
|
|
}
|
}
|