using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; public class GuildBossAwardWin : UIBase { [SerializeField] ScrollerController atkScroller; [SerializeField] ScrollerController awardScroller; [SerializeField] Button getAllBtn; protected override void InitComponent() { getAllBtn.AddListener(OnGetAllBtnClick); } protected override void OnPreOpen() { atkScroller.OnRefreshCell += OnRefreshCell; awardScroller.OnRefreshCell += OnRefreshAwardCell; GuildBossManager.Instance.BossHurtEvent += Display; Display(); } protected override void OnPreClose() { atkScroller.OnRefreshCell -= OnRefreshCell; awardScroller.OnRefreshCell -= OnRefreshAwardCell; GuildBossManager.Instance.BossHurtEvent -= Display; } void Display() { var _list = GuildBossManager.Instance.bossActions.Keys.ToList(); _list.Sort(Cmp); atkScroller.Refresh(); for (int i = 0; i < _list.Count; i++) { if (_list[i] == 1) { continue; } var data = GuildBossManager.Instance.bossActions[_list[i]]; if (data.Value4 + data.Value5 * Constants.ExpPointValue <= 0) { continue; } atkScroller.AddCell(ScrollerDataType.Header, _list[i]); } atkScroller.Restart(); //50个一行 int cnt = Mathf.CeilToInt(GuildBossManager.Instance.m_BoxUnGetCount / 50.0f); awardScroller.Refresh(); for (int i = 0; i < cnt; i++) { awardScroller.AddCell(ScrollerDataType.Header, i); } awardScroller.Restart(); } int Cmp(int playerIDA, int playerIDB) { int timeA = (int)GuildBossManager.Instance.bossActions[playerIDA].Time; int timeB = (int)GuildBossManager.Instance.bossActions[playerIDB].Time; return timeB.CompareTo(timeA); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); //{0}累积造成{1}伤害,共为成员们带回了x{2} var data = GuildBossManager.Instance.GetMemberData(cell.index); var actionData = GuildBossManager.Instance.bossActions[cell.index]; _cell.text = Language.Get("GuildBoss20", data.Name, UIHelper.ReplaceLargeNum(actionData.Value4 + actionData.Value5 * Constants.ExpPointValue), actionData.Value6); } void OnRefreshAwardCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell.Display(cell.index); } void OnGetAllBtnClick() { if (GuildBossManager.Instance.m_BoxUnGetCount <= 0) { return; } var pack = new CA504_tagCMPlayerGetReward(); pack.RewardType = 3; GameNetSystem.Instance.SendInfo(pack); } }