void PushMenuStateOnStack()
 {
     if (BibaSceneStack.Contains(NextMenuState))
     {
         return;
     }
     BibaSceneStack.Push(NextMenuState);
 }
示例#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);
                }
            }
        }