using System.Collections.Generic; using Cysharp.Threading.Tasks; using UnityEngine; public class TianziBillboradVictoryWin : UIBase { [SerializeField] ScrollerController scroller; [SerializeField] TextEx txtHunt; bool isSweepVictory = false; string battleName = "TianziBillboradBattleField"; protected override void OnPreOpen() { base.OnPreOpen(); isSweepVictory = TianziBillboradManager.Instance.isSweepVictory; scroller.OnRefreshCell += OnRefreshCell; CreateScroller(); Display(); } protected override void OnPreClose() { base.OnPreClose(); scroller.OnRefreshCell -= OnRefreshCell; TianziBillboradManager.Instance.isSweepVictory = false; BattleSettlementManager.Instance.WinShowOver(battleName); } private void Display() { var jsonData = BattleSettlementManager.Instance.GetBattleSettlement(battleName); if (isSweepVictory) { txtHunt.text = Language.Get("TianziBillborad04", UIHelper.ReplaceLargeNum(TianziBillboradManager.Instance.totalHurtSweep)); } else { txtHunt.text = !jsonData.ContainsKey("totalHurt") ? string.Empty : Language.Get("TianziBillborad04", UIHelper.ReplaceLargeNum(ulong.Parse(jsonData["totalHurt"].ToString()))); } } List showItems = new List(); void CreateScroller() { if (isSweepVictory) { showItems = TianziBillboradManager.Instance.itemInfos; } else { var jsonData = BattleSettlementManager.Instance.GetBattleSettlement(battleName); if (jsonData == null) { DelayCloseWindow().Forget(); return; } if (!jsonData.ContainsKey("itemInfo")) { return; } showItems.Clear(); var resultStr = jsonData["itemInfo"]; for (int i = 0; i < resultStr.Count; i++) { showItems.Add(new Item((int)resultStr[i]["ItemID"], (long)resultStr[i]["Count"])); } } scroller.Refresh(); if (!showItems.IsNullOrEmpty()) { showItems.Sort(SortItem); for (int i = 0; i < showItems.Count; i++) { scroller.AddCell(ScrollerDataType.Header, i); } } scroller.Restart(); } int SortItem(Item itemA, Item itemB) { var itemConfigA = ItemConfig.Get(itemA.id); var itemConfigB = ItemConfig.Get(itemB.id); return itemConfigB.ItemColor - itemConfigA.ItemColor; } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell as SettlementAwardCell; var item = showItems[cell.index]; _cell?.Display(item.id, item.countEx); } }