//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Wednesday, November 01, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class SecretPlaceRankAwardActWin : Window { [SerializeField] Toggle personalRank; [SerializeField] Toggle crossPersonalRank; [SerializeField] ScrollerController personalRankScroller; // 个人排行榜含跨服 [SerializeField] Text myRankTxt; [SerializeField] Text awardExState; //额外奖励解锁的状态 RankModel rankModel { get { return ModelCenter.Instance.GetModel(); } } SecretPlaceXBModel model { get { return ModelCenter.Instance.GetModel(); } } protected override void BindController() { } protected override void AddListeners() { personalRank.SetListener(SelectPersonalRank); crossPersonalRank.SetListener(SelectCrossPersonalRank); } protected override void OnPreOpen() { model.SelectAwardRank = 0; personalRank.isOn = true; crossPersonalRank.isOn = false; personalRankScroller.OnRefreshCell += OnRefreshCell; rankModel.onMyRankRefresh += RankModel_onMyRankRefresh; } protected override void OnAfterOpen() { OnCreateRankScroller(); } protected override void OnPreClose() { personalRankScroller.OnRefreshCell -= OnRefreshCell; rankModel.onMyRankRefresh -= RankModel_onMyRankRefresh; } protected override void OnAfterClose() { } private void RankModel_onMyRankRefresh(int type) { if (type == SecretPlaceXBModel.rankType || type == SecretPlaceXBModel.crossRankType) { ShowMyRank(); } } void ShowMyRank(bool isQuery = false) { var myRank = rankModel.GetMyRank(SecretPlaceXBModel.rankList[model.SelectAwardRank]); if (myRank == null) { if (isQuery) { if (model.SelectAwardRank == 0) { rankModel.QueryRankByPage(SecretPlaceXBModel.rankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, forceQuery: true); } else { rankModel.QueryCrossRank(SecretPlaceXBModel.crossRankType, model.operationCrossAct.m_GroupValue1, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, forceQuery: true); } } myRankTxt.text = Language.Get("L2013", Language.Get("CrossBattleField45"), Language.Get("CrossServer123")); awardExState.text = string.Empty; } else { myRankTxt.text = Language.Get("L2013", Language.Get("CrossBattleField45"), (myRank.index + 1).ToString()); //显示额外奖励解锁状态 int needScoreEx = 0; Dictionary rankInfo = model.SelectAwardRank == 0 ? model.operationAct.rankInfo : model.operationCrossAct.rankInfo; var dataIndex = model.GetRankDataIndex(myRank.index, rankInfo); if (rankInfo.ContainsKey(dataIndex)) needScoreEx = rankInfo[dataIndex].needScore; if (needScoreEx == 0) { awardExState.text = string.Empty; } else if (model.lotteryScore >= needScoreEx) { awardExState.text = Language.Get("RankInfo1", dataIndex); } else { awardExState.text = Language.Get("RankInfo3", needScoreEx - model.lotteryScore, dataIndex); } } } void OnCreateRankScroller() { personalRankScroller.Refresh(); Dictionary rankAwardsInfo = new Dictionary(); if (model.SelectAwardRank == 0) { rankAwardsInfo = model.operationAct.rankInfo; } else if (model.SelectAwardRank == 1) { rankAwardsInfo = model.operationCrossAct.rankInfo; } var keys = rankAwardsInfo.Keys.ToList(); for (int i = 0; i < keys.Count; i++) { personalRankScroller.AddCell(ScrollerDataType.Header, i); } personalRankScroller.Restart(); ShowMyRank(true); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell?.Display(cell.index); } void SelectPersonalRank(bool value) { if (value) { model.SelectAwardRank = 0; OnCreateRankScroller(); } } void SelectCrossPersonalRank(bool value) { if (value) { model.SelectAwardRank = 1; OnCreateRankScroller(); } } } }