yyl
46 分钟以前 816583635872810b17aa69bb6b23924236b53154
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)