Example #1
0
        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);
        }