public override void Update()
{
if (!niceCannon.hasShot)
{
if (!niceCannon.placing && !niceCannon.aiming &&
Mouse.GetState().LeftButton == ButtonState.Pressed &&
shoot.Contains(Mouse.GetState().X, Mouse.GetState().Y))
{
niceCannon.Fire(niceBall);
badCannon.Fire(badBall);
}
else
{
badCannon.Direction = niceCannon.Direction * new Vector2(1, -1);
badCannon.Position = new Vector2(niceCannon.Position.X, badCannon.Position.Y);
niceCannon.Control();
badCannon.updateRotation();
}
}
else
{
foreach (SolidObstacle o in Objects)
{
niceBall.obstacleCollision(o);
badBall.obstacleCollision(o);
}
score = (int)(niceBall.Velocity.Length() * 1000);
niceBall.update();
badBall.update();
if ((niceBall.Position - target.Position).Length() < target.radius - niceBall.radius && niceCannon.hasShot)
{
win.Play();
CannonGame.ChangeState(5);
}
if (((niceBall.Position - badBall.Position).Length() < (niceBall.radius + badBall.radius) || niceBall.Velocity == Vector2.Zero) && niceCannon.hasShot)
{
lose.Play();
CannonGame.ChangeState(6);
}
}
}