using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public abstract class OSRankAwardBaseWin : UIBase { [SerializeField] protected ScrollerController scrollerController; [SerializeField] protected Text myRankText; [SerializeField] protected Text myRankValueText; protected override void OnPreOpen() { scrollerController.OnRefreshCell += OnRefreshCell; CreateScroller(); DisplayMyRank(GetRankType()); } protected override void OnPreClose() { scrollerController.OnRefreshCell -= OnRefreshCell; } // 由子类实现:当前界面的排名类型 (例如 4 是招募榜, 8 是红颜榜) protected abstract int GetRankType(); // 由子类实现:当前界面的奖励 Keys 集合 protected abstract ICollection GetAwardKeys(); // 由子类实现:绑定对应的 Cell protected abstract void OnRefreshCell(ScrollerDataType type, CellView cell); protected void CreateScroller() { var keys = GetAwardKeys(); scrollerController.Refresh(); int count = keys == null ? 0 : keys.Count; for (int i = 0; i < count; i++) { scrollerController.AddCell(ScrollerDataType.Header, i); } scrollerController.Restart(); } public void DisplayMyRank(int rankType) { RankData rankData = RankModel.Instance.GetMyRank(rankType); if (rankData == null) { myRankText.text = Language.Get("L1045"); myRankValueText.text = ""; return; } int rank = rankData.rank; myRankValueText.text = RankModel.Instance.GetCmpValueStr(rankType, rankData.cmpValue); myRankText.text = Language.Get("L1126") + Language.Get("L1096") + rank.ToString(); } }