public void checkforMovement()
{
DIRECTION oldDirection = Direction;
if (MovingState != STATE.MOVING)
{
if(InputEngine.IsKeyHeld(Keys.Right))
{
TargetTilePos = Tileposition + new Vector2(1, 0);
_direction = DIRECTION.RIGHT;
MovingState = STATE.MOVING;
}
if (InputEngine.IsKeyHeld(Keys.Left))
{
TargetTilePos = Tileposition + new Vector2(-1, 0);
_direction = DIRECTION.LEFT;
MovingState = STATE.MOVING;
}
if (InputEngine.IsKeyHeld(Keys.Up))
{
TargetTilePos = Tileposition + new Vector2( 0, -1);
_direction = DIRECTION.UP;
MovingState = STATE.MOVING;
}
if (InputEngine.IsKeyHeld(Keys.Down))
{
TargetTilePos = Tileposition + new Vector2(0, 1);
_direction = DIRECTION.DOWN;
MovingState = STATE.MOVING;
}
// Make sure the player stays in the bounds
TargetTilePos = Vector2.Clamp(TargetTilePos, Vector2.Zero,
new Vector2(TileBound.X, TileBound.Y) - new Vector2(1, 1));
}
else
{
Vector2 targetDirection = TargetTilePos - Tileposition;
Vector2 nTarget = Vector2.Normalize(targetDirection);
float distance = Vector2.DistanceSquared(Tileposition, TargetTilePos);
if (distance > speed)
{
Tileposition += nTarget * speed;
}
else
{
MovingState = STATE.STILL;
Tileposition = TargetTilePos;
CurrentPlayerTile.X = (int)Tileposition.X;
CurrentPlayerTile.Y = (int)Tileposition.Y;
}
}
// Change the image set based on a change of direction
if (Direction != oldDirection && _directionFrames[(int)_direction].Count() > 0)
{
Frames = _directionFrames[(int)_direction];
CurrentFrame = 0;
}
//return moved;
}