private void OnStateChanged(GameState oldState, GameState newState) { if (newState is WinState || newState is GameOverState) { WinScreen.Init(Instance.ProgressionManager.Mana); WinScreen.Show(true); } else { WinScreen.Show(false); } if (oldState == null) { MissionProgressUI.Init(Gamefield.GameMode); } }
public void Init() { //Debug.Log("Init"); _currentState = null; ChuzzleMover.Instance = new ChuzzleMover(); PowerUpAnalyzeState = new PowerUpAnalyzeState(this); CreateState = new CreateState(this); RemoveState = new DeleteState(this); GameOverState = new GameOverState(this); WinState = new WinState(this); FieldState = new FieldState(this); GameMode = GameModeFactory.CreateGameMode(LevelDescription.Condition.GameMode); if (!ManaManagerSystem) { ManaManagerSystem = FindObjectOfType<ManaManager>(); } ManaManagerSystem.Reset(); ManaManagerSystem.TargetPoints = GameMode.TargetPoints; GameMode.Init(this); Level.Gamefield = this; Level.InitFromFile(LevelDescription.Field); //Level.Gamefield.transform.localScale = Vector3.zero; //iTween.ScaleTo(Level.Gamefield.gameObject, Vector3.one, 0.5f); AddEventHandlers(); InvokeGameStarted(); if (CenterCameraOnField.Instance) { CenterCameraOnField.Instance.CenterCameraOnChuzzles(Level.Chuzzles,true); } SwitchStateTo(PowerUpAnalyzeState); }
protected virtual void FireStateChanged(GameState oldState, GameState newState) { var handler = StateChanged; if (handler != null) { handler(oldState, newState); } }
public void SwitchStateTo(GameState newState) { var prevState = _currentState; //Debug.Log("Old state: "+_currentState); if (_currentState != null) { _currentState.OnExit(); } _currentState = newState; _currentStateName = newState.ToString(); //Debug.Log("Switch to: " + _currentState); _currentState.OnEnter(); FireStateChanged(prevState, newState); }