Example #1
0
        private void Start()
        {
            signalBus.GetStream <GameEndSignal>()
            .TakeUntilDestroy(this)
            .Subscribe(_ => locked = true);

            signalBus.GetStream <GoalScoredSignal>()
            .TakeUntilDestroy(this)
            .TakeUntil(signalBus.GetStream <GameEndSignal>())
            .Subscribe(_ => locked = true);

            signalBus.GetStream <BallResetSignal>()
            .TakeUntilDestroy(this)
            .TakeUntil(signalBus.GetStream <GameEndSignal>())
            .Subscribe(_ => locked = false);

            gameObject.OnTriggerEnter2DAsObservable()
            .TakeUntilDestroy(this)
            .Where(_ => !locked)
            .Where(collision => collision.gameObject == ball.gameObject)
            .Select(_ => teamsData.teams.FirstOrDefault(element => element.id != team).id)
            .Subscribe(scoringTeamId => signalBus.Fire(new GoalScoredSignal()
            {
                team = scoringTeamId
            }));


            if (teamsData.teams.Length > 0)
            {
                Color color = teamsData.teams.First(element => element.id == team).color;
                color.a = .5f;
                GetComponent <Renderer>().material.color = color;
            }
        }
Example #2
0
        private void Start()
        {
            signalBus.GetStream <PlayerKilledSignal>()
            .TakeUntilDestroy(this)
            .Subscribe(_ => signalBus.Fire(new RumbleTriggeredSignal {
                magnitude = 3f
            }));

            float currentRumble      = 0;
            float maxRumbleMagnitude = .05f;
            float rumbleFrquency     = 60;// in rotations per second

            Observable.EveryUpdate()
            .TakeUntilDestroy(this)
            .Subscribe(__ => currentRumble = Mathf.Lerp(currentRumble, 0, 5 * Time.deltaTime));
            Observable.EveryUpdate()
            .TakeUntilDestroy(this)
            .Subscribe(__ =>
            {
                rumbledTransform.localPosition = new Vector2(Mathf.Cos(Time.time * rumbleFrquency), Mathf.Sin(Time.time * rumbleFrquency) * 3) * currentRumble;
            });

            signalBus.GetStream <RumbleTriggeredSignal>()
            .TakeUntilDestroy(this)
            .Subscribe(signal => currentRumble = Mathf.Min(maxRumbleMagnitude, signal.magnitude + maxRumbleMagnitude));
        }
Example #3
0
    void Start()
    {
        _slider.maxValue = (float)_simulationData.MaxTime;
        _slider.minValue = 0;

        _signalBus.GetStream <CarleyCorpSignal>()
        .Where(x => x.CarleyCorpEvent == CarleyCorpEvent.Manual)
        .Subscribe(x =>
        {
            _slider.interactable = true;
            Reset();
        })
        .AddTo(gameObject);

        _signalBus.GetStream <CarleyCorpSignal>()
        .Where(x => x.CarleyCorpEvent != CarleyCorpEvent.Manual && x.CarleyCorpEvent != CarleyCorpEvent.Reset && x.CarleyCorpEvent != CarleyCorpEvent.Play)
        .Subscribe(x =>
        {
            _slider.interactable = false;
            Reset();
        })
        .AddTo(gameObject);

        _signalBus.GetStream <CarleyCorpSignal>()
        .Where(x => x.CarleyCorpEvent == CarleyCorpEvent.Reset && _simulationData.SimulationType == SimulationData.SimulationSystem.Manual && x.CarleyCorpEvent != CarleyCorpEvent.Play)
        .Subscribe(x =>
        {
            Reset();
        })
        .AddTo(gameObject);
    }
Example #4
0
        public void Initialize()
        {
            _signalBus.GetStream <SignalShotSpawn>()
            .Subscribe(x => Create(x.Position, x.Forward)).AddTo(_disposables);

            _signalBus.GetStream <SignalShotDestroy>()
            .Subscribe(x => Destroy(x.OneView)).AddTo(_disposables);
        }
Example #5
0
        public override void Initialize()
        {
            _signalBus.GetStream <SignalPlayerCreated>()
            .Subscribe(x => OnPlayerCreated(x.Entity)).AddTo(_disposables);

            _signalBus.GetStream <SignalShotSpawn>()
            .Subscribe(x => OnShotSpawn(x.FireRate)).AddTo(_disposables);

            _signalBus.GetStream <SignalWeaponSwitch>()
            .Subscribe(x => OnWeaponSwitch(x.WeaponType)).AddTo(_disposables);
        }
