예제 #1
0
 public void makeFrames(DoorFrame newFrame, int[] door)
 {
     for(int i = 0; i< door.Length; i++) {
         switch(door[i])
         {
             case 0: // North
                 frameNorth = newFrame;
                 break;
             case 1: // South
                 frameSouth = newFrame;
                 break;
             case 2: // East
                 frameEast = newFrame;
                 break;
             case 3: // West
                 frameWest = newFrame;
                 break;
             default: break;
         }
     }
 }
    public void CreatePortals()
    {
        // Link the four doors of the starting room to a random door in a
        // random room in Level 1.
        for (int i = 0; i < 4; i++)
        {
            GameObject pair             = Instantiate(portalPairPrefab);
            int        roomID1          = GetRoomID(0, 1);
            int        roomID2          = -1;
            Transform  portal1transform = levels[0][0].GetComponent <Room>().GetRandomUnlinkedDoor().GetPortalTransform();
            Transform  portal2transform = transform;

            // Search for a random room with a random unlinked door
            bool secondRoomFound = false;
            while (!secondRoomFound)
            {
                Room r;
                // First, look for an isolated room
                if (RoomGenerator.LevelHasIsolatedRoom(levels[1]))
                {
                    r = RoomGenerator.GetRandomIsolatedRoom(levels[1]);
                }
                else
                {
                    // If none, pick a random room
                    int randomIndex = Random.Range(0, numRoomsPerLevel);
                    r = levels[1][randomIndex].GetComponent <Room>();
                }

                if (r.HasUnlinkedDoor())
                {
                    secondRoomFound = true;
                    DoorFrame d = r.GetRandomUnlinkedDoor();
                    portal2transform = d.GetPortalTransform();
                }
            }
            pair.GetComponent <PortalPair>().SetPlayer(player);
            pair.GetComponent <PortalPair>().SetRoom1ID(roomID1);
            pair.GetComponent <PortalPair>().SetRoom2ID(roomID2);
            pair.GetComponent <PortalPair>().CreatePortals(portal1transform, portal2transform);
        }

        // Now iterate through the levels and link them
        for (int level = 1; level < numLevels; level++)
        {
            for (int room = 0; room < levels[level].Count; room++)
            {
                int doorsToLink = levels[level][room].GetComponent <Room>().NumUnlinkedDoors();
                for (int i = 0; i < doorsToLink; i++)
                {
                    GameObject pair             = Instantiate(portalPairPrefab);
                    int        roomID1          = GetRoomID(level, room);
                    int        roomID2          = -1;
                    Transform  portal1transform = levels[level][room].GetComponent <Room>().GetRandomUnlinkedDoor().GetPortalTransform();
                    Transform  portal2transform = transform;

                    // Search for a random room with a random unlinked door
                    bool secondRoomFound = false;
                    while (!secondRoomFound)
                    {
                        Room r;
                        // First, look for an isolated room
                        if (RoomGenerator.LevelHasIsolatedRoom(levels[level + 1]))
                        {
                            r = RoomGenerator.GetRandomIsolatedRoom(levels[level + 1]);
                        }
                        else
                        {
                            // If none, pick a random room
                            int randomIndex = Random.Range(0, numRoomsPerLevel);
                            r = levels[level + 1][randomIndex].GetComponent <Room>();
                        }

                        if (r.HasUnlinkedDoor())
                        {
                            secondRoomFound = true;
                            DoorFrame d = r.GetRandomUnlinkedDoor();
                            portal2transform = d.GetPortalTransform();
                        }
                    }
                    pair.GetComponent <PortalPair>().SetPlayer(player);
                    pair.GetComponent <PortalPair>().SetRoom1ID(roomID1);
                    pair.GetComponent <PortalPair>().SetRoom2ID(roomID2);
                    pair.GetComponent <PortalPair>().CreatePortals(portal1transform, portal2transform);
                }
            }
        }
    }
예제 #3
0
    public void makeType(RoomType newRoomType)
    {
        DoorFrame thisframe = DoorFrame.none;
        DoorLock thislock = DoorLock.open;

        if(newRoomType == RoomType.boss)
        {
            type = RoomType.boss;
            floor = FloorType.boss;
            thisframe = DoorFrame.bones;
            thislock = DoorLock.combat;

        }
        if (newRoomType == RoomType.hidden)
        {
            type = RoomType.hidden;
            floor = FloorType.secret;
            thisframe = DoorFrame.none;
            thislock = DoorLock.bomb;
        }
        if (newRoomType == RoomType.normal)
        {
            type = RoomType.normal;
            floor = FloorType.normal;
            thisframe = DoorFrame.wood;
        }
        if (newRoomType == RoomType.shop)
        {
            type = RoomType.shop;
            floor = FloorType.normal;
            thisframe = DoorFrame.wood;
            thislock = DoorLock.key;

        }
        if (newRoomType == RoomType.treasure)
        {
            type = RoomType.treasure;
            floor = FloorType.normal;
            thisframe = DoorFrame.gold;
            thislock = DoorLock.open;
        }

        if (adjacentNorth)
        {
            frameNorth = thisframe;
            lockNorth = thislock;
        }
        if (adjacentSouth)
        {
            frameSouth = thisframe;
            lockSouth = thislock;
        }
        if (adjacentEast)
        {
            frameEast = thisframe;
            lockEast = thislock;
        }
        if (adjacentWest)
        {
            frameWest = thisframe;
            lockWest = thislock;
        }
    }