using System.Linq; using UnityEngine; namespace vnxbqy.UI { public class FairySiegeScheduleNameListWin : Window { [SerializeField] ButtonEx btnClose; [SerializeField] ScrollerController scroller; FairySiegeActModel model { get { return ModelCenter.Instance.GetModel(); } } #region Build-in protected override void AddListeners() { btnClose.SetListener(CloseClick); } protected override void BindController() { } protected override void OnPreOpen() { scroller.OnRefreshCell += OnRefreshCell; model.OnUpdateFamilyGCZGroupFamilyMemHurtInfoEvent += OnUpdateFamilyGCZGroupFamilyMemHurtInfoEvent; scroller.Refresh(); scroller.Restart(); model.SendQuery(7, 0, 0, model.queryFairyId); } protected override void OnPreClose() { scroller.OnRefreshCell -= OnRefreshCell; model.OnUpdateFamilyGCZGroupFamilyMemHurtInfoEvent -= OnUpdateFamilyGCZGroupFamilyMemHurtInfoEvent; } private void OnUpdateFamilyGCZGroupFamilyMemHurtInfoEvent() { CreateScroller(); } protected override void OnAfterOpen() { } protected override void OnAfterClose() { } #endregion private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index); } private void CreateScroller() { scroller.Refresh(); if (model.hurtMemDict != null && model.hurtMemDict.TryGetValue(model.queryFairyId, out var info)) { var list = info.Keys.ToList(); list.Sort((a, b) => { ulong hurtValueA = info[a].HurtValue; ulong hurtValueB = info[b].HurtValue; if (hurtValueA != hurtValueB) { return hurtValueB.CompareTo(hurtValueA); } return 0; }); for (int i = 0; i < list.Count; i++) { scroller.AddCell(ScrollerDataType.Header, (int)list[i]); } } scroller.Restart(); } } }