//--------------------------------------------------------  
 | 
//    [Author]:           第二世界  
 | 
//    [  Date ]:           Tuesday, December 11, 2018  
 | 
//--------------------------------------------------------  
 | 
  
 | 
using System;  
 | 
using System.Collections;  
 | 
using System.Collections.Generic;  
 | 
using UnityEngine;  
 | 
using UnityEngine.UI;  
 | 
using EnhancedUI.EnhancedScroller;  
 | 
  
 | 
namespace vnxbqy.UI  
 | 
{  
 | 
    //积分排名  
 | 
      
 | 
    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<SecondFrameLoader2>();  
 | 
                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.SetActive(true);  
 | 
                if (m_ClickScreenOtherSpace1.activeSelf)  
 | 
                {  
 | 
                    m_ClickScreenOtherSpace1.SetActive(false);  
 | 
                }  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                m_DivisionObj.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.SetActive(true);  
 | 
                if (m_ClickScreenOtherSpace2.activeSelf)  
 | 
                {  
 | 
                    m_ClickScreenOtherSpace2.SetActive(false);  
 | 
                }  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                m_SeasonObj.SetActive(false);  
 | 
            }  
 | 
        }  
 | 
    }  
 | 
  
 | 
}  
 | 
  
 | 
  
 | 
  
 | 
  
 |