From f6f6bbe9beff5724e4c3fd00bf333ad4e6029fd7 Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期四, 20 十二月 2018 20:30:09 +0800
Subject: [PATCH] 5398 子 【开发】【1.4】跨服竞技场 / 【前端】【1.4】跨服竞技场开发

---
 System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs             |  105 +++++++++++++++++
 System/CrossServerOneVsOne/CrossServerWin.cs                            |    3 
 Utility/EnumHelper.cs                                                   |    2 
 System/Dungeon/DungeonModel.cs                                          |   18 +++
 System/CrossServerOneVsOne/CrossServerArenaWin.cs                       |   36 +++++
 System/CrossServerOneVsOne/CrossServerPlayerInfo.cs                     |    2 
 System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs              |  100 ++++++++++++++++
 Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs |   11 +
 Core/GameEngine/Model/Config/CrossServerArenaConfig.cs                  |   13 +
 System/CrossServerOneVsOne/CrossServerModel.cs                          |    2 
 Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta             |    4 
 System/CrossServerOneVsOne/CrossServerPKSeason.cs                       |   24 +++
 System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs.meta        |   12 ++
 System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs.meta         |   12 ++
 14 files changed, 325 insertions(+), 19 deletions(-)

diff --git a/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs b/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs
index 1dd49fa..8bdccf2 100644
--- a/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs
+++ b/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs
@@ -1,6 +1,6 @@
 锘�//--------------------------------------------------------
 //    [Author]:			绗簩涓栫晫
-//    [  Date ]:		   Wednesday, December 12, 2018
+//    [  Date ]:		   Thursday, December 20, 2018
 //--------------------------------------------------------
 
 using UnityEngine;
@@ -13,8 +13,9 @@
 
 		public int DanLV { get ; private set ; }
 		public string Name { get ; private set; } 
+		public string IconKey { get ; private set; } 
 		public int LVUpScore { get ; private set ; }
-		public string DayAwardList { get ; private set; } 
+		public string DanLVAwardList { get ; private set; } 
 		public string SeasonAwardList { get ; private set; } 
 
 		public override string getKey()
@@ -29,11 +30,13 @@
 			
 				Name = rawContents[1].Trim();
 			
-				LVUpScore=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0; 
+				IconKey = rawContents[2].Trim();
 			
-				DayAwardList = rawContents[3].Trim();
+				LVUpScore=IsNumeric(rawContents[3]) ? int.Parse(rawContents[3]):0; 
 			
-				SeasonAwardList = rawContents[4].Trim();
+				DanLVAwardList = rawContents[4].Trim();
+			
+				SeasonAwardList = rawContents[5].Trim();
             }
             catch (Exception ex)
             {
diff --git a/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta b/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta
index bfb1789..7417413 100644
--- a/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta
+++ b/Core/GameEngine/Model/Config/CrossServerArenaConfig.cs.meta
@@ -1,7 +1,7 @@
 fileFormatVersion: 2
 guid: f10a2faba8659904ab5c13d1a770a7e2
-timeCreated: 1544607874
-licenseType: Free
+timeCreated: 1545293132
+licenseType: Pro
 MonoImporter:
   serializedVersion: 2
   defaultReferences: []
diff --git a/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs b/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs
index 71dede9..4d905a1 100644
--- a/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs
+++ b/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0431_tagTimeTick.cs
@@ -11,7 +11,7 @@
         dungeonModel.UpdateCoolDown((DungeonCoolDownType)vNetData.Type,vNetData.Tick);
         if((DungeonCoolDownType)vNetData.Type == DungeonCoolDownType.WaitStart)
         {
-            var mapId = PlayerDatas.Instance.baseData.MapID;
+            var mapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
             switch (mapId)
             {
                 case HeavenBattleModel.HEAVEBATTLE_MAPID:
@@ -23,7 +23,14 @@
                         WindowCenter.Instance.Open<BattlePrepareCoolDownWin>();
                     }
                     break;
-
+                case CrossServerModel.CrossServerDataMapId:
+                    WindowCenter.Instance.CloseImmediately<DungeonBeginCoolDownWin>();
+                    WindowCenter.Instance.CloseImmediately<DungeonEndCoolDownWin>();
+                    if (!WindowCenter.Instance.IsOpen<BattlePrepareCoolDownWin>())
+                    {
+                        WindowCenter.Instance.Open<BattlePrepareCoolDownWin>();
+                    }
+                    break;
             }
         }
     }

