//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, November 01, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class TreasurePavilionRankWin : Window
|
{
|
//[SerializeField] Toggle personalRank;
|
[SerializeField] Toggle crossPersonalRank;
|
[SerializeField] ScrollerController personalRankScroller; // 个人排行榜含跨服
|
[SerializeField] Text myRankTxt;
|
[SerializeField] Text subCount;
|
[SerializeField] Text nextRankTxt;
|
[SerializeField] Text nextScore;
|
[SerializeField] Text awardExState; //额外奖励解锁的状态
|
|
[SerializeField] Text actTime;
|
[SerializeField] Text serverList;
|
[SerializeField] RichText showMoreServerText;
|
[SerializeField] Button showMoreServerBtn;
|
[SerializeField] Button rankAward;
|
|
//第一名玩家
|
[SerializeField] AvatarCell avatarCell;
|
[SerializeField] Text playerName_1;
|
[SerializeField] Text score_1;
|
[SerializeField] Text serverName_1;
|
[SerializeField] RawImage player3DModel_1;
|
|
RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
|
TreasurePavilionRankActModel model { get { return ModelCenter.Instance.GetModel<TreasurePavilionRankActModel>(); } }
|
RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
|
|
protected override void BindController()
|
{
|
|
}
|
|
protected override void AddListeners()
|
{
|
//personalRank.SetListener(SelectPersonalRank);
|
//crossPersonalRank.SetListener(SelectCrossPersonalRank);
|
showMoreServerBtn.SetListener(() => {
|
FuncRules.OpenFuncTip(Language.Get("L2015"), model.operationCrossAct.m_ServerListStr);
|
});
|
rankAward.SetListener(() =>
|
{
|
WindowCenter.Instance.Open<TreasurePavilionRankAwardActWin>();
|
});
|
}
|
|
|
protected override void OnPreOpen()
|
{
|
model.SelectRank = 1;
|
//personalRank.isOn = true;
|
crossPersonalRank.isOn = false;
|
rankModel.ResetQueryParam();
|
rankModel.QueryCrossRank(TreasurePavilionRankActModel.crossRankType, model.operationCrossAct.m_GroupValue1);
|
rankModel.onRankRefresh += OnRefreshRankList;
|
GlobalTimeEvent.Instance.secondEvent += secondEvent;
|
personalRankScroller.OnRefreshCell += OnRefreshCell;
|
rankModel.onMyRankRefresh += RankModel_onMyRankRefresh;
|
RoleParticularModel.OnRevPackage += OnPlayerCacheResultEvent;
|
model.OnPlayerInfo += OnPlayerInfoEvent;
|
|
Display();
|
}
|
|
|
|
protected override void OnAfterOpen()
|
{
|
OnCreateRankScroller();
|
}
|
|
protected override void OnPreClose()
|
{
|
GlobalTimeEvent.Instance.secondEvent -= secondEvent;
|
rankModel.onRankRefresh -= OnRefreshRankList;
|
personalRankScroller.OnRefreshCell -= OnRefreshCell;
|
rankModel.onMyRankRefresh -= RankModel_onMyRankRefresh;
|
RoleParticularModel.OnRevPackage -= OnPlayerCacheResultEvent;
|
model.OnPlayerInfo -= OnPlayerInfoEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
private void RankModel_onMyRankRefresh(int type)
|
{
|
if (type == TreasurePavilionRankActModel.crossRankType)
|
ShowMyRank();
|
|
}
|
|
void OnPlayerCacheResultEvent(int viewType, int playerID, RoleParticularModel.ViewPlayerData data)
|
{
|
if (playerID != model.no1PlayerID && playerID != model.no1PlayerIDCross)
|
return;
|
|
ShowNo1Model();
|
}
|
|
|
void OnPlayerInfoEvent()
|
{
|
ShowMyScore();
|
}
|
|
|
|
|
void ShowNo1Info()
|
{
|
RankData rankData = null;
|
|
var rankInfo = rankModel.GetRankPageDatas(TreasurePavilionRankActModel.rankList[model.SelectRank]);
|
if (rankInfo != null && rankInfo.ContainsKey(0))
|
{
|
rankData = rankInfo[0];
|
}
|
|
if (rankData != null)
|
{
|
if (model.SelectRank == 0)
|
{
|
model.no1PlayerID = (int)rankData.id;
|
ShowNo1Model();
|
roleParticularModel.ViewPlayerCacheData(model.no1PlayerID); //查询返回显示模型
|
playerName_1.text = rankData.name1;
|
serverName_1.text = "";
|
}
|
else if (model.SelectRank == 1)
|
{
|
model.no1PlayerIDCross = (int)rankData.id;
|
ShowNo1Model();
|
roleParticularModel.ViewCrossPlayerCacheData(model.no1PlayerIDCross); //查询返回显示模型
|
int serverID = UIHelper.GetServerIDByAccount(rankData.name2);
|
string serverName = ServerListCenter.Instance.GetServerName(serverID);
|
playerName_1.text = rankData.name1;
|
serverName_1.text = Language.Get("Z2002", serverName);
|
}
|
score_1.text = Language.Get("L2013", Language.Get("CrossBattleField79"), rankData.cmpValue);
|
|
int playerID = model.GetPlayerId(rankData);
|
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)playerID, (int)rankData.value3, (int)rankData.value4, rankData.subType));
|
}
|
else
|
{
|
playerName_1.text = Language.Get("L1046");
|
score_1.text = Language.Get("L2013", Language.Get("CrossBattleField79"), 0);
|
|
Dictionary<int, ActBillboardAwards> rankAwardInfo = model.operationCrossAct.rankInfo;
|
score_1.text = Language.Get("RankInfo2") + rankAwardInfo[1].needScore;
|
|
|
serverName_1.text = "";
|
|
avatarCell.InitUI(AvatarHelper.GetDefaultAvatarModel());
|
}
|
}
|
|
void ShowNo1Model()
|
{
|
player3DModel_1.SetActive(false);
|
int playerID = 0;
|
if (model.SelectRank == 0)
|
{
|
playerID = model.no1PlayerID;
|
}
|
else if (model.SelectRank == 1)
|
{
|
playerID = model.no1PlayerIDCross;
|
}
|
if (playerID == 0)
|
{
|
return;
|
}
|
var viewPlayerData = roleParticularModel.GetViewPlayerData(playerID);
|
if (viewPlayerData == null)
|
return;
|
|
player3DModel_1.SetActive(true);
|
|
|
int _suitLevel = (int)(viewPlayerData.rolePropData.EquipShowSwitch % 10);
|
int clothes = viewPlayerData.GetItemId(RoleEquipType.Clothes);
|
int weapon = viewPlayerData.GetItemId(RoleEquipType.Weapon);
|
int wing = viewPlayerData.GetItemId(RoleEquipType.Wing);
|
int weapon2 = viewPlayerData.GetItemId(RoleEquipType.Weapon2);
|
int fashionClothes = viewPlayerData.GetItemId(RoleEquipType.FashionClothes);
|
int fashionWeapon = viewPlayerData.GetItemId(RoleEquipType.FashionWeapon);
|
int fashionWeapon2 = viewPlayerData.GetItemId(RoleEquipType.FashionWeapon2);
|
var reikiRootEffectId = viewPlayerData.rolePropData.EquipShowSwitch / 1000 % 1000;
|
|
var data = new UI3DPlayerExhibitionData
|
{
|
job = viewPlayerData.rolePropData.Job,
|
fashionClothesId = fashionClothes,
|
fashionWeaponId = fashionWeapon,
|
fashionSecondaryId = fashionWeapon2,
|
clothesId = clothes,
|
suitLevel = _suitLevel,
|
weaponId = weapon,
|
wingsId = wing,
|
secondaryId = weapon2,
|
reikiRootEffectId = (int)reikiRootEffectId,
|
isDialogue = false,
|
equipLevel = (int)viewPlayerData.rolePropData.EquipShowSwitch / 10 % 100,
|
titleID = viewPlayerData.rolePropData.TitleID,
|
};
|
|
UI3DModelExhibition.InstanceClone1.ShowPlayer(player3DModel_1, data);
|
player3DModel_1.raycastTarget = false;
|
}
|
|
|
void ShowMyRank(bool isQuery = false)
|
{
|
var myRank = rankModel.GetMyRank(TreasurePavilionRankActModel.rankList[model.SelectRank]);
|
Dictionary<int, ActBillboardAwards> rankAwardInfo = new Dictionary<int, ActBillboardAwards>();
|
rankAwardInfo = model.operationCrossAct.rankInfo;
|
if (myRank == null)
|
{
|
if (isQuery)
|
{
|
//if (model.SelectRank == 0)
|
//{
|
// rankModel.QueryRankByPage(TreasurePavilionRankActModel.rankType, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, forceQuery: true);
|
//}
|
//else
|
{
|
rankModel.QueryCrossRank(TreasurePavilionRankActModel.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;
|
var dataIndex = model.GetRankDataIndex(myRank.index, rankAwardInfo);
|
if (model.operationCrossAct.rankInfo.ContainsKey(dataIndex))
|
needScoreEx = rankAwardInfo[dataIndex].needScoreEx;
|
|
if (needScoreEx == 0)
|
{
|
awardExState.text = string.Empty;
|
}
|
else if (model.actScore >= needScoreEx)
|
{
|
awardExState.text = Language.Get("RankInfo1", dataIndex);
|
}
|
else
|
{
|
awardExState.text = Language.Get("RankInfo3", needScoreEx - model.actScore, dataIndex);
|
}
|
}
|
|
ShowMyScore();
|
|
//显示下一个目标积分
|
int queryRankIndex = 0; //排名从0开始
|
string queryName = Language.Get("L1046");
|
int queryScore = 0;
|
int maxRank = 0;
|
|
//if (model.SelectRank == 0)
|
//{
|
// maxRank = model.operationAct.maxRank;
|
// rankAwardInfo = model.operationAct.rankInfo;
|
//}
|
//else if (model.SelectRank == 1)
|
{
|
maxRank = model.operationCrossAct.maxPersonalRank;
|
rankAwardInfo = model.operationCrossAct.rankInfo;
|
}
|
|
queryRankIndex = myRank == null ? maxRank - 1 : Math.Max(0, myRank.index - 1);
|
|
var rankInfo = rankModel.GetRankPageDatas(TreasurePavilionRankActModel.rankList[model.SelectRank]);
|
if (rankInfo != null)
|
{
|
if (rankInfo.ContainsKey(queryRankIndex))
|
{
|
queryName = rankInfo[queryRankIndex].name1;
|
queryScore = (int)rankInfo[queryRankIndex].cmpValue;
|
}
|
}
|
|
if (queryScore == 0 && rankAwardInfo.ContainsKey(queryRankIndex + 1))
|
{
|
queryScore = rankAwardInfo[queryRankIndex + 1].needScore;
|
}
|
|
nextRankTxt.text = Language.Get("L2013", Language.Get("AllianceBossRank", queryRankIndex + 1), queryName);
|
nextScore.text = Language.Get("CrossServerOneVsOneWin__4") + queryScore;
|
|
}
|
|
|
|
void OnRefreshRankList(int type)
|
{
|
if (type == TreasurePavilionRankActModel.rankType || type == TreasurePavilionRankActModel.crossRankType)
|
{
|
personalRankScroller.m_Scorller.RefreshActiveCellViews();
|
ShowMyRank(true);
|
ShowNo1Info();
|
}
|
|
}
|
|
|
void OnCreateRankScroller()
|
{
|
personalRankScroller.Refresh();
|
|
int maxCount = model.operationCrossAct.maxPersonalRank;
|
|
for (int i = 1; i < maxCount; i++)
|
{
|
personalRankScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
personalRankScroller.Restart();
|
|
ShowMyRank();
|
ShowNo1Info();
|
}
|
|
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<TreasurePavilionRankCell>();
|
_cell?.Display(cell.index);
|
if (model.SelectRank == 0)
|
rankModel.ListenRankPage(TreasurePavilionRankActModel.rankList[model.SelectRank], cell.index);
|
else if (model.SelectRank == 1)
|
rankModel.ListenCrossRankPage(TreasurePavilionRankActModel.crossRankType, model.operationCrossAct.m_GroupValue1, cell.index);
|
}
|
|
|
void Display()
|
{
|
ShowMyScore();
|
|
|
//分上榜时间 和 最后展示时间
|
if (model.IsResultShowTime)
|
{
|
actTime.text = StringUtility.Contact(Language.Get("L2013", Language.Get("L2014"), model.operationCrossAct.ShowResultTime()),
|
" (", Language.Get("XMZZ110") + ")");
|
}
|
else if (model.operationCrossAct != null)
|
{
|
actTime.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), UIHelper.AppendColor(TextColType.Green, model.operationCrossAct.ToDisplayJoinTime(), true));
|
}
|
else
|
{
|
//未开启跨服活动
|
actTime.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), UIHelper.AppendColor(TextColType.Green, model.operationAct.ToDisplayTime(), true));
|
}
|
|
if (model.operationCrossAct != null)
|
{
|
serverList.text = Language.Get("L2013", Language.Get("L2015"), model.operationCrossAct.m_ServerListStr).Replace(" ", UIHelper.no_breaking_space);
|
showMoreServerText.text = Language.Get("L2018", Language.Get("L2016"));
|
}
|
else
|
{
|
serverList.text = "";
|
showMoreServerText.text = "";
|
}
|
}
|
|
void ShowMyScore()
|
{
|
subCount.text = Language.Get("CrossServerOneVsOneWin__4") + model.actScore.ToString();
|
}
|
|
|
void secondEvent()
|
{
|
if (model.IsResultShowTime)
|
{
|
actTime.text = StringUtility.Contact(Language.Get("L2013", Language.Get("L2014"), model.operationCrossAct.ShowResultTime()), " (",
|
Language.Get("XMZZ110") + ")");
|
}
|
|
}
|
|
//void SelectPersonalRank(bool value)
|
//{
|
// if (value)
|
// {
|
// model.SelectRank = 0;
|
// rankModel.ResetQueryParam();
|
// rankModel.QueryRankByPage(TreasurePavilionRankActModel.rankType);
|
// OnCreateRankScroller();
|
// }
|
//}
|
|
//void SelectCrossPersonalRank(bool value)
|
//{
|
// if (value)
|
// {
|
// model.SelectRank = 1;
|
// rankModel.ResetQueryParam();
|
// rankModel.QueryCrossRank(TreasurePavilionRankActModel.crossRankType, model.operationCrossAct.m_GroupValue1);
|
// OnCreateRankScroller();
|
// }
|
//}
|
|
|
}
|
|
}
|
|
|
|
|