Пример #1
0
    public IEnumerator ChangeStateCoroutine(InGameState gameState)
    {
        m_changingState = true;

        //game states
        ClientState currentState = null;
        ClientState newState     = null;

        if (m_clientGameState != InGameState.DEFAULT)
        {
            GetState(m_clientGameState);
        }

        if (gameState != InGameState.DEFAULT)
        {
            //get new state
            newState = GetState(gameState);
        }

        //Debug.Log("States Fetched");

        if (currentState != null)
        {
            //transittion from old state
            yield return(StartCoroutine(currentState.OnExit()));
        }

        //Debug.Log("Exited state");

        if (newState != null)
        {
            //transittion into new state
            yield return(StartCoroutine(newState.OnEnter()));
        }

        //Debug.Log("entered state");

        m_clientGameState = gameState;

        m_changingState = false;

        yield return(null);
    }