public void Update(GameTime gameTime)
{
_elapsed += gameTime.ElapsedGameTime;
if (_elapsed >= 2800)
{
_elapsed = 0;
var pipe = new Pipe(_random.Next(100, 300), 80);
pipe.Position = new Vector2(650, 0);
_pipes.Add(pipe);
}
var obsoletPipes = new List<Pipe>();
foreach (Pipe pipe in _pipes)
{
if (pipe.Position.X > -60)
{
pipe.Position = new Vector2(pipe.Position.X - 1.5f, pipe.Position.Y);
if (pipe.Position.X < 315 && !pipe.Scored)
{
pipe.Scored = true;
PassedPipes += 1;
if (ScoreChanged != null)
{
ScoreChanged(this, EventArgs.Empty);
}
}
}
else
{
obsoletPipes.Add(pipe);
}
}
lock (_lockObj)
{
//remove pipes
foreach (Pipe pipe in obsoletPipes)
{
_pipes.Remove(pipe);
}
}
}