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/RecordPlayer/RecordPlayer.cs | 43 +++++++++++++++++++++++++++++++++++--------
1 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index d0c1c33..1281256 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);
}
@@ -88,7 +106,10 @@
for (int i = removeIndexList.Count - 1; i >= 0; i--)
{
- immediatelyActionList.RemoveAt(removeIndexList[i]);
+ int index = removeIndexList[i];
+ if (index < 0 || index >= immediatelyActionList.Count)
+ continue;
+ immediatelyActionList.RemoveAt(index);
}
}
}
@@ -128,10 +149,12 @@
if (currentRecordAction != null && currentRecordAction.IsFinished())
{
+ var guid = currentRecordAction.GetBattleFieldGuid();
BattleDebug.LogError("record action " + currentRecordAction.GetType() + " play finished");
currentRecordAction = null;
isWaitingNextAction = true;
waitTimer = 0f;
+ EventBroadcast.Instance.Broadcast<string>(EventName.RECORDPLAYER_END, guid);
return;
}
@@ -156,6 +179,7 @@
}
+
public void HaveRest()
{
ForceFinish();
@@ -163,18 +187,20 @@
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)
{
@@ -191,6 +217,7 @@
currentRecordAction = null;
recordActionQueue.Clear();
immediatelyActionList.Clear();
+ isForceFinish = false;
}
public void SetSpeedRatio(float ratio)
--
Gitblit v1.8.0