using System;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class FairySiegeRankWin : Window
|
{
|
[SerializeField] ButtonEx btnClose;
|
[SerializeField] Toggle crossPersonalRank;
|
[SerializeField] Toggle crossFamilyRank;
|
[SerializeField] Transform personalRankObj;
|
[SerializeField] Transform familyRankObj;
|
[SerializeField] ScrollerController personalRankScroller; // 个人排行榜含跨服
|
[SerializeField] ScrollerController familyRankScroller;
|
[SerializeField] Text myRankTxt;
|
[SerializeField] Text subCount;
|
|
[SerializeField] Text nextRankTxt;
|
[SerializeField] Text nextScore;
|
|
[SerializeField] Text actTime;
|
[SerializeField] Text serverList;
|
[SerializeField] RichText showMoreServerText;
|
[SerializeField] Button showMoreServerBtn;
|
[SerializeField] Button rankAward;
|
|
[SerializeField] Transform tranPersonalNo1;
|
[SerializeField] Transform tranFairyNo1;
|
//第一名玩家
|
[SerializeField] AvatarCell avatarCell;
|
[SerializeField] Text playerName_1; //排行榜ID2 为 玩家ID
|
[SerializeField] Text score_1;
|
[SerializeField] Text serverName_1;
|
[SerializeField] RawImage player3DModel_1;
|
|
[SerializeField] TextEx txtNo1FamilyName;
|
[SerializeField] TextEx txtNo1FamilyScore;
|
[SerializeField] TextEx txtNo1FamilyServerName;
|
[SerializeField] TextEx txtNoHasNo1;
|
[SerializeField] EmblemCell emblemCell;
|
[SerializeField] ButtonEx btnNo1RoundInfo;
|
|
[SerializeField] RedpointBehaviour rpRankAward;
|
RankModel rankModel { get { return ModelCenter.Instance.GetModel<RankModel>(); } }
|
FairySiegeActModel model { get { return ModelCenter.Instance.GetModel<FairySiegeActModel>(); } }
|
FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } }
|
RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
|
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
btnClose.SetListener(CloseClick);
|
crossPersonalRank.SetListener(SelectCrossPersonalRank);
|
crossFamilyRank.SetListener(SelectCrossFamilyRank);
|
showMoreServerBtn.SetListener(() =>
|
{
|
FuncRules.OpenFuncTip(Language.Get("L2015"), model.operationCrossAct.m_ServerListStr);
|
});
|
rankAward.SetListener(() =>
|
{
|
WindowCenter.Instance.Open<FairySiegeRankAwardActWin>();
|
});
|
btnNo1RoundInfo.SetListener(() =>
|
{
|
var rankData = rankModel.GetRankPageDatas(FairySiegeActModel.crossFamilyRankType);
|
if (rankData == null)
|
return;
|
model.chooseRankIndex = 0;
|
WindowCenter.Instance.Open<FairySiegeRankInfoWin>();
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
rpRankAward.redpointId = model.GetRedpointId(FairySiegeRedPointType.RankAward);
|
txtNoHasNo1.SetActive(false);
|
model.SelectRank = 1;
|
crossPersonalRank.isOn = true;
|
crossFamilyRank.isOn = false;
|
rankModel.ResetQueryParam();
|
rankModel.QueryCrossRank(FairySiegeActModel.crossRankType, model.operationCrossAct.zoneID);
|
ShowRankPanel();
|
rankModel.onRankRefresh += OnRefreshRankList;
|
GlobalTimeEvent.Instance.secondEvent += secondEvent;
|
personalRankScroller.OnRefreshCell += OnRefreshCell;
|
familyRankScroller.OnRefreshCell += OnRefreshFamilyCell;
|
fairyModel.FamilyActionInfoEvent += UpdateFamilyActionInfoEvent;
|
rankModel.onMyRankRefresh += RankModel_onMyRankRefresh;
|
RoleParticularModel.OnRevPackage += OnPlayerCacheResultEvent;
|
Display();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
OnCreateRankScroller();
|
}
|
|
protected override void OnPreClose()
|
{
|
GlobalTimeEvent.Instance.secondEvent -= secondEvent;
|
rankModel.onRankRefresh -= OnRefreshRankList;
|
personalRankScroller.OnRefreshCell -= OnRefreshCell;
|
familyRankScroller.OnRefreshCell -= OnRefreshFamilyCell;
|
fairyModel.FamilyActionInfoEvent -= UpdateFamilyActionInfoEvent;
|
rankModel.onMyRankRefresh -= RankModel_onMyRankRefresh;
|
RoleParticularModel.OnRevPackage -= OnPlayerCacheResultEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
private void OnPlayerCacheResultEvent(int viewType, int playerID, RoleParticularModel.ViewPlayerData data)
|
{
|
if (playerID != model.no1PlayerIDCross && playerID != model.no1PlayerIDCrossFamily)
|
return;
|
|
ShowNo1Model();
|
}
|
|
private void RankModel_onMyRankRefresh(int type)
|
{
|
if (type == FairySiegeActModel.crossRankType && model.SelectRank == 1)
|
{
|
ShowMyRank();
|
}
|
else if (type == FairySiegeActModel.crossFamilyRankType && model.SelectRank == 2)
|
{
|
ShowMyFamilyRank();
|
}
|
}
|
|
private void ShowMyRank(bool isQuery = false)
|
{
|
var myRank = rankModel.GetMyRank(FairySiegeActModel.crossRankType);
|
int maxRank = 0;
|
if (model.operationCrossAct != null)
|
{
|
maxRank = model.GetMaxRank(model.operationCrossAct.PersonalTemplateID);
|
}
|
|
if (myRank == null)
|
{
|
if (isQuery)
|
{
|
rankModel.QueryCrossRank(FairySiegeActModel.crossRankType, model.operationCrossAct.zoneID, watchID: (int)PlayerDatas.Instance.baseData.PlayerID, forceQuery: true);
|
}
|
myRankTxt.text = Language.Get("L2013", Language.Get("CrossBattleField45"), Language.Get("CrossServer123"));
|
subCount.text = Language.Get("FairySiege120", 0);
|
}
|
else
|
{
|
myRankTxt.text = Language.Get("L2013", Language.Get("CrossBattleField45"), (myRank.index + 1).ToString());
|
subCount.text = Language.Get("FairySiege120", UIHelper.ReplaceLargeNum(model.GetRankPersonalScore(myRank)));
|
}
|
|
//显示下一个目标积分
|
int queryRankIndex = 0; //排名从0开始
|
string queryName = Language.Get("L1046");
|
ulong queryScore = 0;
|
|
var rankInfo = rankModel.GetRankPageDatas(FairySiegeActModel.crossRankType);
|
queryRankIndex = myRank == null ? maxRank - 1 : Math.Max(0, myRank.index - 1);
|
|
if (rankInfo != null)
|
{
|
if (rankInfo.ContainsKey(queryRankIndex))
|
{
|
queryName = rankInfo[queryRankIndex].name1;
|
queryScore = model.GetRankPersonalScore(rankInfo[queryRankIndex]);
|
}
|
}
|
nextRankTxt.text = Language.Get("L2013", Language.Get("AllianceBossRank", queryRankIndex + 1), queryName);
|
nextScore.text = Language.Get("FairySiege120", UIHelper.ReplaceLargeNum(queryScore));
|
}
|
|
private void ShowMyFamilyRank(bool isQuery = false)
|
{
|
//显示下一个目标积分
|
int queryRankIndex = 0; //排名从0开始
|
string queryName = Language.Get("L1046");
|
int queryScore = 0;
|
|
var rankInfo = rankModel.GetRankPageDatas(FairySiegeActModel.crossFamilyRankType);
|
//跨服我的家族排名
|
if (PlayerDatas.Instance.baseData.FamilyId == 0)
|
{
|
myRankTxt.text = Language.Get("L2013", Language.Get("L2024"), Language.Get("CrossServer123"));
|
if (rankInfo != null && rankInfo.Count != 0)
|
{
|
rankInfo.Keys.ToList().Sort();
|
queryRankIndex = rankInfo[rankInfo.Count - 1].index;
|
}
|
}
|
else
|
{
|
var data = rankModel.GetMyRankByID(FairySiegeActModel.crossFamilyRankType, (int)PlayerDatas.Instance.baseData.FamilyId);
|
if (data == null)
|
{
|
if (isQuery)
|
rankModel.QueryCrossRank(FairySiegeActModel.crossFamilyRankType, model.operationCrossAct.zoneID, watchID: (int)PlayerDatas.Instance.baseData.FamilyId, forceQuery: true);
|
myRankTxt.text = Language.Get("L2013", Language.Get("L2024"), Language.Get("CrossServer123"));
|
if (rankInfo != null && rankInfo.Count != 0)
|
{
|
rankInfo.Keys.ToList().Sort();
|
queryRankIndex = rankInfo[rankInfo.Count - 1].index;
|
}
|
}
|
else
|
{
|
myRankTxt.text = Language.Get("L2013", Language.Get("L2024"), (data.index + 1).ToString());
|
queryRankIndex = Math.Max(0, data.index - 1);
|
}
|
}
|
|
if (rankInfo != null)
|
{
|
if (rankInfo.ContainsKey(queryRankIndex))
|
{
|
queryName = rankInfo[queryRankIndex].name1;
|
queryScore = (int)rankInfo[queryRankIndex].cmpValue;
|
}
|
}
|
|
nextRankTxt.text = Language.Get("L2013", Language.Get("AllianceBossRank", queryRankIndex + 1), queryName);
|
nextScore.text = Language.Get("FairySiege120", queryScore);
|
}
|
|
private void OnRefreshRankList(int type)
|
{
|
if (type == FairySiegeActModel.crossRankType && model.SelectRank == 1)
|
{
|
personalRankScroller.m_Scorller.RefreshActiveCellViews();
|
ShowMyRank(true);
|
ShowNo1Info();
|
}
|
else if (type == FairySiegeActModel.crossFamilyRankType && model.SelectRank == 2)
|
{
|
familyRankScroller.m_Scorller.RefreshActiveCellViews();
|
ShowMyFamilyRank(true);
|
ShowNo1Info();
|
}
|
}
|
|
private void OnCreateRankScroller()
|
{
|
personalRankScroller.Refresh();
|
if (model.operationCrossAct != null)
|
{
|
int maxRank = model.GetMaxRank(model.operationCrossAct.PersonalTemplateID);
|
|
for (int i = 1; i < maxRank; i++)
|
{
|
personalRankScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
personalRankScroller.Restart();
|
ShowMyRank();
|
ShowNo1Info();
|
}
|
|
private void OnCreateFamilyRankScroller()
|
{
|
familyRankScroller.Refresh();
|
|
if (model.operationCrossAct != null)
|
{
|
int maxRank = model.GetMaxRank(model.operationCrossAct.FamilyTemplateID);
|
|
for (int i = 1; i < maxRank; i++)
|
{
|
familyRankScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
familyRankScroller.Restart();
|
familyRankScroller.m_Scorller.RefreshActiveCellViews();
|
|
ShowMyFamilyRank();
|
ShowNo1Info();
|
}
|
|
private void QueryFamilySubmitCount()
|
{
|
if (PlayerDatas.Instance.baseData.FamilyId == 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("jiazu_andyshao_0");
|
return;
|
}
|
var pack = new CA408_tagCGQueryFamilyAction();
|
pack.ActionType = 13;
|
pack.FamilyID = PlayerDatas.Instance.baseData.FamilyId;
|
GameNetSystem.Instance.SendInfo(pack);
|
}
|
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<FairySiegeRankPersonalCell>();
|
_cell?.Display(cell.index);
|
rankModel.ListenCrossRankPage(FairySiegeActModel.crossRankType, model.operationCrossAct.zoneID, cell.index);
|
}
|
|
private void OnRefreshFamilyCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<FairySiegeRankFairyCell>();
|
_cell?.Display(cell.index);
|
rankModel.ListenCrossRankPage(FairySiegeActModel.crossFamilyRankType, model.operationCrossAct.zoneID, cell.index);
|
}
|
|
private void Display()
|
{
|
//subCount.text = Language.Get("BossTrial7") + model.submitAllCount;
|
|
//分上榜时间 和 最后展示时间
|
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.ToDisplayTime(), true));
|
}
|
else
|
{
|
//未开启跨服活动
|
actTime.text = StringUtility.Contact(Language.Get("ExpActivity_Text1"), UIHelper.AppendColor(TextColType.Green, model.operationCrossAct.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 = "";
|
}
|
}
|
|
private void ShowRankPanel()
|
{
|
if (model.SelectRank == 1)
|
{
|
tranPersonalNo1.SetActive(true);
|
personalRankObj.SetActive(true);
|
tranFairyNo1.SetActive(false);
|
familyRankObj.SetActive(false);
|
}
|
else
|
{
|
tranPersonalNo1.SetActive(false);
|
personalRankObj.SetActive(false);
|
tranFairyNo1.SetActive(true);
|
familyRankObj.SetActive(true);
|
}
|
}
|
|
private void secondEvent()
|
{
|
if (model.IsResultShowTime)
|
{
|
actTime.text = StringUtility.Contact(Language.Get("L2013", Language.Get("L2014"), model.operationCrossAct.ShowResultTime()), " (", Language.Get("XMZZ110") + ")");
|
}
|
}
|
|
private void SelectCrossPersonalRank(bool value)
|
{
|
if (value)
|
{
|
model.SelectRank = 1;
|
rankModel.ResetQueryParam();
|
rankModel.QueryCrossRank(FairySiegeActModel.crossRankType, model.operationCrossAct.zoneID);
|
OnCreateRankScroller();
|
ShowRankPanel();
|
subCount.text = Language.Get("FairySiege120", 0);
|
}
|
}
|
|
private void SelectCrossFamilyRank(bool value)
|
{
|
if (value)
|
{
|
txtNoHasNo1.SetActive(false);
|
model.SelectRank = 2;
|
rankModel.ResetQueryParam();
|
rankModel.QueryCrossRank(FairySiegeActModel.crossFamilyRankType, model.operationCrossAct.zoneID);
|
OnCreateFamilyRankScroller();
|
ShowRankPanel();
|
subCount.text = Language.Get("FairySiege120", 0);
|
UpdateFamilyActionInfoEvent(0, 0);
|
QueryFamilySubmitCount();
|
}
|
}
|
|
private void UpdateFamilyActionInfoEvent(int familyID, int type)
|
{
|
if (model.SelectRank == 2 && fairyModel.familyActions.ContainsKey((int)PlayerDatas.Instance.baseData.FamilyId)
|
&& fairyModel.familyActions[(int)PlayerDatas.Instance.baseData.FamilyId].ContainsKey(13)
|
&& fairyModel.familyActions[(int)PlayerDatas.Instance.baseData.FamilyId][13].Length > 0)
|
{
|
subCount.text = Language.Get("FairySiege120", fairyModel.familyActions[(int)PlayerDatas.Instance.baseData.FamilyId][13][0].Value1);
|
}
|
}
|
|
private void ShowNo1Info()
|
{
|
RankData personalRankData = null;
|
var personalRankInfo = rankModel.GetRankPageDatas(FairySiegeActModel.crossRankType);
|
if (personalRankInfo != null && personalRankInfo.ContainsKey(0))
|
{
|
personalRankData = personalRankInfo[0];
|
}
|
|
RankData familyRankData = null;
|
var familyRankInfo = rankModel.GetRankPageDatas(FairySiegeActModel.crossFamilyRankType);
|
if (familyRankInfo != null && familyRankInfo.ContainsKey(0))
|
{
|
familyRankData = familyRankInfo[0];
|
}
|
|
if (model.SelectRank == 1 && personalRankData != null)
|
{
|
txtNoHasNo1.SetActive(false);
|
txtNo1FamilyName.SetActive(false);
|
txtNo1FamilyScore.SetActive(false);
|
txtNo1FamilyServerName.SetActive(false);
|
model.no1PlayerIDCross = (int)personalRankData.id;
|
roleParticularModel.ViewCrossPlayerCacheData(model.no1PlayerIDCross); //查询返回显示模型
|
int serverID = UIHelper.GetServerIDByAccount(personalRankData.name2);
|
string serverName = ServerListCenter.Instance.GetServerName(serverID);
|
playerName_1.text = personalRankData.name1;
|
serverName_1.text = Language.Get("Z2002", serverName);
|
score_1.text = Language.Get("L2013", Language.Get("CrossBattleField79"), personalRankData.cmpValue);
|
int playerID = model.GetPlayerId(familyRankData);
|
avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)playerID, (int)personalRankData.value3, (int)personalRankData.value4, personalRankData.subType));
|
}
|
else if (model.SelectRank == 2 && familyRankData != null)
|
{
|
model.no1PlayerIDCrossFamily = (int)familyRankData.id2;
|
txtNoHasNo1.SetActive(false);
|
txtNo1FamilyName.SetActive(true);
|
txtNo1FamilyScore.SetActive(true);
|
txtNo1FamilyServerName.SetActive(true);
|
txtNo1FamilyName.text = familyRankData.name1;
|
txtNo1FamilyScore.text = Language.Get("FairySiege120", UIHelper.ReplaceLargeNum(familyRankData.cmpValue));
|
string serverName = ServerListCenter.Instance.GetServerName((int)familyRankData.value5);
|
txtNo1FamilyServerName.text = Language.Get("Z2002", serverName);
|
emblemCell.InitUI(EmblemHelper.GetOtherEmblemModel((int)familyRankData.value3));
|
|
score_1.text = Language.Get("L2013", Language.Get("CrossBattleField79"), familyRankData.cmpValue);
|
}
|
else
|
{
|
txtNoHasNo1.SetActive(true);
|
txtNo1FamilyName.SetActive(false);
|
txtNo1FamilyScore.SetActive(false);
|
txtNo1FamilyServerName.SetActive(false);
|
int defaultFamilyEmblemId = EmblemHelper.GetDefaultFamilyEmblemId();
|
emblemCell.InitUI(new EmblemModel(defaultFamilyEmblemId, EmblemHelper.GetEmblemEffectID(defaultFamilyEmblemId)));
|
playerName_1.text = Language.Get("L1046");
|
serverName_1.text = "";
|
score_1.text = string.Empty;
|
txtNo1FamilyServerName.text = "";
|
txtNo1FamilyScore.text = "";
|
txtNo1FamilyName.text = Language.Get("L1046");
|
avatarCell.InitUI(AvatarHelper.GetDefaultAvatarModel());
|
}
|
|
ShowNo1Model();
|
}
|
|
private void ShowNo1Model()
|
{
|
player3DModel_1.SetActive(false);
|
int playerID = 0;
|
if (model.SelectRank == 1)
|
{
|
playerID = model.no1PlayerIDCross;
|
}
|
else if (model.SelectRank == 2)
|
{
|
playerID = model.no1PlayerIDCrossFamily;
|
}
|
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;
|
}
|
}
|
}
|