//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, December 11, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using EnhancedUI.EnhancedScroller;
|
|
namespace Snxxz.UI
|
{
|
//积分排名
|
[XLua.Hotfix]
|
public class RankingWin : Window ,SecondWindowInterface
|
{
|
[SerializeField] ScrollerController m_ScrollerController;
|
[SerializeField] Text m_TextMyRank;//我的排名
|
[SerializeField] Text m_TextScores;//我的积分
|
[SerializeField] Text m_NumberText;//赛季
|
|
[SerializeField] GameObject m_DivisionObj;//赛区
|
[SerializeField] Text m_DivisionNameText1;//赛区名
|
[SerializeField] Button m_PullButton1;//拉选按钮
|
[SerializeField] GameObject m_ClickScreenOtherSpace1;
|
[SerializeField] ScrollerController m_ScrollerController1;
|
|
[SerializeField] GameObject m_SeasonObj;//赛季
|
[SerializeField] Text m_DivisionNameText2;//赛季名
|
[SerializeField] Button m_PullButton2;//拉选按钮
|
[SerializeField] GameObject m_ClickScreenOtherSpace2;
|
[SerializeField] ScrollerController m_ScrollerController2;
|
[SerializeField] Text m_Text_A;
|
CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
|
CrossServerOneVsOneRewardModel m_CrossServerRewardModel;
|
CrossServerOneVsOneRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerOneVsOneRewardModel>()); } }
|
private int NeedDanLv = 0;
|
|
#region Built-in
|
|
public Button close { get; set; }
|
|
protected override void BindController()
|
{
|
if (this is SecondWindowInterface)
|
{
|
var frame = this.GetComponentInChildren<SecondFrameLoader>();
|
frame.Create();
|
close = frame.GetComponentInChildren<Button>();
|
}
|
|
m_ScrollerController.OnRefreshCell += OnRefreshGridCell;
|
m_ScrollerController1.OnRefreshCell += OnRefreshGridCell_Z;//赛区
|
m_ScrollerController2.OnRefreshCell += OnRefreshGridCell_S;//赛季
|
var configNum1 = FuncConfigConfig.Get("CrossRealmPKCfg").Numerical1;
|
var _jsonDataC = LitJson.JsonMapper.ToObject(configNum1);
|
if (_jsonDataC.Count > 0)
|
{
|
NeedDanLv = int.Parse(_jsonDataC[1].ToString());
|
}
|
var config = CrossServerArenaConfig.Get(NeedDanLv);
|
if (config != null)
|
{
|
m_Text_A.text = Language.Get("CrossServer121", config.Name);
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
close.AddListener(() => { Close(); });
|
m_PullButton1.AddListener(OnClickPullButton1);
|
m_PullButton2.AddListener(OnClickPullButton2);
|
}
|
|
protected override void OnPreOpen()
|
{
|
SetZoneIDAndSeasonID();
|
ZoneAndSeasonpanel();
|
m_NumberText.text = CrossServerOneVsOnePKSeason.Instance.SeasonID.ToString();
|
m_TextScores.text = CrossServerOneVsOnePlayerInfo.Instance.Score.ToString();
|
SetTextMyRank();
|
SetZoneAndSeasonNum();
|
OnCreateGridLineCell(m_ScrollerController);
|
OnCreateGridLineCell_Z(m_ScrollerController1);
|
OnCreateGridLineCell_S(m_ScrollerController2);
|
m_ScrollerController.JumpIndex(0);
|
}
|
protected override void OnActived()
|
{
|
crossServerRewardModel.ViewCrossPKBillboard(crossServerRewardModel.ZoneID, crossServerRewardModel.SeasonID);//关于赛季查询
|
}
|
protected override void OnAfterOpen()
|
{
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfoEvent;
|
crossServerRewardModel.RankInformationUpdate += RankInformationUpdate;
|
}
|
|
protected override void OnPreClose()
|
{
|
CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfoEvent;
|
crossServerRewardModel.RankInformationUpdate -= RankInformationUpdate;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
#endregion
|
private void RankInformationUpdate()
|
{
|
SetZoneAndSeasonNum();
|
OnCreateGridLineCell(m_ScrollerController);
|
OnCreateGridLineCell_S(m_ScrollerController2);
|
SetTextMyRank();
|
ZoneAndSeasonpanel();
|
m_ScrollerController.JumpIndex(0);
|
|
}
|
private void OnClickPullButton1()
|
{
|
m_ClickScreenOtherSpace1.SetActive(!m_ClickScreenOtherSpace1.activeSelf);
|
}
|
private void OnClickPullButton2()
|
{
|
m_ClickScreenOtherSpace2.SetActive(!m_ClickScreenOtherSpace2.activeSelf);
|
}
|
private void UpdatePlayerInfoEvent()
|
{
|
|
SetTextMyRank();
|
}
|
void OnCreateGridLineCell(ScrollerController gridCtrl)
|
{
|
gridCtrl.Refresh();
|
for (int i = 0; i < 100; i++)
|
{
|
if (i == 0)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Normal, i);
|
continue;
|
}
|
if (i % 2 != 0)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, i);
|
}
|
else
|
{
|
gridCtrl.AddCell(ScrollerDataType.Normal, i);
|
}
|
|
}
|
gridCtrl.Restart();
|
}
|
void OnCreateGridLineCell_Z(ScrollerController gridCtrl)//赛区
|
{
|
gridCtrl.Refresh();
|
for (int i = 0; i < CrossServerOneVsOnePKSeason.Instance.ZoneCount; i++)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, i);
|
}
|
gridCtrl.Restart();
|
}
|
void OnCreateGridLineCell_S(ScrollerController gridCtrl)//赛季
|
{
|
gridCtrl.Refresh();
|
|
|
for (int i = 0; i < CrossServerOneVsOnePKSeason.Instance.ZoneCount; i++)
|
{
|
if (CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].ZoneID == crossServerRewardModel.ZoneID)
|
{
|
var list = CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].SeasonList;
|
for (int j = 0; j < list.Count; j++)
|
{
|
gridCtrl.AddCell(ScrollerDataType.Header, list[j].SeasonID);
|
}
|
}
|
}
|
gridCtrl.Restart();
|
}
|
private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
|
{
|
|
}
|
private void OnRefreshGridCell_Z(ScrollerDataType type, CellView cell)//赛区
|
{
|
int Index = cell.index;
|
Button Btn = cell.GetComponent<Button>();
|
Text txt = cell.transform.Find("Text").GetComponent<Text>();
|
if (Index > CrossServerOneVsOnePKSeason.Instance.ZoneCount)
|
{
|
return;
|
}
|
|
string Name = CrossServerOneVsOnePKSeason.Instance.ZoneIDList[Index].ZoneName;
|
txt.text = UIHelper.ServerStringTrim(Name);
|
int Id = CrossServerOneVsOnePKSeason.Instance.ZoneIDList[Index].ZoneID;
|
Btn.SetListener(() =>
|
{
|
if (crossServerRewardModel.ZoneID == Id)
|
{
|
m_ClickScreenOtherSpace1.SetActive(false);
|
return;
|
}
|
crossServerRewardModel.ZoneID = Id;
|
crossServerRewardModel.ZoneName = UIHelper.ServerStringTrim(Name);
|
int _SeasonID = 1;
|
for (int i = 0; i < CrossServerOneVsOnePKSeason.Instance.ZoneCount; i++)
|
{
|
if (CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].ZoneID == crossServerRewardModel.ZoneID)
|
{
|
var list = CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].SeasonList;
|
int _Index = list.FindIndex(s => s.SeasonID == crossServerRewardModel.SeasonID);
|
if (_Index == -1)
|
{
|
for (int j = 0; j < list.Count; j++)
|
{
|
if (list[j].SeasonID > _SeasonID)
|
{
|
_SeasonID = list[j].SeasonID;
|
}
|
}
|
}
|
else
|
{
|
_SeasonID = crossServerRewardModel.SeasonID;
|
}
|
}
|
}
|
crossServerRewardModel.SeasonID = _SeasonID;
|
m_ClickScreenOtherSpace1.SetActive(false);
|
crossServerRewardModel.ViewCrossPKBillboard(crossServerRewardModel.ZoneID, crossServerRewardModel.SeasonID);//关于赛季查询
|
});
|
|
}
|
private void OnRefreshGridCell_S(ScrollerDataType type, CellView cell)//赛季
|
{
|
int Index = cell.index;
|
Button Btn = cell.GetComponent<Button>();
|
Text txt = cell.transform.Find("Text").GetComponent<Text>();
|
txt.text = Language.Get("CrossServer_Z3") + Index;
|
Btn.SetListener(() =>
|
{
|
if (crossServerRewardModel.SeasonID == Index)
|
{
|
m_ClickScreenOtherSpace2.SetActive(false);
|
return;
|
}
|
crossServerRewardModel.SeasonID = Index;
|
m_ClickScreenOtherSpace2.SetActive(false);
|
crossServerRewardModel.ViewCrossPKBillboard(crossServerRewardModel.ZoneID, crossServerRewardModel.SeasonID);//关于赛季查询
|
});
|
}
|
private void SetTextMyRank()
|
{
|
int danlv = CrossServerOneVsOnePlayerInfo.Instance.DanLV;
|
var config = CrossServerArenaConfig.Get(danlv);
|
if (CrossServerOneVsOnePKSeason.Instance.ZoneID != crossServerRewardModel.ZoneID)
|
{
|
m_TextMyRank.text = Language.Get("CrossServer122");
|
m_TextScores.text= Language.Get("CrossServer122");
|
}
|
else
|
{
|
if (crossServerRewardModel.SeasonID == CrossServerOneVsOnePKSeason.Instance.SeasonID)
|
{
|
m_TextScores.text = CrossServerOneVsOnePlayerInfo.Instance.Score.ToString();
|
if (crossServerRewardModel.MyRank > -1 && crossServerRewardModel.MyRank < 100)
|
{
|
m_TextMyRank.text = (crossServerRewardModel.MyRank + 1).ToString();
|
}
|
else
|
{
|
m_TextMyRank.text = Language.Get("CrossServer123");
|
}
|
}
|
else
|
{
|
CrossServerOneVsOneModel.CrossServerOneVsOneHistory history;
|
if (crossServerModel.TryGetOneVsOneHistory(crossServerRewardModel.SeasonID,out history))
|
{
|
if (history.order > 0 && history.order < 101)
|
{
|
m_TextMyRank.text = history.order.ToString();
|
}
|
else
|
{
|
m_TextMyRank.text = Language.Get("CrossServer123");
|
}
|
m_TextScores.text = history.score.ToString();
|
}
|
|
|
}
|
|
}
|
|
}
|
|
private void SetZoneAndSeasonNum()
|
{
|
m_DivisionNameText1.text = crossServerRewardModel.ZoneName;
|
m_DivisionNameText2.text = Language.Get("CrossServer_Z3") + crossServerRewardModel.SeasonID.ToString();
|
}
|
|
private void SetZoneIDAndSeasonID()//设置赛区和ID
|
{
|
if (crossServerRewardModel.ZoneID == 0)
|
{
|
crossServerRewardModel.ZoneID = CrossServerOneVsOnePKSeason.Instance.ZoneID;
|
}
|
if (crossServerRewardModel.SeasonID == 0)
|
{
|
crossServerRewardModel.SeasonID = CrossServerOneVsOnePKSeason.Instance.SeasonID;
|
}
|
}
|
|
private void ZoneAndSeasonpanel()
|
{
|
if (CrossServerOneVsOnePKSeason.Instance.ZoneCount > 1)//赛区
|
{
|
m_DivisionObj.gameObject.SetActive(true);
|
if (m_ClickScreenOtherSpace1.activeSelf)
|
{
|
m_ClickScreenOtherSpace1.SetActive(false);
|
}
|
}
|
else
|
{
|
m_DivisionObj.gameObject.SetActive(false);
|
|
}
|
bool isBool = false;
|
for (int i = 0; i < CrossServerOneVsOnePKSeason.Instance.ZoneCount; i++)
|
{
|
if (CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].ZoneID == crossServerRewardModel.ZoneID)
|
{
|
var list = CrossServerOneVsOnePKSeason.Instance.ZoneIDList[i].SeasonList;
|
if (list.Count > 1)
|
{
|
isBool = true;
|
}
|
}
|
}
|
if (isBool)//赛季
|
{
|
m_SeasonObj.gameObject.SetActive(true);
|
if (m_ClickScreenOtherSpace2.activeSelf)
|
{
|
m_ClickScreenOtherSpace2.SetActive(false);
|
}
|
}
|
else
|
{
|
m_SeasonObj.gameObject.SetActive(false);
|
}
|
}
|
}
|
|
}
|