| 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.StartBattle(() => | 
|         { | 
|             if (1 == battleField.MapID) | 
|             { | 
|                 //  主线不播战斗开始 | 
|                 StartBattleCallback(); | 
|                 return; | 
|             } | 
|   | 
|             battleField.battleRootNode.SetSortingOrder(); | 
|             battleField.battleRootNode.battleStartNode.SetActive(true); | 
|   | 
|             UniTaskExtension.DelayTime((GameObject)null, 1f, () => | 
|             { | 
|                 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() | 
|     { | 
|         //正常开始之后到界面出现之前都点不了 所以这边不用强制完成 接口留着 | 
|   | 
|         base.ForceFinish(); | 
|         // 完成就开始显示UI | 
|   | 
|     } | 
| } |