Esempio n. 1
0
        IEnumerator <float> JumpToBed()
        {
            Player.anim.Play("PrepareToSleep");
            Player.anim.SetBool("Sleeping", true);
            PlayerAnimationHelper.StopPlayer();
            SpriteControler.Instance.FaceDOWN();

            yield return(0f);

            PlayerCommands.LastPositionBeforeJump = GameLibOfMethods.player.transform.position;
            //SpriteControler.Instance.ChangeSortingOrder(1);
            GameLibOfMethods.player.transform.parent.transform.parent = transform;
            while (true)
            {
                var state = Player.anim.GetCurrentAnimatorStateInfo(0);
                if (!state.IsName("PrepareToSleep"))
                {
                    Debug.Log("Something is wrong.. this finished before firing the method. Make sure you don't call this from FixedUpdate.");
                    break;
                }

                if (Player.anim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 62 / 120f)
                {
                    break;
                }

                yield return(0f);
            }


            Player.col.enabled = false;


            Vector2 targetPos  = useableFunctionality.PlayerStandPosition;
            Vector2 currentPos = GameLibOfMethods.player.transform.position;

            while (true)
            {
                currentPos = Vector2.MoveTowards(currentPos, targetPos, .8f * GameTime.Time.deltaTime);
                GameLibOfMethods.player.transform.position = currentPos;
                if (currentPos == targetPos)
                {
                    break;
                }
                yield return(0f);
            }

            yield return(0f);

            if (Random.Range(0f, 1f) > 0.5f)
            {
                PlayerBuff.Add <DeepSleep>();
            }

            GameLibOfMethods.isSleeping = true;
            GameLibOfMethods.cantMove   = true;
            HandlePlayerSprites(enable: false);
            StartCoroutine(SleepSpeedChangeDelay());
            //Covers.sortingOrder = 2;
            useState = ObjectUseState.InUse;
            CurrentAction.BeginAction();
        }