Example #6
0
        public void Start()
        {
            var rigidBody = GetComponent <Rigidbody2D>();
            var collider  = GetComponent <Collider2D>();

            gameCameraState.pointsOfInterest.Add(transform);
            gameObject.OnDestroyAsObservable()
            .First()
            .Subscribe(_ => gameCameraState.pointsOfInterest.Remove(transform));

            signalBus.GetStream <GoalScoredSignal>()
            .TakeUntilDestroy(this)
            .Subscribe(_ =>
            {
                Instantiate(goalExplosion, transform.position, transform.rotation).AutoDestruct();
                ProjectUtils.AddExplosionForce(1000, transform.position, 20, explosionMask.value);
                gameObject.SetActive(false);

                gameCameraState.pointsOfInterest.Add(resetPoint);
                Observable.Timer(TimeSpan.FromSeconds(5))
                .TakeUntilDestroy(this)
                .Subscribe(__ =>
                {
                    gameObject.SetActive(true);
                    gameCameraState.pointsOfInterest.Remove(resetPoint);
                    Reset();
                });
            });

            // Add the toggling of the slowdown effect
            bool slowingEffectActive = true;

            signalBus.GetStream <GoalScoredSignal>()
            .Select(_ => true)
            .Merge(signalBus.GetStream <BallResetSignal>().Select(_ => false))
            .TakeUntilDestroy(this)
            .Subscribe(isBetweenScoreAndReset => slowingEffectActive = !isBetweenScoreAndReset);

            // Init the slowdown effect
            Observable.EveryUpdate()
            .TakeUntilDestroy(this)
            .Where(_ => slowingEffectActive)
            .Select(_ => Physics2D.CircleCast(transform.position, collider.bounds.extents.x, rigidBody.velocity, rigidBody.velocity.magnitude, pathCastingMask.value))
            .Where(hit => hit.collider != null)
            // HACK
            .Where(hit => hit.collider.gameObject.GetComponent <Goal>() != null)
            .Subscribe(hit => signalBus.Fire(new TimeSlowSignal {
                slowTime = .1f
            }));

            Reset();
        }
Example #7
0
    public void Construct(Cow.Factory cowFactory, SignalBus signalBus)
    {
        _cowFactory = cowFactory;
        _signalBus  = signalBus;
        _signalBus.GetStream <GameOver>()
        .Subscribe(x => DestroyAllCows())
        .AddTo(_disposables);
        _signalBus.GetStream <GameRestart>()
        .Subscribe(x => Restart())
        .AddTo(_disposables);

        StartCoroutine(CreatFirstCows());
    }
Example #8
0
    public override void EnterState()
    {
        base.EnterState();

        // Instantiate the Feature Points
        m_trackBuilder.InstantiateFeaturePoints(ref m_buildSM.CurrentTrackData.m_featurePoints);

        OnTrackChanged();
        m_trackChangedSubscription = m_signalBus
                                     .GetStream <FeaturePointChanged> ()
                                     .Select(_ => new Unit())
                                     .Merge(m_signalBus.GetStream <SettingsChangedSignal>().Select(_ => new Unit()))
                                     .Throttle(TimeSpan.FromSeconds(1))
                                     .Subscribe(_ => OnTrackChanged());
    }
        public void Initialize()
        {
            Observable.EveryUpdate()
            .Where(_ => InputManager.ActiveDevice.CommandWasPressed || Input.GetKeyDown(KeyCode.Escape))
            .Subscribe(_ => state.isPaused.Value = !state.isPaused.Value)
            .AddTo(disposables);

            float goalTimeScale   = 1f;
            float endSlowdownTime = 0f;

            state.isPaused
            .Subscribe(_ => Time.timeScale = goalTimeScale)
            .AddTo(disposables);
            Observable.EveryUpdate()
            .Select(_ => (state.isPaused.Value) ? 0 : Mathf.SmoothStep(Time.timeScale, (Time.time < endSlowdownTime) ? goalTimeScale : 1, 8 * Time.deltaTime))
            .Subscribe(timeScale => {
                gameMixer.SetFloat("GamePitch", timeScale);
                Time.timeScale = timeScale;
            })
            .AddTo(disposables);
            signalBus.GetStream <TimeSlowSignal>()
            .Subscribe(signal => {
                goalTimeScale   = .4f;
                endSlowdownTime = Time.time + signal.slowTime;
            })
            .AddTo(disposables);

            Observable.EveryUpdate()
            .Where(_ => Input.GetKeyDown(KeyCode.T))
            .Subscribe(_ => signalBus.Fire(new TimeSlowSignal {
                slowTime = 2f
            }))
            .AddTo(disposables);
        }
 private void Initialize(SignalBus signalBus)
 {
     signalBus
     .GetStream <SeasonText>()
     .Subscribe(x => TextMeshProUGUI.SetText(x.Title))
     .AddTo(gameObject);
 }
