// not currently in use, may be used to determine where to to place secrets/collectables
        //static List<Pair> DeadEnds;

        public static Level[,] GenerateMap()
        {
            // load levels to internal list
            LevelPool pool = LevelPool.LoadPoolMapTest();

            Levels = pool.Levels;

            // initialize map
            Map = new Level[MAP_HEIGHT, MAP_WIDTH];

            // place first screen to start from
            var startLevel = Utility.FindLevelInListByName(HubLevels, "start");

            PlaceLevel(MAP_HEIGHT / 2, MAP_WIDTH / 2, startLevel);
            AddEnds(MAP_HEIGHT / 2, MAP_WIDTH / 2, startLevel);
            Levels.Remove(startLevel);

            // start subroutine of placing screens
            while (OpenEnds.Count != 0)
            {
                /*if (OpenEnds.Count != 0)
                 *  break;*/
                PlaceNext();
                PrintDebugCSV();
            }

            // convert the map to a 2d array
            //string[][] arr = MapToArray();

            PrintCSV();

            return(Map);
        }
 static void LoadLevelPoolCategories()
 {
     LevelPoolCategories = new ObservableCollection <LevelPoolCategory>();
     foreach (var dir in Directory.GetDirectories(LevelPoolPath, "*", SearchOption.TopDirectoryOnly))
     {
         var folder = Path.GetFileNameWithoutExtension(dir);
         var cat    = new LevelPoolCategory()
         {
             Name = folder, Pools = new ObservableCollection <LevelPool>()
             {
             }
         };
         var tempList = new List <LevelPool>()
         {
         };
         string author  = null;
         bool   enabled = false;
         foreach (var file in Directory.GetFiles($"{LevelPoolPath}/{folder}", "*.xml", SearchOption.TopDirectoryOnly))
         {
             var pool = LevelPool.LoadPool(file);    // pool creation done in Pool constructor
             if (pool != null)
             {
                 if (pool.Author != null)        // set category author
                 {
                     if (author == null)         // if author not already set, set it
                     {
                         author = pool.Author;
                     }
                     else if (author != pool.Author)  // if there is more than one pool author in the category, set to V.A.
                     {
                         author = "V.A.";
                     }
                 }
                 if (pool.Active == true)
                 {
                     enabled = true;
                 }
                 tempList.Add(pool);
             }
         }
         cat.Enabled = enabled;
         cat.Author  = author;
         cat.Pools   = tempList.OrderBy(p => p.Order);
         LevelPoolCategories.Add(cat);
     }
 }