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));
}
}
}
}