Example #11
0
 private void Initialize(SignalBus signalBus)
 {
     signalBus
     .GetStream <SeasonColor>()
     .Select(x => x.Color)
     .Subscribe(TransitColor)
     .AddTo(gameObject);
 }
 private void Initialize(SignalBus signalBus)
 {
     signalBus
     .GetStream <SeasonText>()
     .Select(x => x.Body)
     .Subscribe(RenderTextAsTypeWriter)
     .AddTo(gameObject);
 }
Example #13
0
        private void Start()
        {
            gameState.isPaused
            .TakeUntilDestroy(this)
            .Subscribe(isPaused => root.SetActive(!isPaused));

            signalBus.GetStream <GoalScoredSignal>()
            .TakeUntilDestroy(this)
            .Subscribe(_ => {
                centerTextUI.text    = "Goal!";
                centerTextUI.enabled = true;
                Observable.Timer(TimeSpan.FromSeconds(5))
                .TakeUntilDestroy(this)
                .TakeUntil(signalBus.GetStream <GameEndSignal>())
                .Subscribe(__ => centerTextUI.enabled = false);
                Observable.Interval(TimeSpan.FromSeconds(1))
                .TakeUntilDestroy(this)
                .TakeUntil(signalBus.GetStream <GameEndSignal>())
                .TakeWhile(interval => interval <= 5)
                .Skip(1)
                .Subscribe(interval => centerTextUI.text = (4 - interval).ToString());
            });
            signalBus.GetStream <GameEndSignal>()
            .TakeUntilDestroy(this)
            .Subscribe(_ => {
                var winningTeam      = teamsData.teams.First(selectedTeam => selectedTeam.id == soccerState.scores.MaxValueOrDefault(score => score.Value).Key);
                centerTextUI.text    = winningTeam.displayName + " wins!";
                centerTextUI.enabled = true;
            });
            soccerState.scores.ObserveReplace()
            .TakeUntilDestroy(this)
            .Subscribe(_ =>
            {
                string scoreText = string.Empty;
                foreach (int teamId in soccerState.scores.Keys)
                {
                    var team   = teamsData.teams.FirstOrDefault(selectedTeam => selectedTeam.id == teamId);
                    scoreText += team.name + ": " + soccerState.scores[teamId] + " - ";
                }
                scoreTextUI.text = scoreText;
            });
            soccerState.secondsRemaining
            .TakeUntilDestroy(this)
            .Subscribe(remainingTime => timerTextUI.text = remainingTime.ToString());
        }
        public void Initialize()
        {
            Observable.EveryUpdate()
            .Where(_ => Input.GetKeyDown(KeyCode.W))
            .Subscribe(_ => signalBus.Fire <LevelWonSignal>())
            .AddTo(disposables);
            Observable.EveryUpdate()
            .Where(_ => Input.GetKeyDown(KeyCode.L))
            .Subscribe(_ => signalBus.Fire <LevelLostSignal>())
            .AddTo(disposables);

            signalBus.GetStream <LevelWonSignal>()
            .Subscribe(_ => levelsController.LaunchNextLevel())
            .AddTo(disposables);          //go to next level
            signalBus.GetStream <LevelLostSignal>()
            .Subscribe(_ => levelsController.RestartLevel())
            .AddTo(disposables);          //reload the level

            spawnPointGroup.SpawnPlayerAtStart(playerData[0]);
        }
