示例#1
0
        private void ConectRooms2()
        {
            /**Room Connect algorith destciption
             * 1, Select room - separate it from array
             * 2, Find all of the neghbourt of the room and randomly choose one
             * 3, selectst random border of the room - merge with current room and delete from list
             * 4, add current room to the list
             */
            rooms = rooms2.Values.ToList();
            //randomly choosing room
            Random random = new Random();
            int    count  = rooms2.Count();

            ;
            int   rand     = random.Next(2, count + 1);
            Room2 megaRoom = rooms2[rand];


            while (rooms2.Count() != 1)
            {
                rooms2.Remove(megaRoom.GetID());
                //Choose one random neighbour and conect
                Room2 neighboutr   = new Room2(); //empty constructor (ID is zero and all tiles are empty);
                int   roomToChange = 0;

                if (megaRoom.GetSurrounding().Count != 0)
                {
                    roomToChange = megaRoom.GetSurrounding().First();
                }
                else
                {
                    Console.WriteLine("Error ocured during room maping");
                    break;
                }
                string border = megaRoom.GetBorderMap()[roomToChange].First();



                int coordinateX = ParseMap(border)[0];
                int coordinateY = ParseMap(border)[1];
                dMap[coordinateY][coordinateX]        = door;
                roomMap[coordinateY][coordinateX]     = int.MaxValue;
                roomTypeMap[coordinateY][coordinateX] = int.MaxValue;

                //merging
                megaRoom.MergeWith2(rooms2[roomToChange], border);
                rooms2.Remove(roomToChange);
                rooms2.Add(megaRoom.GetID(), megaRoom);
            }
        }