public override void InitializeLevelManager(LevelManagerViewModel levelManager) { levelManager.GameOver = false; //this can be disabled andd restarted when game is over/restarted //generate asteroid every x seconds Observable.Interval(TimeSpan.FromMilliseconds(1000)).Subscribe(x => { var asteroid = AsteroidController.CreateAsteroid(); asteroid.Destroy.Subscribe(_ => { levelManager.Asteroids.Remove(asteroid); }); levelManager.Asteroids.Add(asteroid); }); //we should not chage the gameover property from outside of the level manager ! //we should make a game over computed property which will determine if the game is over levelManager.PlayerProperty .Where(player => player != null) .Subscribe(player => player.IsAliveProperty.Where(isAlive => !isAlive).Subscribe(_ => { levelManager.GameOver = true; })) .DisposeWith(levelManager); }
/// <summary> /// This is a single image sprite that rotates /// and move at a constant speed in a fixed direction /// </summary> private void SetupAsteroid() { asteroidController.LoadImages(Content); asteroidController.CreateAsteroid(); }