private Task DoInvisSpawnRemoval(string destFolder) { var queue = FileQueue.ToList(); return(Task.Run(() => { foreach (var item in queue) { var folderName = Regex.Replace(item.VariantName, @"[^a-zA-Z0-9\s]+", string.Empty); var outputFile = Path.Combine(destFolder, folderName, "sandbox.map"); for (var i = 1; File.Exists(outputFile); i++) { outputFile = Path.Combine(destFolder, folderName, string.Format("sandbox_{0}.map", i)); } var dir = Path.GetDirectoryName(outputFile); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } UsermapConversion.RemoveInvisSpawns(item.FileName, outputFile); } })); }
private void AddFilesToQueue(string[] files) { var queue = new List <MapItem>(); foreach (var file in files) { if (File.GetAttributes(file).HasFlag(FileAttributes.Directory)) { AddFilesToQueue(Directory.GetFileSystemEntries(file)); } else { using (var stream = new EndianStream(File.OpenRead(file), EndianStream.EndianType.LittleEndian)) { try { var contentHeader = Usermap.DeserializeContentHeader(stream); if (!File.Exists(UsermapConversion.GetCanvasFileName(contentHeader.MapId))) { continue; } queue.Add(new MapItem() { VariantName = contentHeader.Name, VariantAuthor = contentHeader.Author, VariantDescription = TruncateAtWord(contentHeader.Description, 80), MapId = contentHeader.MapId, FileName = file }); } catch (InvalidDataException ex) { Trace.TraceError(ex.ToString()); } } } } Dispatcher.Invoke(() => { foreach (var item in queue) { FileQueue.Add(item); } }); }
private Task DoCreateDictionary(string destFolder) { var queue = FileQueue.ToList(); return(Task.Run(() => { var theDictionary = new Dictionary <uint, uint>(); var outputFile = Path.Combine(destFolder, "dictionary.csv"); for (var i = 1; File.Exists(outputFile); i++) { outputFile = Path.Combine(destFolder, string.Format("dictionary_{0}.csv", i)); } foreach (var item in queue) { var dir = Path.GetDirectoryName(outputFile); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } UsermapConversion.AnalyzeUsermap(item.FileName, theDictionary); } // Sort by value var theList = theDictionary.ToList(); theList.Sort((pair1, pair2) => pair1.Value.CompareTo(pair2.Value)); theList.Reverse(); theDictionary = theList.ToDictionary(x => x.Key, x => x.Value); string csvDictionary = ""; foreach (KeyValuePair <uint, uint> entry in theDictionary) { // do something with entry.Value or entry.Key csvDictionary += entry.Key.ToString("X") + "," + entry.Value + "\r\n"; } File.WriteAllText(outputFile, csvDictionary); })); }