using System.Collections.Generic; using UnityEngine; // 布阵 public class GuildBossPowerUPWin : UIBase { [SerializeField] ScrollerController scrollerController; protected override void OnPreOpen() { scrollerController.OnRefreshCell += OnRefreshCell; GuildBossManager.Instance.BossHurtEvent += Display; Display(); } protected override void OnPreClose() { scrollerController.OnRefreshCell -= OnRefreshCell; GuildBossManager.Instance.BossHurtEvent -= Display; } void Display() { var _list = SortPlayer(); scrollerController.Refresh(); for (int i = 0; i < _list.Count; i++) { scrollerController.AddCell(ScrollerDataType.Header, _list[i]); } scrollerController.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell.Display(cell.index); } List SortPlayer() { var _list = PlayerDatas.Instance.fairyData.GetMemberIDList(); _list.Sort(Cmp); return _list; } int Cmp(int playerIDA, int playerIDB) { int timeA = 0; if (GuildBossManager.Instance.bossActions.ContainsKey(playerIDA)) { timeA = (int)GuildBossManager.Instance.bossActions[playerIDA].Value2; } int timeB = 0; if (GuildBossManager.Instance.bossActions.ContainsKey(playerIDB)) { timeB = (int)GuildBossManager.Instance.bossActions[playerIDB].Value2; } // 0代表未布阵排后面,非0小的排前面 if (timeA == 0 && timeB == 0) { return playerIDA - playerIDB; } else if (timeA == 0) { return 1; } else if (timeB == 0) { return -1; } return timeA - timeB; } }