public CardSetViewModel() { CardCells = new ReactiveList <CardViewModel>(); RefreshCards = ReactiveCommand.CreateFromObservable(() => HeartstoneRestService.Instance.GetCardSet("Basic"), null, RxApp.MainThreadScheduler); RefreshCards.ThrownExceptions.Subscribe(HandleRefreshCardsException); RefreshCards.BindTo(this, vm => vm.CardList); this.WhenAnyValue(vm => vm.CardList).Where(cards => cards != null).Subscribe(UpdateCells); }
// Use this for initialization void Start() { Manager = FindObjectOfType <GameManager>(); BuyHealthUpgrade = new ReactiveCommand(Manager.CashReactive.Select(cash => cash >= Manager.CurrentHealthUpgradeCost())); BuyHealthUpgrade.BindTo(Healthupgrade); Healthupgrade.OnClickAsObservable().Subscribe(_ => { AudioSingleton.Instance.playSounds(SoundTypes.ShopMenu); Manager.OnUpgradeHealth(); }).AddTo(gameObject); BuyDamageUpgrade = new ReactiveCommand(Manager.CashReactive.Select(cash => cash >= Manager.CurrentDamageUpgradeCost())); BuyDamageUpgrade.BindTo(DamageUpgraderade); DamageUpgraderade.OnClickAsObservable().Subscribe(_ => { AudioSingleton.Instance.playSounds(SoundTypes.ShopMenu); Manager.OnUpgradeDamage(); }).AddTo(gameObject); BuyHeal = new ReactiveCommand(Manager.CashReactive.Select(cash => cash >= Manager.HealCost)); BuyHeal.BindTo(Heal); Heal.OnClickAsObservable().Subscribe(_ => { AudioSingleton.Instance.playSounds(SoundTypes.ShopMenu); Manager.OnHeal(); }).AddTo(gameObject); BuyTurretUpgrade = new ReactiveCommand(Manager.CashReactive.Select(cash => cash >= Manager.TurretUpgradeCostReactive.Value)); BuyTurretUpgrade.BindTo(UpgradeTurret); UpgradeTurret.OnClickAsObservable().Subscribe(_ => { AudioSingleton.Instance.playSounds(SoundTypes.ShopMenu); Manager.OnTurretUpgrade(); }).AddTo(gameObject); Manager.HealthUpgradeCostReactive.Subscribe(val => HealthUpgradeCost.text = val.ToString()) .AddTo(gameObject); Manager.NumberOfHealthUpgradesReactive.Subscribe(val => NumberOfHealthUpgrades.text = val.ToString()) .AddTo(gameObject); Manager.DamageUpgradeCostReactive.Subscribe(val => DamageUpgradeCost.text = val.ToString()) .AddTo(gameObject); Manager.NumberOfDamageUpgradesReactive.Subscribe(val => NumberOfDamageUpgrades.text = val.ToString()) .AddTo(gameObject); Manager.TurretLevelReactive.Subscribe(val => NumberOfTurretUpgrades.text = val.ToString()) .AddTo(gameObject); Manager.TurretUpgradeCostReactive.Subscribe(val => TurretUpgradeCost.text = val.ToString()) .AddTo(gameObject); HealCost.text = Manager.HealCost.ToString(); Manager.RoundReactiveProperty.Subscribe(lvl => { NumberOfWaves.text = "Wave:" + lvl; }); }
// Use this for initialization void Start() { _cardSlots = new Dictionary <Players, CardSlotsView>(); _cardSlots.Add(Players.Top, TopSlots); _cardSlots.Add(Players.Bottom, BottomSlots); _scores = new Dictionary <Players, ReactiveProperty <int> >(); _scores.Add(Players.Top, new ReactiveProperty <int>(0)); _scores.Add(Players.Bottom, new ReactiveProperty <int>(0)); _topPlayerFsm.Player = Players.Top; _bottomPlayerFsm.Player = Players.Bottom; _playerFsMs = new Dictionary <Players, PlayerFsm>(); _playerFsMs.Add(Players.Top, _topPlayerFsm); _playerFsMs.Add(Players.Bottom, _bottomPlayerFsm); TopPlayerEndTurn = new ReactiveCommand(_topPlayerFsm.CurrentStateReactiveProperty .Select(state => state.ID == PlayerFSMStates.PlayerTurn && !TopSlots.MaxedOut)); TopPlayerStand = new ReactiveCommand(_topPlayerFsm.CurrentStateReactiveProperty .Select(state => state.ID == PlayerFSMStates.PlayerTurn && !TopSlots.MaxedOut)); BottomPlayerEndTurn = new ReactiveCommand(_bottomPlayerFsm.CurrentStateReactiveProperty .Select(state => state.ID == PlayerFSMStates.PlayerTurn && !BottomSlots.MaxedOut)); BottomPlayerStand = new ReactiveCommand(_bottomPlayerFsm.CurrentStateReactiveProperty .Select(state => state.ID == PlayerFSMStates.PlayerTurn & !BottomSlots.MaxedOut)); TopPlayerEndTurn.BindTo(UiView.TopPlayerEndTurn); TopPlayerStand.BindTo(UiView.TopPlayerStand); BottomPlayerEndTurn.BindTo(UiView.BottomPlayerEndTurn); BottomPlayerStand.BindTo(UiView.BottomPlayerStand); TopPlayerEndTurn.Subscribe(_ => EndPlayerTurn()); TopPlayerStand.Subscribe(_ => Stand()); BottomPlayerEndTurn.Subscribe(_ => EndPlayerTurn()); BottomPlayerStand.Subscribe(_ => Stand()); _topPlayerFsm.CurrentStateReactiveProperty.Subscribe(val => { Debug.Log("Tops state changed to: " + val); }); _bottomPlayerFsm.CurrentStateReactiveProperty.Subscribe(val => { Debug.Log("Bottoms state changed to: " + val); }); _scores[Players.Top].Subscribe(score => UiView.TopPlayerScoreText = score); _scores[Players.Bottom].Subscribe(score => UiView.BottomPlayerScoreText = score); _scores[Players.Top].Merge(_scores[Players.Bottom]).Subscribe(_ => EvaluateEndGame()); SetupFsmSubscriptions(_topPlayerFsm); SetupFsmSubscriptions(_bottomPlayerFsm); _topPlayerFsm.SetStartingState(PlayerFSMStates.PlayerTurn); _currentPlayer = Players.Top; Debug.Log("Tops starting state set to: " + PlayerFSMStates.PlayerTurn); _bottomPlayerFsm.SetStartingState(PlayerFSMStates.OtherPlayerTurn); Debug.Log("Bottoms starting state set to: " + PlayerFSMStates.PlayerTurn); }
public GamesViewModel(ISelectionCollectionHelper<IGameItemViewModel> items) { if (items == null) throw new ArgumentNullException(nameof(items)); Games = items; _openBrowse = ReactiveCommand.CreateAsyncTask( async x => await RequestAsync(new OpenWebLink(ViewType.Browse, Games.SelectedItem.Slug)) .ConfigureAwait(false)) .DefaultSetup("OpenWeb"); _changeGame = ReactiveCommand.CreateAsyncTask( async x => await RequestAsync(new ChangeGame(((IGameItemViewModel) x).Id)).ConfigureAwait(false)) .DefaultSetup("ChangeGame"); _changeGame.BindTo(this, x => x.Game); _configureGameDirectory = ReactiveCommand.CreateAsyncTask( async x => await OpenScreenCached(new GetSettings {SelectGameTab = true}) .ConfigureAwait(false)) .DefaultSetup("Configure Game Directory"); this.WhenActivated(d => { d(this.WhenAnyValue(x => x.Games.SelectedItem) .Where(x => x != null) .ObserveOnMainThread() .InvokeCommand(_changeGame)); d(Listen<ApiGameSelected>() .Select(x => Games.Items.Find(x.Game.Id)) .ObserveOnMainThread() .BindTo(this, x => x.Games.SelectedItem)); d(Listen<GameSettingsUpdated>() .Select(x => new {x, Game = Games.Items.Find(x.Game.Id)}) .ObserveOnMainThread() .Subscribe(x => { if (x.x.Game.InstalledState.IsInstalled && x.Game == null) { var item = x.x.Game.MapTo<GameItemViewModel>(); Games.Items.Add(item); if (Games.Items.Count == 1) Games.SelectedItem = item; } else if (!x.x.Game.InstalledState.IsInstalled && x.Game != null) Games.Items.Remove(x.Game); })); }); }
// Use this for initialization void Start() { Manager = FindObjectOfType <GameManager>(); BuyHealthUpgrade = new ReactiveCommand(Manager.CashReactive.Select(cash => cash >= Manager.CurrentHealthUpgradeCost())); BuyHealthUpgrade.BindTo(Healthupgrade); Healthupgrade.OnClickAsObservable().Subscribe(_ => { Manager.OnUpgradeHealth(); }).AddTo(gameObject); BuyDamageUpgrade = new ReactiveCommand(Manager.CashReactive.Select(cash => cash >= Manager.CurrentDamageUpgradeCost())); BuyDamageUpgrade.BindTo(DamageUpgraderade); DamageUpgraderade.OnClickAsObservable().Subscribe(_ => { Manager.OnUpgradeDamage(); }).AddTo(gameObject); BuyHeal = new ReactiveCommand(Manager.CashReactive.Select(cash => cash >= Manager.HealCost)); BuyHeal.BindTo(Heal); Heal.OnClickAsObservable().Subscribe(_ => { Manager.OnHeal(); }).AddTo(gameObject); BuyTurretUpgrade = new ReactiveCommand(Manager.CashReactive.Select(cash => cash >= Manager.TurretUpgradeCostReactive.Value)); BuyTurretUpgrade.BindTo(UpgradeTurret); UpgradeTurret.OnClickAsObservable().Subscribe(_ => { Manager.OnTurretUpgrade(); }).AddTo(gameObject); Manager.HealthUpgradeCostReactive.Subscribe(val => HealthUpgradeCost.text = val.ToString()) .AddTo(gameObject); Manager.NumberOfHealthUpgradesReactive.Subscribe(val => NumberOfHealthUpgrades.text = val.ToString()) .AddTo(gameObject); Manager.DamageUpgradeCostReactive.Subscribe(val => DamageUpgradeCost.text = val.ToString()) .AddTo(gameObject); Manager.NumberOfDamageUpgradesReactive.Subscribe(val => NumberOfDamageUpgrades.text = val.ToString()) .AddTo(gameObject); Manager.TurretLevelReactive.Subscribe(val => NumberOfTurretUpgrades.text = val.ToString()) .AddTo(gameObject); Manager.TurretUpgradeCostReactive.Subscribe(val => TurretUpgradeCost.text = val.ToString()) .AddTo(gameObject); HealCost.text = Manager.HealCost.ToString(); }
public void Initialize() { _closableParent = _closableParent ?? gameObject; _animationStrategy = CreateAnimationStrategy(); _onViewOpen = new Subject <Unit>().AddTo(Disposer); _onViewOpenCompleted = new Subject <Unit>().AddTo(Disposer); _onViewClose = new Subject <Unit>().AddTo(Disposer); _onViewCloseCompleted = new Subject <Unit>().AddTo(Disposer); if (_closeButton != null) { _onCloseClicked.AddTo(Disposer); _onCloseClicked.BindTo(_closeButton).AddTo(Disposer); } _closableParent.SetActive(!_startClosed); }
// Use this for initialization void Start() { // _btn1.OnClickAsObservable ().Subscribe (_ => { // sub1.OnNext (_); // }); // var obs2 = Observable.TimerFrame (0, 60).Select (t => "2nd"); // obs1.TakeUntil (obs2).Concat (obs2).Subscribe (x => Debug.Log (x)); var asyncCommand = new ReactiveCommand(); var async = asyncCommand.Select(_ => Observable.TimerFrame(60, 60).Take(3).Select(t => { Debug.Log($"async{t}"); return(Unit.Default); })); var syncCommand = new ReactiveCommand(); var sync = syncCommand.Select(_ => Observable.TimerFrame(60, 60).Take(3).Select(t => { Debug.Log($"sync{t}"); return(Unit.Default); })); //sync.Concat ().Merge (async.Merge ()).Subscribe (); sync.Merge(async).Concat().Subscribe(); syncCommand.BindTo(_btn1); asyncCommand.BindTo(_btn2); }
public StrobeEffectViewModel() { var canGenerate = this.WhenAnyValue( x => x.Color1, x => x.Color2, x => x.HasErrors, (c1, c2, err) => !err && c1 != c2 && ShowLightViewModel.GetShowlightType(c1) == ShowLightViewModel.GetShowlightType(c2)); this.WhenAnyValue(x => x.StartTime, x => x.EndTime) .Subscribe(tuple => { var(startTime, endTime) = tuple; bool errorsChanged = false; if (_errors.ContainsKey(nameof(EndTime))) { _errors.Remove(nameof(EndTime)); errorsChanged = true; } if (endTime <= startTime) { _errors.Add(nameof(EndTime), "End time cannot be less than start time."); errorsChanged = true; } if (errorsChanged) { ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(nameof(EndTime))); this.RaisePropertyChanged(nameof(HasErrors)); } }); Generate = ReactiveCommand.Create(GenerateStrobeEffect, canGenerate); Generate.BindTo(this, x => x.GeneratedShowlights); }