bool TryAdd(Random rnd) { if ((rooms.Count < maxRoomCount || rnd.Next(20) != 0) && (rnd.Next(rooms.Count * roomSpawnRegular / 2) == 0 || rooms.Count == 0)) { DungRoom r = new DungRoom(); r.SetParmas(rnd.Next(wid - 4), rnd.Next(hei - 4), 4, 4); rooms.Add(r); } foreach (DungRoom r in rooms) { if (rnd.Next(6) == 0 && r.S < maxRoomsSize) { r.Scale(rnd.Next(2), rnd.Next(2)); } //if (rnd.Next(5) == 0) // r.Move(rnd.Next(-1, 2), rnd.Next(-1, 2)); } bool anyCollides = false; do { anyCollides = false; foreach (DungRoom r in rooms) { foreach (DungRoom ra in rooms) { if (r != ra) { if (r.HitTest(ra, minDistance)) { anyCollides = true; r.MakeRed(ConsoleColor.Red); ra.MakeRed(ConsoleColor.Red); r.Move(rnd.Next(-1, 2), rnd.Next(-1, 2)); ra.Move(rnd.Next(-1, 2), rnd.Next(-1, 2)); //Draw(false); } } } } } while (anyCollides); return(rooms.Count >= maxRoomCount); }