From 09bc892c7283df8757a07b646d5af21ddaa263d1 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期四, 06 十一月 2025 18:22:34 +0800
Subject: [PATCH] 164 天子的考验-客户端

---
 Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs |   76 +++++++++++++++++++++++++-------------
 1 files changed, 50 insertions(+), 26 deletions(-)

diff --git a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
index 0e6a4a0..c4ee7c8 100644
--- a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -9,18 +9,17 @@
     public DeathRecordAction(BattleField _battleField, List<HB422_tagMCTurnFightObjDead> _deadPackList)
         : base(RecordActionType.Death, _battleField, null)
     {
-        isFinish = false;
         deadPackList = _deadPackList;
-    }
-
-    public override bool IsFinished()
-    {
-        return isFinish;
     }
 
 
     public override void Run()
     {
+        if (isFinish)
+        {
+            return;
+        }
+
         base.Run();
 
         if (!isRunOnce)
@@ -29,43 +28,68 @@
             bool isLastOne = false;
             int index = 0;
             int total = deadPackList.Count;
+
+            bool canFind = true;
+
             foreach (var deadPack in deadPackList)
             {
                 BattleObject deadObj = battleField.battleObjMgr.GetBattleObject((int)deadPack.ObjID);
-                deadObj.OnDeath(() =>
+                if (null != deadObj)
                 {
-                    index++;
-
-                    isLastOne = index >= total;
-
-                    OnDeathAnimationEnd(deadObj);
-
-                    if (isLastOne)
+                    PerformDrop(deadObj);
+                    deadObj.OnDeath(() =>
                     {
-                        UniTaskExtension.DelayTime((GameObject)null, 0.3f / battleField.speedRatio, () =>
+                        index++;
+
+                        isLastOne = index >= total;
+
+                        if (isLastOne)
                         {
+                            // UniTaskExtension.DelayTime((GameObject)null, 0.3f / battleField.speedRatio, () =>
+                            // {
                             isFinish = true;
-                        });
-                    }
-                });
+                            // });
+                        }
+                    });
+                }
+                else
+                {
+                    canFind = false;
+                }
             }
+
+            if (!canFind)
+            {
+                isFinish = true;
+            }
+
             return;
         }
-
     }
 
-    private void OnDeathAnimationEnd(BattleObject deadObj)
+    public override void ForceFinish()
+    {
+        isFinish = true;
+
+        //  鐩存帴缁撴潫
+        foreach (var deadPack in deadPackList)
+        {
+            BattleObject deadObj = battleField.battleObjMgr.GetBattleObject((int)deadPack.ObjID);
+            if (null != deadObj)
+            {
+                PerformDrop(deadObj);
+            }
+        }
+
+        base.ForceFinish();
+    }
+
+    private void PerformDrop(BattleObject deadObj)
     {
         //  鍙湁涓荤嚎鎺夎惤鐗╁搧
         if (battleField.MapID == 1 || battleField.MapID == 2)
         {
             deadObj.PerformDrop();
         }
-    }
-    
-    public override void ForceFinish()
-    {
-        //  璁剧疆缁撴潫flag 璁板緱娓呯┖motionBase閲岀殑浜嬩欢
-        base.ForceFinish();
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0