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; private RepoFormUseCase _repoFormUseCase; public bool GameStart { get; set; } #region FSM protected override void OnInit(IFsm procedureOwner) { base.OnInit(procedureOwner); } protected override void OnEnter(IFsm procedureOwner) { base.OnEnter(procedureOwner); GameStart = false; GameEntry.EventNode.OnInit(); GameEntry.CombatNode.OnInit(LevelThemeType.Plain); //GameEntry.EventNode.StartEvent(); _repoFormUseCase = new RepoFormUseCase(); GameEntry.UIRouter.BindUIUseCase(UIFormType.RepoForm, _repoFormUseCase); GameEntry.UIRouter.OpenUI(UIFormType.RepoForm); } 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); } } protected override void OnLeave(IFsm procedureOwner, bool isShutdown) { base.OnLeave(procedureOwner, isShutdown); } #endregion } }