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