/* * Will generate a dungeon randomly */ public DungeonBuilderOutput GenerateDungeon(int levelNumber) { List <List <RoomType> > layout = algo.GenerateMapLayout(); DebugPrintLayout(layout); GameObject[] rooms = new GameObject[COLS * ROWS]; DungeonBuilderOutput output = new DungeonBuilderOutput(); for (int row = 0; row < layout.Count; row++) { for (int col = 0; col < layout[row].Count; col++) { if (layout[row][col] != RoomType.NONE) { int roomIndex = GetRoomIndex(row, col); int doorMask = ComputeDoorMask(col, row, layout); RoomTemplate template = CreateRandomTemplate(layout[row][col], doorMask); rooms[roomIndex] = CreateRoomFromTemplate(template); if (layout[row][col] == RoomType.ENTRANCE) { output.entranceIndex = roomIndex; } } } } output.rooms = rooms; return(output); }