示例#1
0
        /// <summary>
        /// Allows the game to run logic such as updating the world,
        /// checking for collisions, gathering input, and playing audio.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        protected override void Update(GameTime gameTime)
        {
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            AGameState state = gameStates.Peek();

            state.Update(gameTime);
            Globals.Camera.Update(gameTime);

            AGameState newState = state.NewState;

            if (state.IsFinished)
            {
                gameStates.Pop();
            }
            if (newState != null)
            {
                state.NewState = null;
                gameStates.Push(newState);
            }
            if (gameStates.Count == 0)
            {
                Exit();                                    // check again after states change
            }
            base.Update(gameTime);
        }
示例#2
0
        public void NewState(GS nextState)
        {
            currentState?.End();
            isStateInit  = false;
            currentState = statesDic[nextState];
#if UNITY_EDITOR
            state = nextState;
#endif
            DomainEvents.Raise <OnGameStateChange>(new OnGameStateChange(nextState));
        }
示例#3
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        AGameState   script  = target as AGameState;
        LoadingState loading = script.GetComponent <LoadingState>();


        if (loading != null && script != null && script != loading && !(script is ExitState))
        {
            string[] panels = FFUtils.BitMaskToUiScenes(loading.panelsToLoad);

            if (panels.Length > 0)
            {
                GUI.changed         = false;
                script.panelsToShow = EditorGUILayout.MaskField("Panels to show", script.panelsToShow, panels);
                if (GUI.changed)
                {
                    EditorUtility.SetDirty(script);
                }
            }
        }
    }