コード例 #1
0
        private void Buttonstart_DoWork()
        {
            Logger.Writer("----------------------------------------");

            this.Dispatcher.Invoke(() =>
            {
                DealWithCheckboxes();
            });

            if (!Directory.Exists(InputFolder))
            {
                Logger.Writer($"Folder {InputFolder} doesn't exist!");
            }
            else
            {
                foreach (var currentWorkingFile in Directory.EnumerateFiles(InputFolder, "*.*", SearchOption.AllDirectories))
                {
                    try
                    {
                        var currentDir = Path.GetDirectoryName(currentWorkingFile);
                        if (currentWorkingFile.Contains(".zip"))
                        {
                            ZipHandler.Extract(currentWorkingFile, TempFolder);
                        }

                        else if (currentWorkingFile.Contains(".png"))
                        {
                            var possibleCard = new FileInfo(currentWorkingFile);
                            UserContentHandler.Identifier(possibleCard, currentWorkingFile, OutputFolder);
                            continue;
                        }
                        if (ModIntegrity.Check(TempFolder))
                        {
                            string ModType     = ModIntegrity.ModType(TempFolder);
                            bool   CABOverride = ModIntegrity.CABOverride(TempFolder);
                            Logger.Writer($"Modtype: {ModType}");

                            if (CABOverride)
                            {
                                Logger.Writer($"Cab override active, Cab will be unchanged.");
                            }

                            // guid, name, version, author, game
                            List <string> ManifestData = ManifestHandler.CheckIntegrity(TempFolder, tagList);
                            var           guid         = ManifestData[0];
                            var           name         = ManifestData[1];
                            var           version      = ManifestData[2];
                            var           author       = ManifestData[3];
                            var           game         = ManifestData[4];
                            var           game2        = ManifestData[5];

                            //if (version == "Unknown")
                            //    version = "v1.0";
                            Console.Write("");

                            if (game == "Unknown")
                            {
                                game = "NoDeclaredGame";
                            }
                            if (game2 == "Unknown")
                            {
                                game2 = "NoDeclaredGame";
                            }

                            string realOutputFolder = $@"{OutputFolder}\{game}\{game2}\{ModType}\{author}\";
                            string outFile          = Misc.FileExists(realOutputFolder, author, name, version);


                            if (guid == "" | version == "Unknown")
                            {
                                Mover.MalformedManifest(currentWorkingFile, InputFolder, OutputFolder);
                                continue;
                            }
                            else
                            {
                                if (!Directory.Exists(realOutputFolder))
                                {
                                    Directory.CreateDirectory(realOutputFolder);
                                }

                                outFile = Misc.IllegalFilenameCheck(outFile);

                                Logger.Writer($"Old name: {currentWorkingFile.Remove(0, currentDir.Length + 1)}.");
                                Logger.Writer($"New name: {outFile}.");

                                if (skiprenaming)
                                {
                                    outFile = currentWorkingFile.Remove(0, currentDir.Length + 1);
                                }

                                var oMD5 = MD5Calc.CalculateMD5(currentWorkingFile);
                                Logger.Writer($"Original MD5: {oMD5}");
                            }

                            // Time to do something useful

                            string[] removeExt = new[] { ".png", ".jpg" };

                            if (!skipremovejunk)
                            {
                                Misc.RemoveFiles(TempFolder, OutputFolder, removeExt);
                            }
                            foreach (var tempFile in Directory.EnumerateFiles(TempFolder, "*.*", SearchOption.AllDirectories))
                            {
                                this.Dispatcher.Invoke(() =>
                                {
                                    Debug.Assert(RandomizeCAB.IsChecked != null, "RandomizeCAB.IsChecked != null");
                                    if (!skipcompression)
                                    {
                                        Misc.PerformCompression(tempFile, RandomizeCAB.IsChecked.Value, CABOverride);
                                    }
                                });
                            }

                            // midl for testing

                            // outFile = currentWorkingFile.Remove(0, currentDir.Length + 1);

                            // midl end



                            ZipHandler.Seal(TempFolder, realOutputFolder, outFile);

                            // Then finally, some cleanup
                            Directory.Delete(TempFolder, true);
                        }
                        else if (currentWorkingFile.Contains(".zip"))
                        {
                            Mover.InproperMod(currentWorkingFile, InputFolder, OutputFolder);
                        }
                    }
                    catch (Exception exception)
                    {
                        Logger.Writer(exception.ToString());
                    }
                }
            }

            tagList.Clear();
            MessageBox.Show("Done");
        }