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); } } } }
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; } }