Exemplo n.º 1
0
        void ProcessPopupMenuState()
        {
            var lastMenuState = BibaSceneStack.Peek();

            //Fullscreen SceneMenuState -> Popup SceneMenuState or ObjectMenuState
            if (lastMenuState.FullScreen)
            {
                PushMenuStateSignal.Dispatch(NextMenuState);
            }
            //Popup SceneMenuState or ObjectMenuState -> Popup SceneMenuState or ObjectMenuState
            else
            {
                ReplaceMenuStateSignal.Dispatch(NextMenuState);
            }
        }
Exemplo n.º 2
0
        void ProcessFullScreenMenuState()
        {
            if (BibaSceneStack.Count == 0)
            {
                SwitchSceneMenuStateSignal.Dispatch(NextMenuState);
                return;
            }

            var lastMenuState = BibaSceneStack.Peek();

            if (lastMenuState == NextMenuState)
            {
                throw new Exception("Should not be able to transit to the same state.");
            }

            if (lastMenuState.FullScreen)
            {
                //Last MenuState is a Fullscreen SceneMenuState

                //Fullscreen SceneMenuState -> FullScreen SceneMenuState
                SwitchSceneMenuStateSignal.Dispatch(NextMenuState);
            }
            else
            {
                //Last MenuState is a Popup SceneMenuState or ObjectMenuState

                //Popup SceneMenuState or ObjectMenuState -> FullScreen SceneMenuState
                if (BibaSceneStack.Contains(NextMenuState))
                {
                    PopMenuStateSignal.Dispatch(NextMenuState);
                }
                else
                {
                    SwitchSceneMenuStateSignal.Dispatch(NextMenuState);
                }
            }
        }