public override void Update(GameTime gameTime)
{
_cm.StartCounter(_animCounter, false);
InputManager input = (Game as Game1)._input;
Vector2 oldPos = _position;
_position = CollisionDetector.GetPosition(_position,
input.Move.Value * _speed * gameTime.ElapsedGameTime.Milliseconds,
_radius, this);
#region Animation
_direction = _position - oldPos;
if (_direction.Length() == 0)
{
_animationType = AnimationType.STANDING;
}
else
{
_direction.Normalize();
_animationType = AnimationType.MOVING;
if (Math.Abs(_direction.X) > Math.Abs(_direction.Y))
{
if (_direction.X >= 0)
_animFacing = Facing.RIGHT;
else
_animFacing = Facing.LEFT;
}
else
{
if (_direction.Y >= 0)
_animFacing = Facing.DOWN;
else
_animFacing = Facing.UP;
}
}
switch (_animFacing)
{
case Facing.LEFT:
switch (_animationType)
{
case AnimationType.MOVING:
_animSource = new Vector2(6, 0);
break;
case AnimationType.STANDING:
_animSource = new Vector2(4, 0);
break;
default:
break;
}
break;
case Facing.UP:
switch (_animationType)
{
case AnimationType.MOVING:
_animSource = new Vector2(6, 1);
break;
case AnimationType.STANDING:
_animSource = new Vector2(4, 1);
break;
default:
break;
}
break;
case Facing.RIGHT:
switch (_animationType)
{
case AnimationType.MOVING:
_animSource = new Vector2(2, 1);
break;
case AnimationType.STANDING:
_animSource = new Vector2(0, 1);
break;
default:
break;
}
break;
case Facing.DOWN:
switch (_animationType)
{
case AnimationType.MOVING:
_animSource = new Vector2(2, 0);
break;
case AnimationType.STANDING:
_animSource = new Vector2(0, 0);
break;
default:
break;
}
break;
default:
break;
}
#endregion
// Attack! Attack!
if (input.Hit.Value)
{
_cm.StartCounter(_hitCounter, false);
}
_cm.Update(gameTime);
base.Update(gameTime);
}