public override void Update(float elapsedTime)
{
timer += elapsedTime;
switch (phase)
{
case AlienClawPhase.Wait:
if (timer < 1)
drawBounds[(int)AlienClawParts.Claw].X = screenWidth + 120;
else
{
timer = 0;
phase = AlienClawPhase.Begin;
}
break;
case AlienClawPhase.Begin:
if (timer >= .1)
{
timer = 0;
drawBounds[(int)AlienClawParts.Claw].X -= 5;
if (drawBounds[(int)AlienClawParts.Claw].X < screenWidth + 60)
phase = AlienClawPhase.Hover;
}
break;
case AlienClawPhase.Hover:
if (timer >= 1)
{
timer = 0;
phase = AlienClawPhase.Attack;
}
break;
case AlienClawPhase.Attack:
if(timer >= .1)
{
timer = 0;
drawBounds[(int)AlienClawParts.Claw].X -= 30;
if (drawBounds[(int)AlienClawParts.Claw].X < screenWidth - 25)
phase = AlienClawPhase.Extend;
}
break;
case AlienClawPhase.Extend:
if (timer >= 1)
{
timer = 0;
phase = AlienClawPhase.Retract;
}
break;
case AlienClawPhase.Retract:
if (timer >= .1)
{
timer = 0;
drawBounds[(int)AlienClawParts.Claw].X += 20;
if (drawBounds[(int)AlienClawParts.Claw].X >= screenWidth + 120)
phase = AlienClawPhase.Wait;
}
break;
}
drawBounds[(int)AlienClawParts.Shaft].X = drawBounds[(int)AlienClawParts.Claw].X + spriteBounds[(int)AlienClawParts.Claw].Width;
}