少年修仙传客户端代码仓库
Client_PangDeRong
2018-12-22 3dd96830159482252aeb1e3935182a6c8ff8cf31
5398 子 【开发】【1.4】跨服竞技场 ,正在进入跨服时,限制进入副本
2个文件已修改
50 ■■■■ 已修改文件
System/CrossServerOneVsOne/CrossServerArenaWin.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerArenaWin.cs
@@ -21,10 +21,10 @@
        [SerializeField] Button matchRecordBtn;
        [SerializeField] GameObject inSeasonTimeObj;
        [SerializeField] GameObject outSeasonTimeObj;
        CrossServerRewardModel m_CrossServerRewardModel;
        CrossServerRewardModel crossServerRewardModel { get { return m_CrossServerRewardModel ?? (m_CrossServerRewardModel = ModelCenter.Instance.GetModel<CrossServerRewardModel>()); } }
        [SerializeField] GameObject lookPlayerObj;
        [SerializeField] Text lookTimeText;
        CrossServerModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerModel>(); } }
        #region Built-in
        protected override void BindController()
        {
@@ -42,6 +42,7 @@
        {
            SetDisplay();
            TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
            GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
        }
        protected override void OnAfterOpen()
@@ -52,6 +53,7 @@
        protected override void OnPreClose()
        {
            TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
            GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
        }
        protected override void OnAfterClose()
        {
@@ -64,6 +66,7 @@
            UpdateMatchInfo();
            UpdatePKInfo();
            UpdateActivityState();
            UpdateLookPlayerTime();
            seasonTimeText.text = CrossServerPKSeason.Instance.ToDisplaySeasonTime();
            var openTimes = CrossServerPKSeason.Instance.GetActivityTimes();
            openTimeText.gameObject.SetActive(openTimes != null && openTimes.Count > 0);
@@ -86,7 +89,8 @@
                }
                openTimeText.text = Language.Get("CrossServer119", openTimeDes);
            }
            lookPlayerObj.SetActive(crossServerModel.IsMatching);
        }
        private void UpdateMatchInfo()
@@ -111,6 +115,29 @@
        private void UpdateMinute()
        {
            UpdateActivityState();
        }
        private void UpdateSecond()
        {
            UpdateLookPlayerTime();
        }
        private void UpdateLookPlayerTime()
        {
            if (!crossServerModel.IsMatching) return;
            int totalSeconds = Mathf.RoundToInt((float)(DateTime.Now - crossServerModel.matchStartTime).TotalSeconds);
            if(totalSeconds < 3600)
            {
                int minute = totalSeconds / 60;
                int seconds = totalSeconds % 60;
                lookTimeText.text = StringUtility.Contact(minute.ToString("D2"), ":", seconds.ToString("D2"));
            }
            else
            {
                ClickMatch(0);
            }
        }
        private void UpdateActivityState()
@@ -146,7 +173,7 @@
            matchBtn.RemoveAllListeners();
            matchBtn_Text.text = Language.Get("CrossServer109");
            matchBtn_Img.material = MaterialUtility.GetUIDefaultGraphicMaterial();
            if (!crossServerRewardModel.IsOpenMatch)
            if (!crossServerModel.IsMatching)
            {
                matchBtn.AddListener(() => { ClickMatch(1); });
            }
@@ -179,15 +206,16 @@
        private void ClickMatch(int type)
        {
            crossServerModel.SendCrossMatch(type);
            crossServerRewardModel.IsOpenMatch = type == 1? true : false;
            crossServerRewardModel.ResetTime();
            lookPlayerObj.SetActive(type == 1);
            if(type == 1)
            {
                WindowCenter.Instance.Open<MatchWin>();
                crossServerModel.IsMatching = true;
                crossServerModel.matchStartTime = DateTime.Now;
                UpdateLookPlayerTime();
            }
            else
            {
                WindowCenter.Instance.CloseImmediately<MatchWin>();
                crossServerModel.IsMatching = false;
            }
            UpdateActivityState();
        }
System/CrossServerOneVsOne/CrossServerModel.cs
@@ -18,6 +18,9 @@
        public const int CrossServerDataMapId = 32010;
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        public bool IsMatching { get; set;}
        public DateTime matchStartTime { get; set; }
        public override void Init()
        {
            ParseFuncConfig();
@@ -25,6 +28,7 @@
        public void OnBeforePlayerDataInitialize()
        {
            IsMatching = false;
            dungeonModel.updateMissionEvent -= UpdateFBHelp;
            rewardModel.CrossRealmPKAwardStateUpdate -= UpdateDayAwardState;
            CrossServerPlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdateDayAwardState;