Ejemplo n.º 1
0
        /// <summary>
        /// Moves player based on user input.
        /// </summary>
        /// <param name="gameTime"></param>
        public override void UpdatePlayer(GameTime gameTime)
        {
            // Move on input //

            // Don't move if animating attack
            if (VisualCharacter != null && VisualCharacter.CharacterAnimator.CurrentAnimation != Animator.Animations.Attack)
            {
                // Get direction from input //
                _desiredMoveDirection = Vector2.Zero;

                if (_input.IsKeyDown(Input.eInput.LEFT))
                {
                    _desiredMoveDirection.X -= 1;
                }

                if (_input.IsKeyDown(Input.eInput.RIGHT))
                {
                    _desiredMoveDirection.X += 1;
                }

                if (_input.IsKeyDown(Input.eInput.UP))
                {
                    _desiredMoveDirection.Y -= 1;
                }

                if (_input.IsKeyDown(Input.eInput.DOWN))
                {
                    _desiredMoveDirection.Y += 1;
                }


                // Set rotation to 'direction'.
                if (_desiredMoveDirection != Vector2.Zero)
                {
                    Rotation = _desiredMoveDirection.ToAngle();
                }

                // Move in 'direction'. //
                _body.ApplyForce(_desiredMoveDirection * (MoveSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds));
            }



            // Attack on input //

            if (_input.IsKeyPressed(Input.eInput.PRIMARY))
            {
                // Send attack over network.
                _clientNetworkManager.SendAttackPacket(this);


                // Perform visual attack.
                if (VisualCharacter != null)
                {
                    VisualCharacter.CharacterAnimator.SetAnimation(Animator.Animations.Attack, true);
                }



#if WINDOWS && DEBUG
                // Log attack
                Console.WriteLine("Local Attack.");
#endif
            }



            // Sync player position to pysical body //
            _body.LinearVelocity = Vector2.Zero;
            Position             = ConvertUnits.ToDisplayUnits(_body.Position);


            // Updates visual player
            base.UpdatePlayer(gameTime);
        }