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