using UnityEngine;
|
using System.Collections.Generic;
|
|
public class BattleStartAction : RecordAction
|
{
|
private bool isRun = false;
|
|
public BattleStartAction(BattleField _battleField)
|
: base(RecordActionType.BattleStart, _battleField, null)
|
{
|
|
}
|
|
public override bool IsFinished()
|
{
|
return isFinish;
|
}
|
|
|
public override void Run()
|
{
|
base.Run();
|
|
if (isRun)
|
return;
|
|
// 隐藏部分UI
|
EventBroadcast.Instance.Broadcast(EventName.DISPLAY_BATTLE_UI, battleField.guid, false);
|
|
// battleField.battleRootNode.SetSortingOrder();
|
battleField.StartBattle(() =>
|
{
|
if (1 == battleField.MapID)
|
{
|
// 主线不播战斗开始
|
StartBattleCallback();
|
return;
|
}
|
|
battleField.battleRootNode.battleStartNode.SetActive(true);
|
|
UniTaskExtension.DelayTime((GameObject)null, 1f, () =>
|
{
|
if (battleField ==null|| battleField.battleRootNode == null|| battleField.battleRootNode.battleStartNode == null)
|
{
|
return;
|
}
|
battleField.battleRootNode.battleStartNode.SetActive(false);
|
StartBattleCallback();
|
});
|
});
|
|
isRun = true;
|
}
|
|
private void StartBattleCallback()
|
{
|
isFinish = true;
|
EventBroadcast.Instance.Broadcast(EventName.DISPLAY_BATTLE_UI, battleField.guid, true);
|
battleField.DistributeNextPackage();
|
}
|
|
public override void ForceFinish()
|
{
|
if (!isRun)
|
{
|
isRun = true;
|
UniTaskExtension.DelayTime((GameObject)null, 1f, () =>
|
{
|
if (battleField ==null|| battleField.battleRootNode == null|| battleField.battleRootNode.battleStartNode == null)
|
{
|
return;
|
}
|
battleField.battleRootNode.battleStartNode.SetActive(false);
|
StartBattleCallback();
|
});
|
}
|
|
if (isFinish)
|
return;
|
|
// 这里无法强制执行 必须等待isFinish = true
|
|
}
|
}
|