//--------------------------------------------------------
|
// [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<RankModel>(); } }
|
SecretPlaceXBModel model { get { return ModelCenter.Instance.GetModel<SecretPlaceXBModel>(); } }
|
|
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<int, ActBillboardAwards> 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<int, ActBillboardAwards> rankAwardsInfo = new Dictionary<int, ActBillboardAwards>();
|
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<SecretPlaceRankAwardActCell>();
|
_cell?.Display(cell.index);
|
}
|
|
|
|
|
|
|
void SelectPersonalRank(bool value)
|
{
|
if (value)
|
{
|
model.SelectAwardRank = 0;
|
OnCreateRankScroller();
|
}
|
}
|
|
void SelectCrossPersonalRank(bool value)
|
{
|
if (value)
|
{
|
model.SelectAwardRank = 1;
|
OnCreateRankScroller();
|
}
|
}
|
|
|
}
|
|
}
|
|
|
|
|