using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TableConfig; using System.Linq; namespace Snxxz.UI { public class XMZZAchieveWin : Window { [SerializeField] ScrollerController achieveCtrl; [SerializeField] Button closeBtn; HeavenBattleModel battleModel { get { return ModelCenter.Instance.GetModel(); } } List 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(); achieveCell.Init(cell.index); break; } } } }