using vnxbqy.UI; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; public class CrossServerBattleFieldResultCell : ILBehaviour { Image rankImg; Text rank; Text name; Image firstImg; Text collectCrystal; Text killNum; Text score; List items = new List(); protected override void Awake() { rankImg = proxy.GetWidgtEx("IMG_Rank"); rank = proxy.GetWidgtEx("Txt_Rank"); name = proxy.GetWidgtEx("Txt_Name"); firstImg = proxy.GetWidgtEx("Img_FirstSign"); collectCrystal = proxy.GetWidgtEx("Txt_Crystal"); killNum = proxy.GetWidgtEx("Txt_KillNum"); score = proxy.GetWidgtEx("Txt_Integral"); for (int i = 0; i < 5; i++) { items.Add(proxy.GetWidgtEx("itemcell" + i)); } } public void Display(int index) { var result = ILCrossServerModel.Instance.dungeonResult.factionInfoList[ILCrossServerModel.Instance.seeFaction - 1].rankPlayerList[index]; if (index < 3) { rankImg.SetActiveIL(true); rank.SetActiveIL(false); rankImg.SetSprite(index == 0 ? "Rank_First" : (index == 1 ? "Rank_Second" : "Rank_Third")); } else { rankImg.SetActiveIL(false); rank.SetActiveIL(true); rank.text = (index + 1).ToString(); } name.text = result.name; firstImg.SetActiveIL(index == 0); collectCrystal.text = result.crystalCollCnt.ToString(); killNum.text = result.killCount.ToString(); score.text = result.score.ToString(); var awards = GetRankAwards(index); for (int i = 0; i < items.Count; i++) { if (i < awards.Count) { items[i].SetActiveIL(true); var itemID = awards[i].id; var model = new ItemCellModel(itemID, false, (ulong)awards[i].count); items[i].Init(model); items[i].button.SetListener(() => { ItemTipUtility.Show(itemID); }); } else { items[i].SetActiveIL(false); } } } List GetRankAwards(int index) { Dictionary> awards = new Dictionary>(); if (ILCrossServerModel.Instance.dungeonResult.winnerFaction == ILCrossServerModel.Instance.seeFaction) { awards = ILCrossServerModel.Instance.winRankAwards; } else { awards = ILCrossServerModel.Instance.defeatRankAwards; } var keyList = awards.Keys.ToList(); keyList.Sort(); int findKey = 0; for (int i = 0; i < keyList.Count; i++) { if (index + 1 <= keyList[i]) { findKey = keyList[i]; break; } } if (findKey == 0) { return new List(); } return awards[findKey]; } }