private void CoinAdded(LevelRootViewModel levelRoot, CoinViewModel coin) { coin.PickUp.Subscribe(_ => { levelRoot.Coins.Remove(coin); }); }
private void NewPlayer(LevelRootViewModel levelRoot, CharacterViewModel player) { player.IsAliveProperty .Where(isAlive => isAlive == false) .Subscribe(_ => this.ExecuteCommand(levelRoot.LoseGame)) .DisposeWhenChanged(levelRoot.PlayerProperty); player.FinishReached.Subscribe(_ => this.ExecuteCommand(levelRoot.WinGame)); }
public override void InitializeLevelRoot(LevelRootViewModel levelRoot) { levelRoot._CoinsProperty .Where(c => c.Action == NotifyCollectionChangedAction.Add) .Select(c => c.NewItems[0] as CoinViewModel) .Subscribe(coin => CoinAdded(levelRoot, coin)); levelRoot.PlayerProperty .Where(player => player != null) .Subscribe(player => NewPlayer(levelRoot, player)); }
public override void FinishCurrentLevel(LevelRootViewModel viewModel) { base.FinishCurrentLevel(viewModel); //Simple scene transition. Publish(new UnloadSceneCommand() { SceneName = viewModel.CurrentLevel.LevelScene }); Publish(new LoadSceneCommand() { SceneName = "MainMenuScene" }); }
public override void InitializeLevelRoot(LevelRootViewModel viewModel) { base.InitializeLevelRoot(viewModel); }
public virtual void FinishCurrentLevel(LevelRootViewModel viewModel) { }
public virtual void InitializeLevelRoot(LevelRootViewModel viewModel) { // This is called when a LevelRootViewModel is created viewModel.FinishCurrentLevel.Action = this.FinishCurrentLevelHandler; LevelRootViewModelManager.Add(viewModel); }
public override void Restart(LevelRootViewModel levelRoot) { base.Restart(levelRoot); GameManager.TransitionLevel<LevelSceneManager>(scenemanager => { }, "Assets"); }
public virtual void WinGame(LevelRootViewModel levelRoot) { }
public virtual void Restart(LevelRootViewModel levelRoot) { }
public virtual void LoseGame(LevelRootViewModel levelRoot) { }
public abstract void InitializeLevelRoot(LevelRootViewModel levelRoot);