/// <summary>
        /// Allows the game component to update itself.
        /// </summary>
        /// <param name="gameTime">Provides a snapshot of timing values.</param>
        public void HandleInput(InputState input, int playerIndex)
        {
            if (ManualCamera)
            {
                //translation controls WASD
                if (input.CurrentKeyboardStates[0].IsKeyDown(Keys.A)) MoveCamera(new Vector2(-1, 0));
                if (input.CurrentKeyboardStates[0].IsKeyDown(Keys.D)) MoveCamera(new Vector2(1, 0));
                if (input.CurrentKeyboardStates[0].IsKeyDown(Keys.S)) MoveCamera(new Vector2(0, 1));
                if (input.CurrentKeyboardStates[0].IsKeyDown(Keys.W)) MoveCamera(new Vector2(0, -1));

                //rotation controls QE
                if (input.CurrentKeyboardStates[0].IsKeyDown(Keys.Q)) Rotation += 0.01f;
                if (input.CurrentKeyboardStates[0].IsKeyDown(Keys.E)) Rotation -= 0.01f;

                //zoom/scale controls ZX
                if (input.CurrentKeyboardStates[0].IsKeyDown(Keys.Z)) Scale += 0.001f;
                if (input.CurrentKeyboardStates[0].IsKeyDown(Keys.X)) Scale -= 0.001f;
            }

            MousePos = input.MousePos();
            MousePos /= ResolutionScale;

            #if WINDOWS_PHONE
            if(input.IsMouseLeftButtonClick())
            #endif
            {
                if (MousePos.X < ScrollBar.X) Position.X -= Speed;
                else if (MousePos.X > BaseScreenSize.X - ScrollBar.X) Position.X += Speed;

                if (MousePos.Y < ScrollBar.Y) Position.Y -= Speed;
                else if (MousePos.Y > BaseScreenSize.Y - ScrollBar.Y) Position.Y += Speed;
            }

            // Clamp
            Position.X = MathHelper.Clamp(Position.X, BaseScreenSize.X / 2 / Scale * ResolutionScale,
                (ScrollArea.X - BaseScreenSize.X / 2 / Scale) * ResolutionScale);
            Position.Y = MathHelper.Clamp(Position.Y, BaseScreenSize.Y / 2 / Scale * ResolutionScale,
                (ScrollArea.Y - BaseScreenSize.Y / 2 / Scale) * ResolutionScale);

            MousePos = (Position / ResolutionScale - BaseScreenSize / 2 / Scale) + MousePos / Scale;
        }
        public void HandleInput(InputState input, int playerIndex)
        {
            player.direction = Vector2.Zero;
            if (input.CurrentKeyboardStates[playerIndex].IsKeyDown(Keys.W)
                || input.CurrentKeyboardStates[playerIndex].IsKeyDown(Keys.Up)) player.direction.Y = -1;
            else if (input.CurrentKeyboardStates[playerIndex].IsKeyDown(Keys.S)
                || input.CurrentKeyboardStates[playerIndex].IsKeyDown(Keys.Down)) player.direction.Y = 1;
            if (input.CurrentKeyboardStates[playerIndex].IsKeyDown(Keys.A)
                || input.CurrentKeyboardStates[playerIndex].IsKeyDown(Keys.Left)) player.direction.X = -1;
            else if (input.CurrentKeyboardStates[playerIndex].IsKeyDown(Keys.D)
                || input.CurrentKeyboardStates[playerIndex].IsKeyDown(Keys.Right)) player.direction.X = 1;

            Vector2 mousePos = input.MousePos();
            mousePos /= Camera2D.ResolutionScale;
            mousePos += camera.Position / Camera2D.ResolutionScale - (Camera2D.BaseScreenSize / 2.0f);

            Vector2 playerPos = player.body.Position * gameContent.b2Scale;

            if (input.IsMouseLeftButtonClick())
                if (Vector2.Distance(mousePos, playerPos) < Tile.Width / 2.0f)
                    isPlayerSelected = true;

            #if WINDOWS_PHONE
            if (input.TouchState.Count > 0 && input.TouchState[0].State == TouchLocationState.Released)
            #else
            if(input.CurrentMouseState.LeftButton == ButtonState.Released)
            #endif
                isPlayerSelected = false;

            #if WINDOWS_PHONE
            if (input.TouchState.Count > 0 && input.TouchState[0].State == TouchLocationState.Moved
            #else
            if (input.CurrentMouseState.LeftButton == ButtonState.Pressed
            #endif
                    && isPlayerSelected && Vector2.Distance(mousePos, playerPos) > (Tile.Width / 2.0f + 10.0f))
            {
                float theta = (float)Math.Atan2(mousePos.Y - playerPos.Y, mousePos.X - playerPos.X);
                //player.direction.X = (float)Math.Cos(theta);
                //player.direction.Y = (float)Math.Sin(theta);

                if (Math.Abs(theta) <= Math.PI / 4.0f * 1.5f)
                    player.direction.X = 1;
                else if (Math.Abs(theta) >= Math.PI / 4.0f * 2.5f)
                    player.direction.X = -1;

                if (Math.PI / 4.0f * .5f <= Math.Abs(theta) && Math.Abs(theta) <= Math.PI / 4.0f * 3.5f)
                {
                    if (theta > 0) player.direction.Y = 1;
                    else player.direction.Y = -1;
                }
            }
        }