示例#1
0
        public static GameStateBase GetStateByType(GameStateType targetStateType)
        {
            GameStateBase result = null;

            foreach (GameStateBase gameState in _gameStates)
            {
                if (gameState.StateType == targetStateType)
                {
                    result = gameState;
                    break;
                }
            }
            return(result);
        }
示例#2
0
        private static bool AddStartingState(GameStateBase startingState)
        {
            foreach (GameStateBase state in _gameStates)
            {
                if (state.StateType == startingState.StateType)
                {
                    return(false);
                }
            }

            _gameStates.Add(startingState);
            CurrentState = startingState;
            CurrentState.Activate();
            return(true);
        }
示例#3
0
        public static bool PerformTransition(GameStateType targetStateType)
        {
            if (!CurrentState.IsValidTargetState(targetStateType))
            {
                return(false);
            }

            GameStateBase state = GetStateByType(targetStateType);

            if (state == null)
            {
                return(false);
            }

            CurrentState.Deactivate();
            CurrentState = state;
            CurrentState.Activate();

            return(true);
        }
示例#4
0
        public static bool PerformTransition(GameStateType targetStateType)
        {
            if (CurrentState.IsValidTargetState(targetStateType) == false)
            {
                Debug.Log(CurrentState);
                Debug.Log(UnityEngine.SceneManagement.SceneManager.GetActiveScene().name);

                return(false);
            }

            GameStateBase state = GetStateByType(targetStateType);

            if (state == null)
            {
                return(false);
            }

            CurrentState.Deactivate();
            CurrentState = state;
            CurrentState.Activate();

            return(true);
        }