Example #15
0
        public void Initialize()
        {
            var jointBreakStream = signalBus.GetStream <JointBrokenSignal>();

            jointBreakStream.Buffer(jointBreakStream.Throttle(TimeSpan.FromSeconds(.2)))
            .Where(xs => xs.Count >= 3)
            .Subscribe(xs => signalBus.Fire(new TimeSlowSignal {
                slowTime = 2f
            }))
            .AddTo(disposables);
        }
    public void Initialize()
    {
        //_signalBus.Subscribe<PanelOpenSignal>(OpenPanel);
        //_signalBus.Subscribe<PanelCloseSignal>(OnPanelCloseSignal);

        _signalBus.GetStream <PanelOpenSignal>()
        .SubscribeOn(Scheduler.ThreadPool)
        .ObserveOnMainThread()
        .Subscribe((s) => OpenPanel(s));

        _signalBus.GetStream <PanelCloseSignal>()
        .SubscribeOn(Scheduler.ThreadPool)
        .ObserveOnMainThread()
        .Subscribe((s) => OnPanelCloseSignal(s));

        _panels          = new ConcurrentDictionary <string, VehicleDetailsPanelView>();
        _scoreLabel.text = "Panels: 0";

//        _vehicles3D = new Directory<Vehicle3D>();
//        _vehicles3D.Initialize();
    }
Example #17
0
 public void Construct(SignalBus signalBus)
 {
     Debug.Log("Score ui is injected");
     _signalBus = signalBus;
     _signalBus.GetStream <IncreaseScoreSignal>()
     .Subscribe(x =>
     {
         currentScore  += x.score;
         textField.text = currentScore.ToString();
     })
     .AddTo(_disposables);
 }
Example #18
0
    void Start()
    {
        //string filepath = @"Assets/StreamingAssets/Json/vehicle_list_full.json";
        //_service.path = filepath;

        _buttons = new List <VehicleButtonView>();

        _service.GetVehicles().Subscribe(x => OnGetVehicle(x));

        _signalBus.GetStream <SearchTextSignal>()
        .SubscribeOn(Scheduler.ThreadPool)
        .ObserveOnMainThread()
        .Subscribe((s) => OnSearchTextSignal(s.Text));
    }
    public override void EnterState()
    {
        base.EnterState();
        Debug.Log("BuildObserveState entered!");
        m_subscriptions = new CompositeDisposable();

        // clear existing feature points
        m_featurePointsManager.ClearFeaturePoints();

        IObservable <TrackData> observable;

        if (m_observeDialogUI.DoReceiveLiveUpdates)
        {
            observable = m_useCase.ObserveTrack(m_observeDialogUI.KeyToDownload);
        }
        else
        {
            observable = m_useCase.GetTrack(m_observeDialogUI.KeyToDownload);
        }

        // update session and rebuild track when an update from the server was received
        m_subscriptions.Add(observable
                            .SubscribeOn(Scheduler.ThreadPool)
                            .ObserveOnMainThread()
                            .Subscribe(
                                UpdateTrack,
                                e => { m_dialogBuilderFactory.Create().MakeGenericExceptionDialog(e); },
                                () => { }));

        // rebuild track if the track move tool was used
        m_subscriptions.Add(m_signalBus.GetStream <FeaturePointChanged>()
                            .SubscribeOn(Scheduler.ThreadPool)
                            .ObserveOnMainThread()
                            .Subscribe(
                                _ => RebuildTrack(),
                                e => { m_dialogBuilderFactory.Create().MakeGenericExceptionDialog(e); },
                                () => { }));
    }
    public void Initialize()
    {
        /*
         * _signalBus.GetStream<PanelOpenSignal>()
         *  .SubscribeOn(Scheduler.ThreadPool)
         *  .ObserveOnMainThread()
         *  .Subscribe((s) => OpenPanel(s));
         *
         * _signalBus.GetStream<PanelCloseSignal>()
         *  .SubscribeOn(Scheduler.ThreadPool)
         *  .ObserveOnMainThread()
         *  .Subscribe((s) => OnPanelCloseSignal(s));
         */

        _signalBus.GetStream <SearchTextSignal>()
        .SubscribeOn(Scheduler.ThreadPool)
        .ObserveOnMainThread()
        .Subscribe((s) => OnSearchTextSignal(s.Text));


        _vehicles3D = new Directory <Vehicle3D>();
        _vehicles3D.Initialize();
    }
