Example #1
0
        public Telekinesis()
        {
            TargetCandidate =
                TickAsObservable
                .Where(_ => !hasTarget)
                .Where(_ => Game.Player.Character.Weapons.Current.Hash == WeaponHash.Unarmed)
                .Select(_ => GetTargetCandidate())
                .Where(c => c != null)
                .ResetAfter(null, TimeSpan.FromSeconds(2))
                .ObserveOn(Scheduler)
                .ToReactiveProperty()
                .AddTo(this);

            TickAsObservable
            .Where(_ => !hasTarget && Game.IsControlJustPressed(0, Control.Aim))
            .Select(_ => TargetCandidate.Value)
            .Where(t => t != null)
            .Subscribe(t => Coroutine.Start(MyCoroutine(t)))
            .AddTo(this);

            TickAsObservable
            .Select(_ => TargetCandidate.Value)
            .Where(t => t != null && t.Exists() && !hasTarget)
            .Subscribe(t => DrawTargetMarker(t))
            .AddTo(this);
        }
Example #2
0
        protected ObservableScript()
        {
            AbortedAsObservable =
                Observable.FromEventPattern <EventHandler, EventArgs>(h => h.Invoke, h => Aborted += h, h => Aborted -= h)
                .Select(_ => Unit.Default)
                .Publish()
                .RefCount();

            TickAsObservable =
                Observable.FromEventPattern <EventHandler, EventArgs>(h => h.Invoke, h => Tick += h, h => Tick -= h)
                .Select(_ => Unit.Default)
                .Publish()
                .RefCount();

            KeyDownAsObservable =
                Observable.FromEventPattern <KeyEventHandler, KeyEventArgs>(h => h.Invoke, h => KeyDown += h, h => KeyDown -= h)
                .Select(e => e.EventArgs)
                .Publish()
                .RefCount();

            KeyUpAsObservable =
                Observable.FromEventPattern <KeyEventHandler, KeyEventArgs>(h => h.Invoke, h => KeyDown += h, h => KeyDown -= h)
                .Select(e => e.EventArgs)
                .Publish()
                .RefCount();

            TickAsObservable
            .Subscribe(_ =>
            {
                scheduler.Run();
                Coroutine.Run();
            })
            .AddTo(CompositeDisposable);
        }