public override void NextWaveReady(WavesFPSGameViewModel wavesFPSGame) { base.NextWaveReady(wavesFPSGame); WavesGame.WaveKills = 0; WavesGame.CurrentWave++; WavesGame.KillsToNextWave += _NumberOfEnemiesMultiplier; WavesGame.SpawnWaitSeconds = Mathf.RoundToInt(WavesGame.SpawnWaitSeconds * _SpawnWaitMultiplier); WavesGame.EnemiesSpawned = 0; }
public override void Spawn(WavesFPSGameViewModel wavesFPSGame) { base.Spawn(wavesFPSGame); if (WavesGame.EnemiesSpawned < wavesFPSGame.KillsToNextWave) { //Debug.Log("Spawn" + wavesFPSGame.KillsToNextWave); SpawnEnemy(); WavesGame.EnemiesSpawned++; } }
protected override void InitializeViewModel(ViewModel viewModel) { base.InitializeViewModel(viewModel); WavesFPSGameViewModel wavesFPSGame = ((WavesFPSGameViewModel)(viewModel)); wavesFPSGame.WaveKills = this._WaveKills; wavesFPSGame.KillsToNextWave = this._KillsToNextWave; wavesFPSGame.CurrentWave = this._CurrentWave; wavesFPSGame.SpawnWaitSeconds = this._SpawnWaitSeconds; wavesFPSGame.EnemiesSpawned = this._EnemiesSpawned; }
public override void InitializeWavesFPSGame(WavesFPSGameViewModel wavesFPSGame) { Debug.Log("Waves Game Initialized"); LocalPlayer.DiedAsObservable.Subscribe(wavesFPSGame.PlayerDied).DisposeWith(wavesFPSGame); //// Bind the local players death to the command //wavesFPSGame.CurrentPlayerProperty.First().Subscribe(player => // player.DiedAsObservable.Subscribe(wavesFPSGame.PlayerDied).DisposeWith(wavesFPSGame) // ); wavesFPSGame.WavesStateProperty .Subscribe(s => StateChanged(wavesFPSGame, s)) .DisposeWith(wavesFPSGame); ExecuteCommand(wavesFPSGame.NextWaveReady); }
private void StateChanged(WavesFPSGameViewModel wavesFPSGame, State state) { if (state is Wave) { Observable.Interval(TimeSpan.FromSeconds(wavesFPSGame.SpawnWaitSeconds)) .Take(wavesFPSGame.KillsToNextWave) .Select(_ => Unit.Default) .Subscribe(wavesFPSGame.Spawn); } else if (state is WaitForNextWave) { Observable.Timer(TimeSpan.FromSeconds(3)) .Subscribe(_ => ExecuteCommand(wavesFPSGame.NextWaveReady)); } else if (state is GameOver) { wavesFPSGame.Enemies.Clear(); } }
private void StateChanged(WavesFPSGameViewModel wavesFPSGame, State state) { if (state is Wave) { Observable.Interval(TimeSpan.FromSeconds(wavesFPSGame.SpawnWaitSeconds)) .Take(wavesFPSGame.KillsToNextWave) .Select(_ => Unit.Default) .Subscribe(wavesFPSGame.Spawn); } else if (state is WaitForNextWave) { Observable.Timer(TimeSpan.FromSeconds(3)) .Subscribe(_ => ExecuteCommand(wavesFPSGame.NextWaveReady)); } else if (state is GameOver) { _NumberOfEnemiesAtStart = 2; _NumberOfEnemiesMultiplier = 2; _SpawnWait = 5f; _SpawnWaitMultiplier = 0.9f; //WavesGame.CurrentWave = 1; wavesFPSGame.Enemies.Clear(); } }
public virtual void Spawn(WavesFPSGameViewModel wavesFPSGame) { }
public virtual void NextWaveReady(WavesFPSGameViewModel wavesFPSGame) { }
public virtual void Retry(WavesFPSGameViewModel wavesFPSGame) { }
public virtual void PlayerDied(WavesFPSGameViewModel wavesFPSGame) { }
public abstract void InitializeWavesFPSGame(WavesFPSGameViewModel wavesFPSGame);
public override void Spawn(WavesFPSGameViewModel wavesFPSGame) { base.Spawn(wavesFPSGame); SpawnEnemy(); WavesGame.EnemiesSpawned++; }