Example #21
0
 private void Start()
 {
     signalBus.GetStream <SuicideSignal>()
     .TakeUntilDestroy(this)
     .Subscribe(__ => BreakEffect(true));
 }
        private void Start()
        {
            signalBus.GetStream <GrapplingFiredSignal>()
            .TakeUntilDestroy(this)
            .Where(_ => characterState.localPlayerControl.Value)
            .Subscribe(_ =>
            {
                DestroyRope();

                var hit = Physics2D.Raycast(transform.position, characterState.aimDirection.Value, settings.grapplingDistance, settings.grapplingMask.value);

                if (hit.transform != null)
                {
                    soundPlayer.PlaySound("Grappling", transform);

                    Vector3 hitPosition = hit.point;
                    float distance      = Vector2.Distance(hitPosition, transform.position);

                    float time = distance / settings.grapplingHookSpeed;

                    var ropeEffect = container.InstantiateComponent <RopeEffect>(gameObject);

                    currentRope.Add(ropeEffect.Init(transform, hitPosition));
                    currentRope.Add(ropeEffect);

                    Observable.Timer(TimeSpan.FromSeconds(time))
                    .TakeUntil(signalBus.GetStream <GrapplingReleasedSignal>())
                    .TakeUntilDestroy(this)
                    .Subscribe(__ =>
                    {
                        soundPlayer.PlaySound("Grappled", hitPosition);

                        var anchor = new GameObject("GrapplingAnchor");
                        anchor.transform.position = hitPosition;

                        /*gameCameraState.pointsOfInterest.Add(anchor.transform);
                         * anchor.OnDestroyAsObservable()
                         *    .Merge(gameObject.OnDestroyAsObservable())
                         *    .Merge(characterState.isCorpse.Where(isCorpse => isCorpse).Select(__ => Unit.Default))
                         *    .First()
                         *    .Subscribe(__ => gameCameraState.pointsOfInterest.Remove(anchor.transform));*/

                        var anchorRigidbody         = anchor.AddComponent <Rigidbody2D>();
                        anchorRigidbody.isKinematic = true;

                        var joint = anchor.gameObject.AddComponent <SpringJoint2D>();
                        joint.autoConfigureDistance        = false;
                        joint.autoConfigureConnectedAnchor = false;
                        joint.anchor          = anchor.transform.InverseTransformPoint(hitPosition);
                        joint.distance        = Vector2.Distance(hitPosition, transform.position) * settings.initialGrapplingDistanceRatio;
                        joint.dampingRatio    = 1f;
                        joint.frequency       = settings.ropeSpringFrequency;
                        joint.enableCollision = true;

                        var rigidbody       = GetComponent <Rigidbody2D>();
                        joint.connectedBody = rigidbody;

                        currentRope.Add(anchor.gameObject);

                        var climbSoundDisposable = soundPlayer.PlaySound("Climbing", transform);

                        var endStream = this.OnDestroyAsObservable()
                                        .Merge(anchor.OnDestroyAsObservable())
                                        .Merge(signalBus.GetStream <GrapplingReleasedSignal>().Select(___ => Unit.Default));
                        endStream
                        .First()
                        .Subscribe(___ => climbSoundDisposable.Dispose());

                        // Add Climbing
                        Observable.EveryUpdate()
                        .TakeUntil(endStream)
                        .Where(___ => characterState.localPlayerControl.Value)
                        .Select(___ => characterState.aimDirection.Value)
                        .Subscribe(direction =>
                        {
                            var ropeDirection = (anchor.transform.position - transform.position).normalized;
                            var aimDirection  = characterState.aimDirection.Value.normalized;
                            var ropeDot       = Vector2.Dot(aimDirection, ropeDirection);

                            var left = Vector2.Perpendicular(ropeDirection);
                            rigidbody.AddForce(settings.swingForce * left * Vector2.Dot(left, aimDirection));

                            var right = -Vector2.Perpendicular(ropeDirection);
                            rigidbody.AddForce(settings.swingForce * right * Vector2.Dot(right, aimDirection));

                            var distanceDelta = ropeDot * settings.ropeClimbSpeed * Time.deltaTime;

                            joint.distance -= distanceDelta;
                            if (joint.distance < .1f)
                            {
                                joint.frequency += distanceDelta * .5f;
                            }
                        });
                    });
                }
            });

            signalBus.GetStream <GrapplingReleasedSignal>()
            .TakeUntilDestroy(this)
            .Where(_ => currentRope != null)
            .Subscribe(_ => DestroyRope());
        }
Example #23
0
 public void Initialize()
 {
     _signalBus.GetStream <SignalPlayerSpawn>()
     .Subscribe(x => Create(x.Position, x.Forward)).AddTo(_disposables);
 }
 public override void Initialize()
 {
     _signalBus.GetStream <SignalPlayerCreated>()
     .Subscribe(x => OnPlayerCreated(x.Entity)).AddTo(_disposables);
 }