瀏覽代碼

Merge branch 'master' of 192.168.0.254:BattleSever/WSHCommon

meijun 3 年之前
父節點
當前提交
41669f16a5
共有 1 個文件被更改,包括 33 次插入27 次删除
  1. 33 27
      Common/CommonAI/ZoneClient/ZoneObject.Unit.Status.cs

+ 33 - 27
Common/CommonAI/ZoneClient/ZoneObject.Unit.Status.cs

@@ -554,16 +554,19 @@ namespace CommonAI.ZoneClient
                     //ClientLog.LogError("is_skill_end: true");
                 }
                 OnCDStateChange?.Invoke();
-                if (Data.ActionQueue[CurrentActionID].ShowChargeTimeMS > 0)
-                {
-                    ChargeProgress = 0f;
-                    ChargeTimeMS = 0;
-                    OnChargeStateChange?.Invoke();
-                }
-                else if (ChargeProgress > 0 && ChargeProgress < 1)
-                {
-                    ChargeProgress = 1f;
-                    OnChargeStateChange?.Invoke();
+                if (OnChargeStateChange != null)
+                {
+                    if (Data.ActionQueue[CurrentActionID].ShowChargeTimeMS > 0)
+                    {
+                        ChargeProgress = 0f;
+                        ChargeTimeMS = 0;
+                        OnChargeStateChange.Invoke();
+                    }
+                    else if (ChargeProgress > 0 && ChargeProgress < 1)
+                    {
+                        ChargeProgress = 1f;
+                        OnChargeStateChange.Invoke();
+                    }
                 }
             }
             public byte NextAction()
@@ -667,10 +670,10 @@ namespace CommonAI.ZoneClient
                 this.is_skill_end = true;
                 internal_update(0);
                 OnCDStateChange?.Invoke();
-                if(ChargeProgress > 0 && ChargeProgress < 1)
+                if(OnChargeStateChange != null && ChargeProgress > 0 && ChargeProgress < 1)
                 {
                     ChargeProgress = 1f;
-                    OnChargeStateChange?.Invoke();
+                    OnChargeStateChange.Invoke();
                 }
             }
             internal void Update(int intervalMS)
@@ -682,22 +685,25 @@ namespace CommonAI.ZoneClient
                     SetMutilTime();
                 }
 
-                var aq = Data.ActionQueue[CurrentActionID];
-                if (aq.ShowChargeTimeMS > 0)
-                {
-                    ChargeTimeMS += (uint)intervalMS;
-                    if (ChargeProgress < 1)
-                    {
-                        ChargeProgress = ChargeTimeMS / (float)aq.ShowChargeTimeMS;
-                        if (ChargeProgress > 1) ChargeProgress = 1f;
-                        OnChargeStateChange?.Invoke();
+                if (OnChargeStateChange != null && CurrentActionID >= 0 && CurrentActionID < Data.ActionQueue.Count)
+                {
+                    var aq = Data.ActionQueue[CurrentActionID];
+                    if (aq.ShowChargeTimeMS > 0)
+                    {
+                        ChargeTimeMS += (uint)intervalMS;
+                        if (ChargeProgress < 1)
+                        {
+                            ChargeProgress = ChargeTimeMS / (float)aq.ShowChargeTimeMS;
+                            if (ChargeProgress > 1) ChargeProgress = 1f;
+                            OnChargeStateChange.Invoke();
+                        }
+                    }
+                    else if (ChargeProgress > 0 && ChargeProgress < 1)
+                    {
+                        ChargeProgress = 1f;
+                        OnChargeStateChange.Invoke();
                     }
                 }
-                else if (ChargeProgress > 0 && ChargeProgress < 1)
-                {
-                    ChargeProgress = 1f;
-                    OnChargeStateChange?.Invoke();
-                }
             }
             internal void SetPassTime(int passTime)
             {
@@ -720,6 +726,7 @@ namespace CommonAI.ZoneClient
 
             private void internal_update(int intervalMS)
             {
+                pass_time_ms += intervalMS;
                 if (pass_time_ms >= FullCDTimeMS)
                 {
                     if (percent < 1)
@@ -731,7 +738,6 @@ namespace CommonAI.ZoneClient
                 }
                 else
                 {
-                    pass_time_ms += intervalMS;
                     percent = (float)pass_time_ms / FullCDTimeMS;
                 }
             }