using System.Collections.Generic; using UnityEngine; public class HeroReturnRankWin : FunctionsBaseWin { [SerializeField] ButtonEx btnClose; [SerializeField] RectTransform rankRect; [SerializeField] RectTransform awardRect; [SerializeField] TextEx timeText; [Header("排行")] [SerializeField] ScrollerController rankScroller; [SerializeField] List playerTop3Cells; [SerializeField] HeroReturnRankCell myRankCell; [HideInInspector] public string valueFormat = "{0}"; [Header("奖励")] // [SerializeField] TextEx txtCountdown; [SerializeField] ScrollerController awardScroller; [SerializeField] ImageEx heroImage; [SerializeField] TextEx myRankNumText; [SerializeField] TextEx myCallCntText; [SerializeField] TextEx timeText1; HeroReturnManager manager => HeroReturnManager.Instance; protected override void InitComponent() { base.InitComponent(); btnClose.SetListener(CloseWindow); } protected override void OnPreOpen() { base.OnPreOpen(); RankModel.Instance.ResetQueryParam(); RankModel.Instance.QueryRankByPage(manager.sendRankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, groupValue1: manager.actNum); RankModel.Instance.onRankRefresh += OnRankRefresh; GlobalTimeEvent.Instance.secondEvent += OnSecondEvent; rankScroller.OnRefreshCell += OnRefreshCell; awardScroller.OnRefreshCell += OnRefreshAwardCell; Display(); } protected override void OnPreClose() { base.OnPreClose(); RankModel.Instance.onRankRefresh -= OnRankRefresh; GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent; rankScroller.OnRefreshCell -= OnRefreshCell; awardScroller.OnRefreshCell -= OnRefreshAwardCell; } void OnRankRefresh(int type) { RankRefresh(); } void RankRefresh() { ShowTop3(); rankScroller.m_Scorller.RefreshActiveCellViews(); DisplayMyRank(); DisplayAwardMyRank(); } void CreateRankScroller() { rankScroller.Refresh(); var cnt = RankModel.Instance.GetRankShowMaxCnt(manager.sendRankType); for (int i = 3; i < cnt; i++) { rankScroller.AddCell(ScrollerDataType.Header, i); } rankScroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell.Display(manager.loadRankType, cell.index + 1, valueFormat); RankModel.Instance.ListenRankPage(manager.sendRankType, cell.index, groupValue1: manager.actNum); } private void OnSecondEvent() { manager.GetActTimeStr(timeText); manager.GetActTimeStr(timeText1); } protected override void OpenSubUIByTabIndex() { rankRect.SetActive(functionOrder == 0); awardRect.SetActive(functionOrder == 1); Display(); } public void Display() { int heroID = manager.GetFirstHeroId(); if (functionOrder == 0) { ShowTop3(); CreateRankScroller(); DisplayMyRank(); } else { CreateAwardScroller(); heroImage.SetSprite(StringUtility.Concat("HeroReturnRankAwardHero_", heroID.ToString())); heroImage.SetNativeSize(); DisplayAwardMyRank(); } OnSecondEvent(); } private void DisplayMyRank() { myRankCell.Display(manager.loadRankType, 0, valueFormat); } void ShowTop3() { for (int i = 0; i < playerTop3Cells.Count; i++) { playerTop3Cells[i].Display(manager.loadRankType, i + 1); } } void DisplayAwardMyRank() { RankData rankData = RankModel.Instance.GetMyRank(manager.loadRankType); if (rankData == null) { myRankNumText.text = Language.Get("L1045"); myCallCntText.text = "0"; return; } myRankNumText.text = Language.Get("WarlordPavilion12", rankData.rank); myCallCntText.text = string.Format(valueFormat, UIHelper.ReplaceLargeNum(rankData.cmpValue)); } int billTempID; private void CreateAwardScroller() { var act = manager.GetOperationHeroAppearInfo(); if (act == null) return; var config = ActHeroAppearConfig.Get(act.CfgID); if (config == null) return; billTempID = config.BillTempID; var list = ActBillboardAwardConfig.GetRankASortList(billTempID); if (list == null) return; awardScroller.Refresh(); for (int i = 0; i < list.Count; i++) { awardScroller.AddCell(ScrollerDataType.Header, list[i]); } awardScroller.Restart(); } private void OnRefreshAwardCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index, billTempID); } }