From b9ae79116a9e419b28c38f1c84016ec7938afefa Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期二, 30 九月 2025 18:13:23 +0800
Subject: [PATCH] 125 战斗 1.快速结束战斗失效的问题 2.角色UI高过外部UI的问题 3.战斗伤害消失的问题

---
 Main/System/Battle/RecordPlayer/RecordPlayer.cs |   41 ++++++++++++++++++++++++++++++-----------
 1 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index 8d1ca4b..2d26c5f 100644
--- a/Main/System/Battle/RecordPlayer/RecordPlayer.cs
+++ b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -17,6 +17,8 @@
 
     private float speedRatio = 1.5f;
 
+    private bool isForceFinish = false;
+
     public void Init(BattleField _battleField)
     {
         Release();
@@ -33,6 +35,11 @@
     public void PlayRecord(RecordAction recordAction)
     {
         BattleDebug.LogError("Enqueue record action " + recordAction.GetType());
+        if (isForceFinish)
+        {
+            recordAction.ForceFinish();
+            return;
+        }
         recordActionQueue.Enqueue(recordAction);
     }
 
@@ -46,6 +53,12 @@
 
     public void InsertRecord(RecordAction recordAction)
     {
+        if (isForceFinish)
+        {
+            recordAction.ForceFinish();
+            return;
+        }
+
         BattleDebug.LogError("Insert record action " + recordAction.GetType());
         if (currentRecordAction != null)
         {
@@ -65,6 +78,11 @@
 
     public void ImmediatelyPlay(RecordAction recordAction)
     {
+        if (isForceFinish)
+        {
+            recordAction.ForceFinish();
+            return;
+        }
         immediatelyActionList.Add(recordAction);
     }
 
@@ -159,28 +177,28 @@
 
     }
 
+
     public void HaveRest()
     {
-        while (IsPlaying())
-        {
-            ForceFinish();
-        }
+        ForceFinish();
     }
 
     public void ForceFinish()
     {
-        for (int i = 0; i < immediatelyActionList.Count; i++)
+        isForceFinish = true;
+        for (int i = immediatelyActionList.Count - 1; i >= 0; i--)
         {
-            immediatelyActionList[i].ForceFinish();
+            var action = immediatelyActionList[i];
+            action.ForceFinish();
+            immediatelyActionList.Remove(action);
         }
 
-        immediatelyActionList.Clear();
-
-        if (currentRecordAction != null)
+        while (currentRecordAction != null)
         {
-            currentRecordAction.ForceFinish();
+            var temp = currentRecordAction;
+            currentRecordAction = null;
+            temp.ForceFinish();
         }
-        currentRecordAction = null;
 
         while (recordActionQueue.Count > 0)
         {
@@ -197,6 +215,7 @@
         currentRecordAction = null;
         recordActionQueue.Clear();
         immediatelyActionList.Clear();
+        isForceFinish = false;
     }
 
     public void SetSpeedRatio(float ratio)

--
Gitblit v1.8.0