Example #1
0
    void addBoardToLists()
    {
        string instr = seed == 0 ? "" : seed.ToString(), outstr;
        // int randI;

        List <int>    randRoomList = new List <int>();
        List <string> seedToUse    = new List <string>();

        if (roomSizeMax[0] - roomSizeCount[0] < 1 && roomSizeMax[1] - roomSizeCount[1] < 1 && roomSizeMax[2] - roomSizeCount[2] < 1)
        {
            entranceQ.Clear();

            return;
        }

        if (rooms.Count < 1)
        {
            int i;
            i = Random.Range(1, 3);

            randRoomList.Add(i);
        }
        else
        {
            if (roomSizeMax[0] - roomSizeCount[0] > 0)
            {
                randRoomList.Add(0);
            }

            if (roomSizeMax[1] - roomSizeCount[1] > 0)
            {
                randRoomList.Add(1);
            }

            if (roomSizeMax[2] - roomSizeCount[2] > 0)
            {
                randRoomList.Add(2);
            }
        }

        if (randRoomList.Count == 0)
        {
            entranceQ.Clear();
            ;
            return;
        }

        int iRand;

        iRand = Random.Range(0, randRoomList.Count);

        mapGenerator.recieveRoomSettings(randRoomList[iRand]);

        Room tempRoom = new Room(mapGenerator.GenerateMapForOther(instr, out outstr), 1, 1, 1, 1);



        bool isIntersecting = false;

        if (rooms.Count > 0)
        {
            Entrance tempEntrance = entranceQ.Dequeue();
            joinRooms(tempEntrance.room, tempRoom, tempEntrance.side);

            int i = 0;
            do
            {
                isIntersecting = (DoRoomsIntersect(tempRoom, rooms[i]) || DoRoomsIntersect(rooms[i], tempRoom));
                i++;
            } while (isIntersecting != true && i < rooms.Count);

            if (!isIntersecting)
            {
                tempRoom.ActuallyDrawLine();
                tempEntrance.room.ActuallyDrawLine();
            }
        }

        if (!isIntersecting)
        {
            boardHolder.Add(new GameObject("Board" + boardHolder.Count).transform);
            tempRoom.index = rooms.Count;
            rooms.Add(tempRoom);
            //rooms[rooms.Count].index = rooms.Count - 1;
            roomSizeCount[randRoomList[iRand]]++;

            if (rooms[rooms.Count - 1].rows * rooms[rooms.Count - 1].columns > 150)//room is atleast medium size
            {
                entranceQ.Enqueue(new Entrance(rooms[rooms.Count - 1], 0, new Vector3(0, 0, 0)));
                entranceQ.Enqueue(new Entrance(rooms[rooms.Count - 1], 1, new Vector3(0, 0, 0)));
                entranceQ.Enqueue(new Entrance(rooms[rooms.Count - 1], 2, new Vector3(0, 0, 0)));
                entranceQ.Enqueue(new Entrance(rooms[rooms.Count - 1], 3, new Vector3(0, 0, 0)));
            }

            seed += outstr.GetHashCode();
        }
    }