public override void Update(GameTime gameTime)
{
foreach (var room in Rooms)
{
room.Update(gameTime);
Boolean playerInRoom = false;
if (room.IsInRoom(Player.NewPosition))
{
Player.Update(gameTime);
var collidedWall = room.CollidesWithWall(Player.BottomVertex, Player.UpVertex);
if (!Game.godMode)
{
Player.CollidedWith(collidedWall);
}
room.CheckCollectiblesCollision(Player);
room.CheckObstacleCollision(Player);
playerInRoom = true;
}
var bullets = Bullets.FindAll(bullet => room.IsInRoom(bullet.BottomVertex) || room.IsInRoom(bullet.UpVertex));
var enemies = Array.FindAll(Enemies, enemy => room.IsInRoom(enemy.Position));
bullets.ForEach(b => b.Update(gameTime));
foreach (var enemy in enemies)
{
enemy.Update(gameTime);
var collidedWall = room.CollidesWithWall(enemy.BottomVertex, enemy.UpVertex);
if (!(collidedWall is null))
{
enemy.CollidedWith(collidedWall);
}
room.CheckObstacleCollision(enemy);
if (playerInRoom && Player.CollidesWith(enemy.BottomVertex, enemy.UpVertex) && !Game.godMode)
{
enemy.CollidedWith(Player);
}
var collidedBullets = bullets.FindAll(bullets => bullets.CollidesWith(enemy.BottomVertex, enemy.UpVertex));
collidedBullets.ForEach(b => b.CollidedWith(enemy));
}
bullets.FindAll(b => room.CollidesWithWall(b.BottomVertex, b.UpVertex) != null).ForEach(b => b.CollidedWith());
bullets.ForEach(b => room.CheckObstacleCollision(b));
}
Lamp.Update(gameTime);
Lamp2.Update(gameTime);
}