public StateSequencer(IGameStateUseCase gameStateUseCase, ReadyView readyView, DrawView drawView, AttackView attackView, DamageView damageView, ClearView clearView, FailView failView) { _states = new List <BaseState> { readyView, drawView, attackView, damageView, clearView, failView, }; _disposable = new CompositeDisposable(); _tokenSource = new CancellationTokenSource(); foreach (var state in _states) { state.InitAsync(_tokenSource.Token).Forget(); } _gameStateUseCase = gameStateUseCase; _gameStateUseCase.GameState() .Subscribe(gameState => { Reset(gameState); TickAsync(gameState, _tokenSource.Token).Forget(); }) .AddTo(_disposable); }
private void ShowReadyScreen() { _readyView = new ReadyView(); _readyView.Clicked += new EventHandler(_readyView_Clicked); _page.LayoutRoot.Children.Add(_readyView); _gameModel.SetState(new ReadyState(_gameModel)); }