using GameFramework.Fsm; using GameFramework.Procedure; using GeometryTD.Definition; using UnityGameFramework.Runtime; namespace GeometryTD.Procedure { public class ProcedureMenu : ProcedureBase { public override bool UseNativeDialog => false; 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.ShopNode.OnInit(); GameEntry.UIRouter.OpenUI(UIFormType.TestMenuForm); } 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; } GameEntry.CombatNode.OnUpdate(elapseSeconds, realElapseSeconds); } protected override void OnLeave(IFsm procedureOwner, bool isShutdown) { GameEntry.CombatNode.OnShutdown(); base.OnLeave(procedureOwner, isShutdown); } #endregion } }