public static GameStateBase GetStateByType(GameStateType targetStateType) { GameStateBase result = null; foreach (GameStateBase gameState in _gameStates) { if (gameState.StateType == targetStateType) { result = gameState; break; } } return(result); }
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); }
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); }
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); }