public bool PerformTransition(GameModeStateType targetState) { if (!CurrentGameModeState.CheckTransition(targetState)) { Debug.LogWarning(targetState + " is currently not a valid state."); return(false); } bool result = false; GameModeStateBase state = GetStateByType(targetState); if (state != null) { SetState(CurrentGameModeState, state); result = true; } else { Debug.LogError(targetState + " mode object is missing."); } return(result); }
private void SetState(StateBase currentState, StateBase newState) { ScreenStateBase screenState = newState as ScreenStateBase; GameModeStateBase gameModeState = newState as GameModeStateBase; if (currentState != null) { currentState.Deactivate(); } if (screenState != null) { //CurrentScreenState.Deactivate(); CurrentScreenState = screenState; CurrentScreenState.Activate(); if (ScreenStateChanged != null) { ScreenStateChanged(screenState.State); } // Debugging _screen = CurrentScreenState.State; } else if (gameModeState != null) { //CurrentGameModeState.Deactivate(); CurrentGameModeState = gameModeState; CurrentGameModeState.Activate(); // Debugging _gameMode = CurrentGameModeState.State; } //Debug.Log("Changed from " + currentState + " to " + newState); }