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