From f94112a6427fa69d3e244e49eb677ec7fb94e0d6 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期六, 13 四月 2019 10:40:51 +0800
Subject: [PATCH] 6498 【前端】【2.0】主界面技能转盘修改

---
 System/MainWin/MainWinSkillController.cs |  133 +++++++++++++++++++++++++++----------------
 1 files changed, 83 insertions(+), 50 deletions(-)

diff --git a/System/MainWin/MainWinSkillController.cs b/System/MainWin/MainWinSkillController.cs
index 4984e15..a6e8335 100644
--- a/System/MainWin/MainWinSkillController.cs
+++ b/System/MainWin/MainWinSkillController.cs
@@ -8,6 +8,8 @@
     {
         const int SKILL_COUNT_MAX = 7;
 
+        public bool enable { get; set; }
+
         public readonly LogicStruct<SkillCD> skillcd0 = new LogicStruct<SkillCD>();
         public readonly LogicStruct<SkillCD> skillcd1 = new LogicStruct<SkillCD>();
         public readonly LogicStruct<SkillCD> skillcd2 = new LogicStruct<SkillCD>();
@@ -29,6 +31,7 @@
         public readonly LogicBool forbidxp = new LogicBool();
 
         Dictionary<int, int> skillPlaceMap = new Dictionary<int, int>();
+        Dictionary<int, int> placeSkillMap = new Dictionary<int, int>();
 
         SkillModel model { get { return ModelCenter.Instance.GetModel<SkillModel>(); } }
 
@@ -42,6 +45,50 @@
 
             StatusMgr.OnGainCantCastSkillStatus += OnGainCantCastSkillStatus;
             StatusMgr.OnReleaseCantCastSkillStatus += OnReleaseCantCastSkillStatus;
+        }
+
+        public void InitSkill()
+        {
+            skillPlaceMap.Clear();
+            placeSkillMap.Clear();
+            for (int i = 0; i < SKILL_COUNT_MAX; i++)
+            {
+                var skillData = PlayerDatas.Instance.skill.GetQuickSkillByPos(i);
+                placeSkillMap[i + 1] = skillData != null ? skillData.id : 0;
+                if (skillData != null)
+                {
+                    skillPlaceMap[skillData.id] = i + 1;
+                }
+            }
+
+            var blinkSkill = PlayerDatas.Instance.skill.GetSKillById(190);
+            placeSkillMap[0] = blinkSkill != null ? blinkSkill.id : 0;
+            if (blinkSkill != null)
+            {
+                skillPlaceMap[blinkSkill.id] = 0;
+            }
+
+            var skillXpId = model.GetXpSkillID();
+            var skillXpData = PlayerDatas.Instance.skill.GetSKillById(skillXpId);
+            placeSkillMap[8] = skillXpData != null ? skillXpData.id : 0;
+            if (skillXpData != null)
+            {
+                skillPlaceMap[skillXpId] = 8;
+            }
+
+            if (PlayerDatas.Instance.hero != null)
+            {
+                foreach (var skillId in skillPlaceMap.Keys)
+                {
+                    var skill = PlayerDatas.Instance.hero.SkillMgr.Get(skillId);
+                    if (skill != null)
+                    {
+                        UpdateSkillExclusiveCountDown(skillId, skill.cd, skill.skillInfo.config.CoolDownTime * Constants.F_GAMMA);
+                    }
+                }
+            }
+
+            UpdateSkillForbidStates();
         }
 
         public void Reset()
@@ -67,6 +114,7 @@
             forbidxp.value = false;
 
             skillPlaceMap.Clear();
+            placeSkillMap.Clear();
         }
 
         public LogicStruct<SkillCD> GetSkillCD(int index)
