lcy
2025-11-06 09bc892c7283df8757a07b646d5af21ddaa263d1
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);
    }
@@ -131,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;
        }
@@ -159,28 +179,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 +217,7 @@
        currentRecordAction = null;
        recordActionQueue.Clear();
        immediatelyActionList.Clear();
        isForceFinish = false;
    }
    public void SetSpeedRatio(float ratio)