Exemplo n.º 1
0
        /// <summary>
        /// Enter a new game state.
        /// </summary>
        /// <param name="newGameStateInstance">The new game state instance.</param>
        protected void EnterGameState(GameStateInstance newGameStateInstance)
        {
            // Stop game state change coroutine
            if (enterGameStateCoroutine != null)
            {
                StopCoroutine(enterGameStateCoroutine);
            }

            // Update the game state
            currentGameState = newGameStateInstance.gameState;

            // Freeze time if applicable
            if (newGameStateInstance.freezeTimeOnEntry)
            {
                Time.timeScale      = 0;
                AudioListener.pause = true;
            }
            else
            {
                Time.timeScale      = 1;
                AudioListener.pause = false;
            }

            SetCursorVisible(newGameStateInstance.showCursor);

            if (newGameStateInstance.centerCursorAtStart)
            {
                CenterCursor();
            }

            SetCursorLock(newGameStateInstance.lockCursor);

            // Call event
            onEnteredGameState.Invoke(newGameStateInstance.gameState);
        }
Exemplo n.º 2
0
        IEnumerator PauseBeforeEntryCoroutine(float pause, GameStateInstance nextState)
        {
            enteringState = true;
            yield return(new WaitForSeconds(pause));

            enteringState = false;
            EnterGameState(nextState);
        }