Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        // 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; });
        }
Ejemplo n.º 3
0
    // 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);
    }
Ejemplo n.º 4
0
        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);
                    }));
            });
        }
Ejemplo n.º 5
0
        // 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();
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
    // 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);
    }
Ejemplo n.º 8
0
        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);
        }