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 |   94 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 77 insertions(+), 17 deletions(-)

diff --git a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
index 9e21eea..c4ee7c8 100644
--- a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -1,35 +1,95 @@
 using UnityEngine;
 using System.Collections.Generic;
+using Cysharp.Threading.Tasks;
 
 public class DeathRecordAction : RecordAction
 {
+    protected List<HB422_tagMCTurnFightObjDead> deadPackList = new List<HB422_tagMCTurnFightObjDead>();
 
-	public DeathRecordAction(BattleField _battleField, BattleObject _battleObj)
-		: base(RecordActionType.Death, _battleField, _battleObj)
-	{
-		isFinish = false;
-		isRunOnce = false;
-	}
-
-	public override bool IsFinished()
-	{
-		return isFinish;
-	}
+    public DeathRecordAction(BattleField _battleField, List<HB422_tagMCTurnFightObjDead> _deadPackList)
+        : base(RecordActionType.Death, _battleField, null)
+    {
+        deadPackList = _deadPackList;
+    }
 
 
     public override void Run()
     {
-        if (isRunOnce)
+        if (isFinish)
         {
-        	return;
+            return;
         }
+
         base.Run();
-        isRunOnce = true;
-        battleObject.OnDeath(OnDeathAnimationEnd);
+
+        if (!isRunOnce)
+        {
+            isRunOnce = true;
+            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);
+                if (null != deadObj)
+                {
+                    PerformDrop(deadObj);
+                    deadObj.OnDeath(() =>
+                    {
+                        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()
+    public override void ForceFinish()
     {
-    	isFinish = true;
+        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();
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0