/// <summary>Update list of levelsets</summary>
        public FunctionResult UpdateList()
        {
            string[] sFilesList;
            SokobanLevelSet uTempLevelSet = new SokobanLevelSet();
            try
            {
                sFilesList = System.IO.Directory.GetFiles(sLevelsPath);//Get list of files in folder with levelsets
            }
            catch
            {
                return FunctionResult.FileSystemError;//List of files not received - error
            }

            int i,j;
            string sNewFile;

            Array.Sort(sFilesList);//Sort filenames alphabetically

            for (i = 0; i < sFilesList.Length; i++)//Iterate thru all detected files
            {
                sNewFile = System.IO.Path.GetFileName(sFilesList[i]).ToLower();//Get lowercased filename

                //Search this filename thru list of levelsets
                for (j = 0; j < iListUsed; j++)
                {
                    if (uLevelSets[j].sFileName == sNewFile)
                        goto lFound;
                }

                //Not found - add to list
                j = iListUsed;//New item
                iListUsed++;//Update number of levelsets
                EnlargeArray();//Realloc array if needed
                uLevelSets[j].sComment = "";//Initial comment - empty
            lFound:
                uLevelSets[j].sFileName = sNewFile;//Update filename in list
                uTempLevelSet.LoadTxtLevelSet(sFilesList[i],true);//Load levelset with simplified method - to get only number of levels
                uTempLevelSet.AssignRecordFile(sSolutionsPath + SokobanLevelSet.FileName2sID(uLevelSets[j].sFileName) + ".rec");//Load record file - to get number of solved levels
                uLevelSets[j].iLevelsTotal = uTempLevelSet.GetLevelsNum();//Get total number of levels
                uLevelSets[j].iLevelsSolved = uTempLevelSet.GetNumOfSolved();//Get number of solved levels
                UpdateDisplayed(j);//Update displayed text for levelset

            }
            return FunctionResult.OK;//Updated
        }
 /// <summary>Load levelset by file (destination levelset object, filename)</summary>
 public FunctionResult LoadLevelSet(SokobanLevelSet uLevelSet, string sLoadFileName)
 {
     FunctionResult uRV = uLevelSet.LoadTxtLevelSet(sLevelsPath + sLoadFileName,false);//Load levelset file
     if (uRV != FunctionResult.OK)
     {
         return uRV;//Something wrong with loading - exit
     }
     uLevelSet.sID = SokobanLevelSet.FileName2sID(sLoadFileName);//Convert filename into ID of levelset
     uLevelSet.sFileName = sLoadFileName;
     uLevelSet.AssignRecordFile(sSolutionsPath + uLevelSet.sID + ".rec");//Load record file
     FindLevelSet(sLoadFileName);//Update current levelset in list
     return uRV;
 }