Example #1
0
        public void Start()
        {
            if (_list.Orientation == NavigationOrientation.None)
            {
                throw new InvalidOperationException(
                          $"ListControl is missing orientation value on gameObject {_list.gameObject.ToHierarchyPath()}");
            }

            _list.Views
            .CombineLatest(ChosenIndex, (views, selectedIndex) => new { views, selectedIndex })
            .Subscribe(x =>
            {
                _chosenView.Value = x.views.GetAtOrDefault(x.selectedIndex);

                if (_list.IsSelfOrDescendantSelected.Value)
                {
                    _chosenView.Value?.Select();
                }
            })
            .AddTo(_disposables);

            SubscribeToUpdateFocusables(ChosenView);

            _disposables.AddTo(_list);
            _chosenView.AddTo(_list);
            ChosenIndex.AddTo(_list);
        }
Example #2
0
        // Use this for initialization
        void Start()
        {
            PlayerState.Do(ps => {
                PlayerStateClear.Dispose();
                PlayerStateClear = new CompositeDisposable();
                PlayerStateClear.AddTo(this);
            }).Where(ps => ps != null).Subscribe(ps => {
                AvatarRight.onClick.AsObservable().Select(p => 1)
                .Merge(AvatarLeft.onClick.AsObservable().Select(p => - 1))
                .Subscribe(pos => {
                    var list         = GameManager.GameConfig.CampaignConfig.PlayerAvatarList;
                    var currentIndex = list.IndexOf(GameManager.GameConfig.CampaignConfig.PlayerAvatars[PlayerState.Value.Avatar]);
                    var nextIndex    = currentIndex + pos;

                    if (nextIndex < 0)
                    {
                        nextIndex = list.Count - 1;
                    }
                    if (nextIndex >= list.Count)
                    {
                        nextIndex = 0;
                    }

                    PlayerState.Value.Avatar = list[nextIndex].Name;
                }).AddTo(PlayerStateClear);
            }).AddTo(this);
        }
        // Use this for initialization
        void Start()
        {
            CampaignState.Subscribe(cs => {
                CampaignStateClear.Dispose();
                CampaignStateClear = new CompositeDisposable();
                CampaignStateClear.AddTo(this);

                if (cs != null)
                {
                    Avatar.PlayerState.Value         = cs.PlayerState;
                    AvatarSelector.PlayerState.Value = cs.PlayerState;

                    cs.DifficultyLevelProperty.Subscribe(d =>
                    {
                        EasyCampaign.isOn   = d == Difficulty.Level.Easy;
                        MediumCampaign.isOn = d == Difficulty.Level.Medium;
                        HardCampaign.isOn   = d == Difficulty.Level.Hard;
                    }).AddTo(CampaignStateClear);
                    cs.PermadeathProperty.Subscribe(p => Permadeath.isOn = p).AddTo(CampaignStateClear);
                    cs.TutorialsProperty.Subscribe(t => Tutorials.isOn   = t).AddTo(CampaignStateClear);

                    EasyCampaign.onValueChanged.AsObservable().Where(c => c).Subscribe(_ => cs.DifficultyLevel   = Difficulty.Level.Easy);
                    MediumCampaign.onValueChanged.AsObservable().Where(c => c).Subscribe(_ => cs.DifficultyLevel = Difficulty.Level.Medium);
                    HardCampaign.onValueChanged.AsObservable().Where(c => c).Subscribe(_ => cs.DifficultyLevel   = Difficulty.Level.Hard);

                    Tutorials.onValueChanged.AsObservable().Subscribe(t => cs.Tutorials   = t);
                    Permadeath.onValueChanged.AsObservable().Subscribe(t => cs.Permadeath = t);
                }
                else
                {
                    Avatar.PlayerState.Value         = null;
                    AvatarSelector.PlayerState.Value = null;
                }
            }).AddTo(this);
        }
Example #4
0
    protected virtual void Awake()
    {
        _isOpen.Where(x => x).Subscribe(x => OnOpenAnyObserver.OnNext(this)).AddTo(this);
        _isOpen.Where(x => !x).Subscribe(x => OnCloseAnyObserver.OnNext(this)).AddTo(this);

        openCloseDisposable.AddTo(this);

        animations = GetComponents <DOTweenAnimation>();

        SubscribeOnAnimationComplete();
    }
Example #5
0
 // Use this for initialization
 void Start()
 {
     PlayerState.Do(ps =>
     {
         PlayerStateClear.Dispose();
         PlayerStateClear = new CompositeDisposable();
         PlayerStateClear.AddTo(this);
     }).Where(ps => ps != null).Subscribe(ps =>
     {
         ps.AvatarProperty.StartWith(ps.Avatar).Subscribe(a =>
         {
             Icon.sprite = GameManager.GameConfig.CampaignConfig.PlayerAvatars[a].Avatar;
         }).AddTo(PlayerStateClear);
     }).AddTo(this);
 }
        public static IDisposable BindChildPrefabsTo <T>(this GameObject input, IReadOnlyReactiveCollection <T> list,
                                                         GameObject prefab, Func <GameObject, Transform, GameObject> instantiator,
                                                         Action <T, GameObject> onChildCreated = null, Action <T, GameObject> onChildRemoving = null)
        {
            var disposable = new CompositeDisposable();

            void onElementAdded(CollectionAddEvent <T> data)
            {
                var newChild = instantiator(prefab, input.transform);

                onChildCreated?.Invoke(data.Value, newChild);
            }

            void onElementUpdated(CollectionReplaceEvent <T> data)
            {
                var existingChild = input.transform.GetChild(data.Index);

                onChildCreated?.Invoke(data.NewValue, existingChild.gameObject);
            }

            void onElementRemoved(CollectionRemoveEvent <T> data)
            {
                var existingChild = input.transform.GetChild(data.Index);

                onChildRemoving?.Invoke(data.Value, existingChild.gameObject);
                GameObject.Destroy(existingChild);
            }

            list.ObserveAdd().Subscribe(onElementAdded).AddTo(disposable);
            list.ObserveReplace().Subscribe(onElementUpdated).AddTo(disposable);
            list.ObserveRemove().Subscribe(onElementRemoved).AddTo(disposable);

            input.transform.DeleteAllChildren();
            foreach (var element in list)
            {
                var newChild = instantiator(prefab, input.transform);
                onChildCreated?.Invoke(element, newChild);
            }

            return(disposable.AddTo(input));
        }
 private void SetupDisposer(CompositeDisposable disposer)
 {
     Disposer.AddTo(disposer);
 }
Example #8
0
 private void InjectDisposer(CompositeDisposable disposer)
 {
     Disposer.AddTo(disposer);
 }
Example #9
0
 void OnCreated()
 {
     _life.AddTo(this);
     _renderer.material = Instantiate(_renderer.material);
 }
Example #10
0
 void OnCreated()
 {
     _life.AddTo(this);
     _blocks     = new Array3 <byte>(VoxelConsts.ChunkLength);
     _serializer = new ChunkSerializer(VoxelConsts.ChunkLength);
 }
Example #11
0
 void OnCreated()
 {
     _life.AddTo(this);
 }
Example #12
0
 static DateTimeHelper()
 {
     SetObservables();
     compositeDisposable.AddTo(Application.Current);
 }