diff --git a/System/CrossServerOneVsOne/CrossServerArenaWin.cs b/System/CrossServerOneVsOne/CrossServerArenaWin.cs
index 77eb9a5..dd6bc07 100644
--- a/System/CrossServerOneVsOne/CrossServerArenaWin.cs
+++ b/System/CrossServerOneVsOne/CrossServerArenaWin.cs
@@ -37,6 +37,7 @@
         protected override void OnPreOpen()
         {
             SetDisplay();
+            TimeMgr.Instance.OnMinuteEvent += UpdateMinute;
         }
 
         protected override void OnAfterOpen()
@@ -46,7 +47,7 @@
 
         protected override void OnPreClose()
         {
-           
+            TimeMgr.Instance.OnMinuteEvent -= UpdateMinute;
         }
         protected override void OnAfterClose()
         {
@@ -60,6 +61,28 @@
             UpdatePKInfo();
             UpdateActivityState();
             seasonTimeText.text = CrossServerPKSeason.Instance.ToDisplaySeasonTime();
+            var openTimes = CrossServerPKSeason.Instance.GetActivityTimes();
+            openTimeText.gameObject.SetActive(openTimes != null && openTimes.Count > 0);
+            if(openTimes != null)
+            {
+                string openTimeDes = string.Empty;
+                for(int i = 0; i < openTimes.Count; i++)
+                {
+                    var openTime = openTimes[i];
+                    string timeDes = StringUtility.Contact(openTime.hourBegin.ToString("D2"), ":", openTime.minuteBegin.ToString("D2")
+                        ,"-",openTime.hourEnd.ToString("D2"),":",openTime.minuteEnd.ToString("D2"));
+                    if(i == 0)
+                    {
+                        openTimeDes = timeDes;
+                    }
+                    else
+                    {
+                        openTimeDes = StringUtility.Contact(openTimeDes,"銆�",timeDes);
+                    }
+                }
+                openTimeText.text = Language.Get("CrossServer119", openTimeDes);
+            }
+         
         }
 
         private void UpdateMatchInfo()
@@ -81,19 +104,24 @@
             sumNumText.text = CrossServerPlayerInfo.Instance.PKCount.ToString();
         }
 
