private void TryCreateRoom(float randomModifier, ICollection <Room> rooms) { var tryLeft = 100; Room room = null; while (room == null || GetCollidings(room, rooms).Count != 0 || room.GetLeft() < -mapWidth / 2f || room.GetRight() > mapWidth / 2f || room.GetTop() < -mapHeight / 2f || room.GetBottom() > mapHeight / 2f) { if (tryLeft <= 0) { return; } var pos = VecUtils.GetRandomPointInCircle(rand, (float)mapWidth / 2); room = new Room((int)pos.x, (int)pos.y, (int)(roomWidth.Random * randomModifier), (int)(roomHeight.Random * randomModifier)); tryLeft--; } rooms.Add(room); }