@@ -125,30 +173,35 @@
 
         private void OnSkillRefresh()
         {
-            skillPlaceMap.Clear();
-            for (int i = 0; i < SKILL_COUNT_MAX; i++)
-            {
-                var skillData = PlayerDatas.Instance.skill.GetQuickSkillByPos(i);
-                if (skillData != null)
-                {
-                    skillPlaceMap[skillData.id] = i + 1;
-                }
-            }
-
-            var blinkSkill = PlayerDatas.Instance.skill.GetSKillById(190);
-            if (blinkSkill != null)
-            {
-                skillPlaceMap[blinkSkill.id] = 0;
-            }
-
-            var skillXpId = model.GetXpSkillID();
-            if (skillXpId != 0)
-            {
-                skillPlaceMap[skillXpId] = 8;
-            }
+            InitSkill();
         }
 
         private void OnSkillCDRefresh(int skillId, float cd, float total)
+        {
+            UpdateSkillExclusiveCountDown(skillId, cd, total);
+        }
+
+        private void OnSkillStateEnter(float time)
+        {
+            UpdateSkillCommonCountDown(time);
+        }
+
+        private void OnSkillStateEnd()
+        {
+            UpdateSkillCommonCountDown(0);
+        }
+
+        private void OnGainCantCastSkillStatus(float duration)
+        {
+            UpdateSkillForbidStates();
+        }
+
+        private void OnReleaseCantCastSkillStatus()
+        {
+            UpdateSkillForbidStates();
+        }
+
+        private void UpdateSkillExclusiveCountDown(int skillId, float cd, float total)
         {
             if (skillPlaceMap.ContainsKey(skillId))
             {
@@ -158,40 +211,20 @@
             }
         }
 
-        private void OnSkillStateEnter(float time)
+        private void UpdateSkillCommonCountDown(float time)
         {
-            Debug.Log("OnSkillStateEnter");
             for (int i = 0; i <= 8; i++)
             {
-                var skillcd = GetSkillCD(i);
-                skillcd.value = skillcd.value.SetCommonCountDown(time);
+                if (placeSkillMap.ContainsKey(i) && placeSkillMap[i] != 0)
+                {
+                    var skillcd = GetSkillCD(i);
+                    skillcd.value = skillcd.value.SetCommonCountDown(time);
+                }
             }
         }
 
-        private void OnSkillStateEnd()
+        private void UpdateSkillForbidStates()
         {
-            Debug.Log("OnSkillStateEnd");
-            for (int i = 0; i <= 8; i++)
-            {
-                var skillcd = GetSkillCD(i);
-                skillcd.value = skillcd.value.SetCommonCountDown(0);
-            }
-        }
-
-        private void OnGainCantCastSkillStatus(float duration)
-        {
-            Debug.Log("OnGainCantCastSkillStatus");
-            var forbid = !StatusMgr.Instance.CanCastSkill(PlayerDatas.Instance.baseData.PlayerID);
-            for (int i = 0; i <= 8; i++)
-            {
-                var skillForbid = GetSkillForbid(i);
-                skillForbid.value = forbid;
-            }
-        }
-
-        private void OnReleaseCantCastSkillStatus()
-        {
-            Debug.Log("OnReleaseCantCastSkillStatus");
             var forbid = !StatusMgr.Instance.CanCastSkill(PlayerDatas.Instance.baseData.PlayerID);
             for (int i = 0; i <= 8; i++)
             {
@@ -242,12 +275,12 @@
             {
                 if (exclusiveOverTime > Time.realtimeSinceStartup)
                 {
-                    return exclusiveOverTime - Time.realtimeSinceStartup / exclusiveTotal;
+                    return (exclusiveOverTime - Time.realtimeSinceStartup) / exclusiveTotal;
                 }
 
                 if (commonOverTime > Time.realtimeSinceStartup)
                 {
-                    return commonOverTime - Time.realtimeSinceStartup / commonTotal;
+                    return (commonOverTime - Time.realtimeSinceStartup) / commonTotal;
                 }
 
                 return 0f;

--
Gitblit v1.8.0