Example #1
0
 public IObservable <Unit> Execute()
 {
     return(WaitForRoundStart()
            .ContinueWith(Observable.Merge(
                              _inputController.OnPlayerFired()
                              .Where(_ => _lastTimeFired < Time.time)
                              .Do(_ => FireMissile())
                              .Do(_ => _lastTimeFired = Time.time + cooldownSeconds),
                              _inputController.OnPlayerMovedLeft().Do(_ => _playerView.MoveLeft()),
                              _inputController.OnPlayerMovedRight().Do(_ => _playerView.MoveRight())
                              ))
            .TakeUntil(DeathOrRoundEnd())
            .DoOnCompleted(() => _viewProvider.Return(_playerView)));
 }