using System.Linq; using UnityEngine; namespace vnxbqy.UI { public class FairySiegeRankAwardActFairyCell : CellView { [SerializeField] ImageEx imgBG; [SerializeField] ImageEx imgRank; [SerializeField] TextEx txtRank; [SerializeField] ImageEx imgLeaderTitle; [SerializeField] ImageEx imgEliteTitle; [SerializeField] UIFrame uifLeaderTitle; [SerializeField] UIFrame uifEliteTitle; [SerializeField] FairySiegeItemCellArr leaderItems; [SerializeField] FairySiegeItemCellArr eliteItems; [SerializeField] FairySiegeItemCellArr memberItems; FairySiegeActModel model { get { return ModelCenter.Instance.GetModel(); } } public void Display(int index) { if (model.operationCrossAct == null) return; int familyTemplateID = model.operationCrossAct.FamilyTemplateID; var rankDict = BillboardAwardTempConfig.GetRankDict(familyTemplateID); if (rankDict == null) return; var list = rankDict.Keys.ToList(); list.Sort(); int id = rankDict[list[index]]; if (!BillboardAwardTempConfig.Has(id)) return; BillboardAwardTempConfig config = BillboardAwardTempConfig.Get(id); leaderItems.Display(config.LeaderAwardItemList.IsNullOrEmpty() ? config.LeaderAwardItemList : config.AwardItemList); eliteItems.Display(!config.EliteAwardItemList.IsNullOrEmpty() ? config.EliteAwardItemList : config.AwardItemList); memberItems.Display(config.AwardItemList); bool hasLeaderTitle = model.TryGetTitleId(config.LeaderAwardItemList, out int leaderTitleId); imgLeaderTitle.SetActive(hasLeaderTitle); if (hasLeaderTitle) { model.DisplayTitle(imgLeaderTitle, uifLeaderTitle, leaderTitleId); } bool hasEliteTitle = model.TryGetTitleId(config.EliteAwardItemList, out int eliteTitleId); imgEliteTitle.SetActive(hasEliteTitle); if (hasEliteTitle) { model.DisplayTitle(imgEliteTitle, uifEliteTitle, eliteTitleId); } if (index < 3) { imgRank.SetActive(true); imgRank.SetSprite("RankNum" + (index + 1)); imgRank.SetNativeSize(); imgBG.SetSprite("actrankBG" + (index + 1)); } else { imgRank.SetActive(false); imgBG.SetSprite("actrankBGOther"); } var startRank = 1; if (index > 0) { startRank = list[index - 1] + 1; } var endRank = list[index]; if (startRank == endRank) { txtRank.text = endRank.ToString(); } else { txtRank.text = StringUtility.Contact(startRank, "-", endRank); } } } }