Esempio n. 1
0
    public void Initialize
        (int lane, GameObject actor,
        RuntimeAnimatorController idle,
        RuntimeAnimatorController play,
        float height,
        PlayerSquenceReactiveProperty squence)
    {
        _lane = lane;
        actor.transform.localScale    = Vector3.one;
        actor.transform.localPosition = Vector3.zero;
        CameraFollower.target         = actor.transform;
        PlayerAnimator = actor.GetComponent <Animator>();
        _startPosition = transform.GetChild(0).localPosition;
        _startRot      = transform.GetChild(0).localRotation;

        actor.transform.parent.localScale =
            new Vector3(actor.transform.parent.localScale.x, height, actor.transform.parent.localScale.z);
        PlayerAnimator.runtimeAnimatorController = idle;
        _playController = play;
        _actor          = actor;
        SubscribeSequence(squence);

        QBPlay.Instance
        .PlayerPositionNotifier
        .Do(x =>
        {
            switch (_appStateBroker.CurrentRound.Value)
            {
            case Rounds.R2:
                SetToMoveToIdle();
                break;

            case Rounds.R3:
                SetToMoveToIdle();
                break;
            }
        })
        .Subscribe(_ => GoBackToStartPos())
        .AddTo(_actor);

        _footBall = AddFootBall(actor);
        actor.SetActive(true);
        // _footBall = FindBall(actor);
        _footBall.SetActive(false);

        //Current App Round Stream
        _roundStream = _appStateBroker.CurrentRound;
        _roundStream
        .DistinctUntilChanged()
        .Subscribe(round =>
        {
            switch (round)
            {
            case Rounds.Idle_Hike:
                PlayerAnimator.runtimeAnimatorController = _playController;
                break;

            case Rounds.R1_Hike:
            case Rounds.R2_Hike:
            case Rounds.R3_Hike:
                SetToRun();
                break;

            case Rounds.Finish:
                _appStateBroker.SnapButonObservable
                .Take(1)
                .DoOnCompleted(() =>
                {
                    squence.Dispose();
                    GoBackToStartPos();
                    Destroy(_actor);
                })
                .Subscribe()
                .AddTo(_actor);
                break;
            }
        })
        .AddTo(_actor);
    }