using GameFramework.Fsm; using GameFramework.Procedure; using GeometryTD.Definition; using GeometryTD.UI; using UnityGameFramework.Runtime; namespace GeometryTD.Procedure { public class ProcedureMenu : ProcedureBase { public override bool UseNativeDialog => false; public bool GameStart { get; set; } private MenuFormUseCase _menuFormUseCase; #region FSM protected override void OnInit(IFsm procedureOwner) { base.OnInit(procedureOwner); } protected override void OnEnter(IFsm procedureOwner) { base.OnEnter(procedureOwner); GameStart = false; _menuFormUseCase = new MenuFormUseCase(); GameEntry.UIRouter.BindUIUseCase(UIFormType.MenuForm, _menuFormUseCase); GameEntry.UIRouter.OpenUI(UIFormType.MenuForm); } protected override void OnUpdate(IFsm procedureOwner, float elapseSeconds, float realElapseSeconds) { base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds); if (GameStart) { procedureOwner.SetData("NextSceneId", (int)SceneType.Main); ChangeState(procedureOwner); return; } } protected override void OnLeave(IFsm procedureOwner, bool isShutdown) { GameEntry.UIRouter.CloseUI(UIFormType.MenuForm); _menuFormUseCase = null; base.OnLeave(procedureOwner, isShutdown); } #endregion } }