Пример #1
0
 public override void Update(float deltaTime)
 {
     AutoSpriteSorter.Update(deltaTime);
 }
Пример #2
0
        public override void Update(float deltaTime)
        {
            #region Input

            int inputX = 0;
            int inputY = 0;

            bool isKeyDown(Keys k) => Keyboard.GetState().IsKeyDown(k);

            if (isKeyDown(Input.MoveUp))
            {
                inputY -= 1;
            }
            if (isKeyDown(Input.MoveDown))
            {
                inputY += 1;
            }

            if (isKeyDown(Input.MoveLeft))
            {
                inputX -= 1;
            }
            if (isKeyDown(Input.MoveRight))
            {
                inputX += 1;
            }

            movement.X = inputX;
            movement.Y = inputY;

            #endregion

            velocity = movement * (currentSpeed * Stats.SpeedModifier) * deltaTime;

            #region Diagonal Speed

            if (velocity.X != 0 && velocity.Y != 0)
            {
                currentSpeed = DIAG_SPEED;
            }
            else
            {
                currentSpeed = MOVE_SPEED;
            }

            #endregion

            #region State Switching

            if (velocity != Vector2.Zero)
            {
                isMoving = true;
            }
            else
            {
                isMoving = false;
            }

            if (!isMoving)
            {
                RequestState(new PlayerIdleState(this));
            }
            else if (isMoving && !(stateMachine.CurrentState is PlayerRunningState))
            {
                RequestState(new PlayerWalkState(this));
            }

            #endregion

            if (movement.X > 0)
            {
                FlipHorizontal = false;
            }
            else if (movement.X < 0)
            {
                FlipHorizontal = true;
            }

            Position += velocity;

            #region Misc

            stateMachine.Update(deltaTime);
            AnimationManager.Update(deltaTime);
            AutoSpriteSorter.Update(deltaTime);

            #endregion
        }