예제 #1
0
        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);
                }
            }));
        }
예제 #2
0
        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);
                }
            });
        }
예제 #3
0
        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);
            }));
        }