+        private void UpdateMinute()
+        {
+            UpdateActivityState();
+        }
+
         private void UpdateActivityState()
         {
             bool isInTime = CrossServerPKSeason.Instance.InDay(TimeUtility.ServerNow);
-            bool isOpen = false;
+            bool isOpen = CrossServerPKSeason.Instance.InOpenTime();
             matchBtn.RemoveAllListeners();
             if(!isInTime)
             {
-                matchBtn_Text.text = "鍗冲皢寮�鍚�";
+                matchBtn_Text.text = Language.Get("CrossServer111");
                 matchBtn_Img.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
             }
             else
             {
-                matchBtn_Text.text = "寮�濮嬪尮閰�";
+                matchBtn_Text.text = Language.Get("CrossServer109");
                 if(isOpen)
                 {
                     matchBtn_Img.material = MaterialUtility.GetUIDefaultGraphicMaterial();
diff --git a/System/CrossServerOneVsOne/CrossServerModel.cs b/System/CrossServerOneVsOne/CrossServerModel.cs
index bfa41ec..b296641 100644
--- a/System/CrossServerOneVsOne/CrossServerModel.cs
+++ b/System/CrossServerOneVsOne/CrossServerModel.cs
@@ -15,7 +15,7 @@
         public List<CrossServerPkResult> localSaveResults { get; private set; }
         CrossServerRewardModel rewardModel { get { return ModelCenter.Instance.GetModel<CrossServerRewardModel>(); } }
         public event Action UpdateDayAwardsEvent;
-
+        public const int CrossServerDataMapId = 32010;
         public override void Init()
         {
             ParseFuncConfig();
diff --git a/System/CrossServerOneVsOne/CrossServerPKSeason.cs b/System/CrossServerOneVsOne/CrossServerPKSeason.cs
index f80cb38..6daef07 100644
--- a/System/CrossServerOneVsOne/CrossServerPKSeason.cs
+++ b/System/CrossServerOneVsOne/CrossServerPKSeason.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
+using TableConfig;
 
 namespace Snxxz.UI
 {
@@ -30,6 +31,8 @@
         public event Action activityEndEvent;
         private bool inDateNotify = false;
         private bool stepDateNotify = false;
+        public  const int dailyQuestId = 21;
+        DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
 
         public CrossServerPKSeason()
         {
@@ -40,6 +43,14 @@
         private void BeforePlayerDataInitializeEvent()
         {
            
+        }
+
+        public List<HourMinute> GetActivityTimes()
+        {
+            DailyQuestOpenTime _openTime = null;
+            dailyQuestModel.TryGetOpenTime(dailyQuestId, out _openTime);
+            var dayOfWeek = (int)TimeUtility.ServerNow.DayOfWeek;
+            return _openTime != null ? _openTime.GetHourMinuteByWeek(dayOfWeek) : null;
         }
 
         private void SecondEvent()
@@ -90,6 +101,13 @@
             return date >= StartDate && date <= EndDate;
         }
 
+        public bool InOpenTime()
+        {
+            DailyQuestOpenTime _openTime = null;
+            dailyQuestModel.TryGetOpenTime(dailyQuestId, out _openTime);
+           return _openTime != null && _openTime.InOpenTime();
+        }
+
         public int IndexOfDays(DateTime time)
         {
             if (!InDay(time))
@@ -105,17 +123,17 @@
             if(!StartDate.Equals(default(OperationDate))
                 && InDay(TimeUtility.ServerNow))
             {
-                return ToDisplayTime(StartDate,EndDate);
+                return Language.Get("CrossServer106", ToDisplayTime(StartDate, EndDate));
             }
             else
             {
                 if(NextStartDate.Equals(default(OperationDate)))
                 {
-                    return "鏁鏈熷緟";
+                    return Language.Get("107",Language.Get("CrossServer108"));
                 }
                 else
                 {
-                    return ToDisplayTime(NextStartDate,NextEndDate);
+                    return Language.Get("CrossServer107", ToDisplayTime(NextStartDate, NextEndDate));
                 }
             }
         }
diff --git a/System/CrossServerOneVsOne/CrossServerPlayerInfo.cs b/System/CrossServerOneVsOne/CrossServerPlayerInfo.cs
index 58e9770..8e99031 100644
--- a/System/CrossServerOneVsOne/CrossServerPlayerInfo.cs
+++ b/System/CrossServerOneVsOne/CrossServerPlayerInfo.cs
@@ -85,7 +85,7 @@
 
         public string DisplayWinningRate()
         {
-            float rate = (float)WinCount / PKCount;
+            float rate = PKCount != 0 ? (float)WinCount / PKCount : 0;
             return StringUtility.Contact((float)Math.Round(rate,1),"%");
         }
 
diff --git a/System/CrossServerOneVsOne/CrossServerWin.cs b/System/CrossServerOneVsOne/CrossServerWin.cs
index f01034a..5d4d4ee 100644
--- a/System/CrossServerOneVsOne/CrossServerWin.cs
+++ b/System/CrossServerOneVsOne/CrossServerWin.cs
@@ -20,6 +20,7 @@
         [SerializeField] Text rankText;
         [SerializeField] Text curScoreText;
         [SerializeField] Text honorText;
+        [SerializeField] Image rankImg;
         [SerializeField] Slider scoreSlider;
         [SerializeField] Text scorePerText;
         [SerializeField] GameObject danLvUpObj;
@@ -90,7 +91,7 @@
 
             var arenaConfig = Config.Instance.Get<CrossServerArenaConfig>(playerInfo.DanLV);
             rankText.text = arenaConfig.Name;
-
+            rankImg.SetSprite(arenaConfig.IconKey);
         }
 
         private void UpdateScore()
diff --git a/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs b/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs
new file mode 100644
index 0000000..f669a4a
--- /dev/null
+++ b/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs
@@ -0,0 +1,105 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Wednesday, September 13, 2017
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+
+    public class DungeonPlayerLeaveCoolDownWin : Window
+    {
+        [SerializeField]
+        Transform m_CoolDownContainer;
+
+        [SerializeField]
+        Text m_CoolDown;
+        DateTime beginTime = DateTime.Now;
+
+        DungeonModel m_Model;
+        DungeonModel model {
+            get {
+                return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DungeonModel>());
+            }
+        }
+        int coolTime = -1;
+        #region Built-in
+        protected override void BindController()
+        {
+        }
+
+        protected override void AddListeners()
+        {
+        }
+
+        protected override void OnPreOpen()
+        {
+            coolTime = -1;
+            beginTime = model.GetCoolDownEndTime(DungeonCoolDownType.PlayerLeave);
+            model.dungeonCoolDownEvent += OnBeginTimeEvent;
+        }
+
+        protected override void OnAfterOpen()
+        {
+        }
+
+        protected override void OnPreClose()
+        {
+            model.dungeonCoolDownEvent -= OnBeginTimeEvent;
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+        #endregion
+
+
+        private void OnBeginTimeEvent(DungeonCoolDownType _type)
+        {
+            if (_type != DungeonCoolDownType.PlayerLeave)
+            {
+                return;
+            }
+
+            beginTime = model.GetCoolDownEndTime(_type);
+        }
+
+        protected override void LateUpdate()
+        {
+            base.LateUpdate();
+
+            if (beginTime > DateTime.Now)
+            {
+                var surplusTime =Mathf.Clamp((int)(beginTime - DateTime.Now).TotalSeconds,0,int.MaxValue);
+                if (coolTime != surplusTime)
+                {
+                    coolTime = surplusTime;
+                    m_CoolDown.text = Language.Get("CrossServer118",surplusTime);
+                }
+                if (!m_CoolDownContainer.gameObject.activeInHierarchy)
+                {
+                    m_CoolDownContainer.gameObject.SetActive(true);
+                }
+            }
+            else
+            {
+                if (m_CoolDownContainer.gameObject.activeInHierarchy)
+                {
+                    m_CoolDownContainer.gameObject.SetActive(false);
+                }
+            }
+
+        }
+
+    }
+
+}
+
+
+
+
diff --git a/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs.meta b/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs.meta
new file mode 100644
index 0000000..8be5dcf
--- /dev/null
+++ b/System/CrossServerOneVsOne/DungeonPlayerLeaveCoolDownWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 06957814b0967e2408ce1f18ed6ea6d1
+timeCreated: 1545298190
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs b/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs
new file mode 100644
index 0000000..18b73ec
--- /dev/null
+++ b/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs
@@ -0,0 +1,100 @@
+锘�//--------------------------------------------------------
+//    [Author]:           绗簩涓栫晫
+//    [  Date ]:           Wednesday, September 13, 2017
+//--------------------------------------------------------
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+
+    public class DungeonWaitPlayerCoolDownWin : Window
+    {
+        [SerializeField]
+        Transform m_CoolDownContainer;
+
+        [SerializeField]
+        Text m_CoolDown;
+        DateTime beginTime = DateTime.Now;
+
+        DungeonModel m_Model;
+        DungeonModel model {
+            get {
+                return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<DungeonModel>());
+            }
+        }
+
+        #region Built-in
+        protected override void BindController()
+        {
+        }
+
+        protected override void AddListeners()
+        {
+        }
+
+        protected override void OnPreOpen()
+        {
+            beginTime = model.GetCoolDownEndTime(DungeonCoolDownType.WaitPlayer);
+            model.dungeonCoolDownEvent += OnBeginTimeEvent;
+        }
+
+        protected override void OnAfterOpen()
+        {
+        }
+
+        protected override void OnPreClose()
+        {
+            model.dungeonCoolDownEvent -= OnBeginTimeEvent;
+        }
+
+        protected override void OnAfterClose()
+        {
+        }
+        #endregion
+
+
+        private void OnBeginTimeEvent(DungeonCoolDownType _type)
+        {
+            if (_type != DungeonCoolDownType.WaitPlayer)
+            {
+                return;
+            }
+
+            beginTime = model.GetCoolDownEndTime(_type);
+        }
+
+        protected override void LateUpdate()
+        {
+            base.LateUpdate();
+
+            if (beginTime > DateTime.Now)
+            {
+                var surplusTime =Mathf.Clamp((int)(beginTime - DateTime.Now).TotalSeconds,0,int.MaxValue);
+                m_CoolDown.text = surplusTime.ToString();
+                if (!m_CoolDownContainer.gameObject.activeInHierarchy)
+                {
+                    m_CoolDownContainer.gameObject.SetActive(true);
+                }
+            }
+            else
+            {
+                if (m_CoolDownContainer.gameObject.activeInHierarchy)
+                {
+                    m_CoolDownContainer.gameObject.SetActive(false);
+                }
+            }
+
+        }
+
+    }
+
+}
+
+
+
+
diff --git a/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs.meta b/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs.meta
new file mode 100644
index 0000000..92c8866
--- /dev/null
+++ b/System/CrossServerOneVsOne/DungeonWaitPlayerCoolDownWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 8e5a4e30b66e6fc41973e7aceb0ef6bf
+timeCreated: 1545297371
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/System/Dungeon/DungeonModel.cs b/System/Dungeon/DungeonModel.cs
index 8fe20b6..df7fbaf 100644
--- a/System/Dungeon/DungeonModel.cs
+++ b/System/Dungeon/DungeonModel.cs
@@ -686,6 +686,8 @@
                 switch (_type)
                 {
                     case DungeonCoolDownType.WaitStart:
+                    case DungeonCoolDownType.WaitPlayer:
+                    case DungeonCoolDownType.PlayerLeave:
                         dungeonFightStage = DungeonFightStage.Prepare;
                         break;
                     case DungeonCoolDownType.TowerTake:
@@ -701,6 +703,22 @@
                         dungeonFightStage = DungeonFightStage.ElderGodAreaNearDead;
                         break;
                 }
+
+                switch(_type)
+                {
+                    case DungeonCoolDownType.WaitPlayer:
+                        if(!WindowCenter.Instance.IsOpen<DungeonWaitPlayerCoolDownWin>())
+                        {
+                            WindowCenter.Instance.Open<DungeonWaitPlayerCoolDownWin>();
+                        }
+                        break;
+                    case DungeonCoolDownType.PlayerLeave:
+                        if (!WindowCenter.Instance.IsOpen<DungeonPlayerLeaveCoolDownWin>())
+                        {
+                            WindowCenter.Instance.Open<DungeonPlayerLeaveCoolDownWin>();
+                        }
+                        break;
+                }
             }
 
             if (_type == DungeonCoolDownType.WaitStart)
diff --git a/Utility/EnumHelper.cs b/Utility/EnumHelper.cs
index 3e83573..f318022 100644
--- a/Utility/EnumHelper.cs
+++ b/Utility/EnumHelper.cs
@@ -344,6 +344,8 @@
     FBAddTime = 6,
     ElderGodAreaDeadTime = 7,//鍙ょ绂佸湴鍊掕鏃�
     PickUpTime = 8,//鍓湰鎹¤澶囧�掕鏃�
+    WaitPlayer = 9, //绛夊緟瀵规墜鍊掕鏃�
+    PlayerLeave = 10, //瀵规墜鎺夌嚎鍊掕鏃�
 }
 
 /// <summary>

--
Gitblit v1.8.0