//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 Jiang Yin. All rights reserved. // Homepage: https://gameframework.cn/ // Feedback: mailto:ellan@gameframework.cn //------------------------------------------------------------ using GameFramework.Event; using UnityGameFramework.Runtime; using ProcedureOwner = GameFramework.Fsm.IFsm; namespace MetaClient { public class ProcedureMenu : ProcedureBase { private bool m_StartGame = false; private MenuForm m_MenuForm = null; public override bool UseNativeDialog { get { return false; } } public void StartGame() { m_StartGame = true; } protected override void OnEnter(ProcedureOwner procedureOwner) { base.OnEnter(procedureOwner); GameEntry.Event.Subscribe(OpenUIFormSuccessEventArgs.EventId, OnOpenUIFormSuccess); m_StartGame = false; GameEntry.UI.OpenUIForm(UIFormId.MenuForm, this); } protected override void OnLeave(ProcedureOwner procedureOwner, bool isShutdown) { base.OnLeave(procedureOwner, isShutdown); GameEntry.Event.Unsubscribe(OpenUIFormSuccessEventArgs.EventId, OnOpenUIFormSuccess); if (m_MenuForm != null) { m_MenuForm.Close(isShutdown); m_MenuForm = null; } } protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds) { base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds); if (m_StartGame) { procedureOwner.SetData("NextSceneId", GameEntry.Config.GetInt("Scene.Main")); procedureOwner.SetData("GameMode", (byte)GameMode.Survival); ChangeState(procedureOwner); } } private void OnOpenUIFormSuccess(object sender, GameEventArgs e) { OpenUIFormSuccessEventArgs ne = (OpenUIFormSuccessEventArgs)e; if (ne.UserData != this) { return; } m_MenuForm = (MenuForm)ne.UIForm.Logic; } } }