using System.Collections.Generic; using System.Linq; using UnityEngine; /// /// 竞技场奖励单元格 /// public class ArenaCrossAwardCell : CellView { [SerializeField] ImageEx imgRank; [SerializeField] TextEx txtRank; [SerializeField] ItemCell[] itemCells; public void Display(int index, CellView cellView) { int functionOrder = cellView.info.Value.infoInt1; var rewardDict = ArenaManager.Instance.GetCrossArenaAwardDict(functionOrder); if (rewardDict.IsNullOrEmpty()) return; var sortedKeys = rewardDict.Keys.ToList(); sortedKeys.Sort(); DisplayRank(sortedKeys, index); DisplayItems(sortedKeys, index, rewardDict); } private void DisplayRank(List sortedKeys, int index) { int rank = sortedKeys[index]; if (rank <= 3) { imgRank.SetActive(true); txtRank.SetActive(false); imgRank.SetSprite($"Rank{rank}"); } else { imgRank.SetActive(false); txtRank.SetActive(true); int lastIndex = index - 1; txtRank.text = lastIndex > 0 && lastIndex < sortedKeys.Count ? Language.Get("Arena15", sortedKeys[lastIndex] + 1, rank) : string.Empty; } } private void DisplayItems(List sortedKeys, int index, Dictionary rewardDict) { int[][] rewardArr = rewardDict[sortedKeys[index]]; if (rewardArr.IsNullOrEmpty()) { for (int i = 0; i < itemCells.Length; i++) itemCells[i].SetActive(false); return; } for (int i = 0; i < itemCells.Length; i++) { bool hasReward = i < rewardArr.Length; itemCells[i].SetActive(hasReward); if (hasReward) { int itemId = rewardArr[i][0]; itemCells[i].Init(new ItemCellModel(itemId, true, rewardArr[i][1])); itemCells[i].button.SetListener(() => ItemTipUtility.Show(itemId)); } } } }