diff --git a/RombaSharp/Partials/RombaSharp_Inits.cs b/RombaSharp/Partials/RombaSharp_Inits.cs index dbc47604..d05e26e6 100644 --- a/RombaSharp/Partials/RombaSharp_Inits.cs +++ b/RombaSharp/Partials/RombaSharp_Inits.cs @@ -62,7 +62,7 @@ namespace SabreTools FileName = Path.GetFileName(inputs[0]) + " Dir2Dat", Name = Path.GetFileName(inputs[0]) + " Dir2Dat", Description = Path.GetFileName(inputs[0]) + " Dir2Dat", - OutputFormat = OutputFormat.Xml, + OutputFormatFlag = OutputFormatFlag.Xml, Files = new Dictionary>(), }; diff --git a/SabreTools.Helper/Data/Enums.cs b/SabreTools.Helper/Data/Enums.cs index d5585471..d266f707 100644 --- a/SabreTools.Helper/Data/Enums.cs +++ b/SabreTools.Helper/Data/Enums.cs @@ -101,23 +101,6 @@ Unzip, } - /// - /// Determines the DAT output format - /// - public enum OutputFormat - { - None = 0, - Xml, - ClrMamePro, - RomCenter, - DOSCenter, - MissFile, - SabreDat, - RedumpMD5, - RedumpSHA1, - RedumpSFV, - } - /// /// Determines the level to scan archives at /// diff --git a/SabreTools.Helper/Data/Structs.cs b/SabreTools.Helper/Data/Structs.cs index 7a0e25a0..ab5d2302 100644 --- a/SabreTools.Helper/Data/Structs.cs +++ b/SabreTools.Helper/Data/Structs.cs @@ -124,7 +124,7 @@ namespace SabreTools.Helper public ForceMerging ForceMerging; public ForceNodump ForceNodump; public ForcePacking ForcePacking; - public OutputFormat OutputFormat; + public OutputFormatFlag OutputFormatFlag; public bool MergeRoms; public List Hashes; @@ -318,7 +318,7 @@ namespace SabreTools.Helper public ForceMerging ForceMerging; public ForceNodump ForceNodump; public ForcePacking ForcePacking; - public OutputFormat OutputFormat; + public OutputFormatFlag OutputFormatFlag; public bool MergeRoms; public Dictionary> Files; @@ -363,7 +363,7 @@ namespace SabreTools.Helper ForceMerging = this.ForceMerging, ForceNodump = this.ForceNodump, ForcePacking = this.ForcePacking, - OutputFormat = this.OutputFormat, + OutputFormatFlag = this.OutputFormatFlag, MergeRoms = this.MergeRoms, Files = this.Files, UseGame = this.UseGame, @@ -406,7 +406,7 @@ namespace SabreTools.Helper ForceMerging = this.ForceMerging, ForceNodump = this.ForceNodump, ForcePacking = this.ForcePacking, - OutputFormat = this.OutputFormat, + OutputFormatFlag = this.OutputFormatFlag, MergeRoms = this.MergeRoms, Files = new Dictionary>(), UseGame = this.UseGame, diff --git a/SabreTools.Helper/Objects/DATFromDir.cs b/SabreTools.Helper/Objects/DATFromDir.cs index 724f33ac..62bf99c4 100644 --- a/SabreTools.Helper/Objects/DATFromDir.cs +++ b/SabreTools.Helper/Objects/DATFromDir.cs @@ -115,13 +115,13 @@ namespace SabreTools else { // Create and open the output file for writing - FileStream fs = File.Create(Style.CreateOutfileName(Environment.CurrentDirectory, _datdata)); + FileStream fs = File.Create(Style.CreateOutfileNames(Environment.CurrentDirectory, _datdata)[_datdata.OutputFormatFlag]); sw = new StreamWriter(fs, Encoding.UTF8); sw.AutoFlush = true; } // Write out the initial file header - DatTools.WriteHeader(sw, _datdata, _logger); + DatTools.WriteHeader(sw, _datdata.OutputFormatFlag, _datdata, _logger); // Loop over each of the found paths, if any string lastparent = null; @@ -265,7 +265,7 @@ namespace SabreTools Rom rom = roms[i]; // If we're in a mode that doesn't allow for actual empty folders, add the blank info - if (_datdata.OutputFormat != OutputFormat.SabreDat && _datdata.OutputFormat != OutputFormat.MissFile) + if ((_datdata.OutputFormatFlag & OutputFormatFlag.SabreDat) == 0 && (_datdata.OutputFormatFlag & OutputFormatFlag.MissFile) == 0) { rom.Type = ItemType.Rom; rom.Name = "-"; @@ -295,19 +295,19 @@ namespace SabreTools int last = 0; if (lastparent != null && lastparent.ToLowerInvariant() != rom.Machine.Name.ToLowerInvariant()) { - DatTools.WriteEndGame(sw, rom, new List(), new List(), lastparent, _datdata, 0, out last, _logger); + DatTools.WriteEndGame(sw, _datdata.OutputFormatFlag, rom, new List(), new List(), lastparent, 0, out last, _logger); } // If we have a new game, output the beginning of the new item if (lastparent == null || lastparent.ToLowerInvariant() != rom.Machine.Name.ToLowerInvariant()) { - DatTools.WriteStartGame(sw, rom, new List(), lastparent, _datdata, 0, last, _logger); + DatTools.WriteStartGame(sw, _datdata.OutputFormatFlag, rom, new List(), lastparent, 0, last, _logger); } // Write out the rom data - if (_datdata.OutputFormat != OutputFormat.SabreDat && _datdata.OutputFormat != OutputFormat.MissFile) + if ((_datdata.OutputFormatFlag & OutputFormatFlag.SabreDat) == 0 && (_datdata.OutputFormatFlag & OutputFormatFlag.MissFile) == 0) { - DatTools.WriteRomData(sw, rom, lastparent, _datdata, 0, _logger); + DatTools.WriteRomData(sw, _datdata.OutputFormatFlag, rom, lastparent, _datdata, 0, _logger); } } @@ -323,7 +323,7 @@ namespace SabreTools } // Now write the final piece and close the output stream - DatTools.WriteFooter(sw, _datdata, 0, _logger); + DatTools.WriteFooter(sw, _datdata.OutputFormatFlag, _datdata, 0, _logger); sw.Close(); return true; @@ -369,9 +369,9 @@ namespace SabreTools } else { - DatTools.WriteStartGame(sw, rom, new List(), "", _datdata, 0, 0, _logger); - DatTools.WriteRomData(sw, rom, "", _datdata, 0, _logger); - DatTools.WriteEndGame(sw, rom, new List(), new List(), "", _datdata, 0, out last, _logger); + DatTools.WriteStartGame(sw, _datdata.OutputFormatFlag, rom, new List(), "", 0, 0, _logger); + DatTools.WriteRomData(sw, _datdata.OutputFormatFlag, rom, "", _datdata, 0, _logger); + DatTools.WriteEndGame(sw, _datdata.OutputFormatFlag, rom, new List(), new List(), "", 0, out last, _logger); } } else @@ -548,17 +548,17 @@ namespace SabreTools int last = 0; if (lastparent != null && lastparent.ToLowerInvariant() != rom.Machine.Name.ToLowerInvariant()) { - DatTools.WriteEndGame(sw, rom, new List(), new List(), lastparent, datdata, 0, out last, _logger); + DatTools.WriteEndGame(sw, datdata.OutputFormatFlag, rom, new List(), new List(), lastparent, 0, out last, _logger); } // If we have a new game, output the beginning of the new item if (lastparent == null || lastparent.ToLowerInvariant() != rom.Machine.Name.ToLowerInvariant()) { - DatTools.WriteStartGame(sw, rom, new List(), lastparent, datdata, 0, last, _logger); + DatTools.WriteStartGame(sw, datdata.OutputFormatFlag, rom, new List(), lastparent, 0, last, _logger); } // Write out the rom data - DatTools.WriteRomData(sw, rom, lastparent, datdata, 0, _logger); + DatTools.WriteRomData(sw, datdata.OutputFormatFlag, rom, lastparent, datdata, 0, _logger); } _logger.User("File added: " + actualitem + Environment.NewLine); diff --git a/SabreTools.Helper/Objects/Generate.cs b/SabreTools.Helper/Objects/Generate.cs index 803a5510..ab2a9ef7 100644 --- a/SabreTools.Helper/Objects/Generate.cs +++ b/SabreTools.Helper/Objects/Generate.cs @@ -175,7 +175,7 @@ namespace SabreTools Category = "The Wizard of DATz", Author = "The Wizard of DATz", ForcePacking = ForcePacking.None, - OutputFormat = (_old ? OutputFormat.ClrMamePro : OutputFormat.Xml), + OutputFormatFlag = (_old ? OutputFormatFlag.ClrMamePro : OutputFormatFlag.Xml), Files = dict, }; diff --git a/SabreTools.Helper/Objects/GenerateTwo.cs b/SabreTools.Helper/Objects/GenerateTwo.cs index 2ff64a90..9296bf47 100644 --- a/SabreTools.Helper/Objects/GenerateTwo.cs +++ b/SabreTools.Helper/Objects/GenerateTwo.cs @@ -154,7 +154,7 @@ namespace SabreTools Category = "SabreTools", Author = "SabreTools", ForcePacking = ForcePacking.None, - OutputFormat = (_old ? OutputFormat.ClrMamePro : OutputFormat.Xml), + OutputFormatFlag = (_old ? OutputFormatFlag.ClrMamePro : OutputFormatFlag.Xml), MergeRoms = true, }; diff --git a/SabreTools.Helper/Objects/OfflineMerge.cs b/SabreTools.Helper/Objects/OfflineMerge.cs index d2f82f79..47a07816 100644 --- a/SabreTools.Helper/Objects/OfflineMerge.cs +++ b/SabreTools.Helper/Objects/OfflineMerge.cs @@ -304,7 +304,7 @@ namespace SabreTools Category = "", Author = "SabreTools", ForcePacking = ForcePacking.None, - OutputFormat = OutputFormat.Xml, + OutputFormatFlag = OutputFormatFlag.Xml, MergeRoms = true, Files = netNew, }; @@ -317,7 +317,7 @@ namespace SabreTools Category = "", Author = "SabreTools", ForcePacking = ForcePacking.None, - OutputFormat = OutputFormat.Xml, + OutputFormatFlag = OutputFormatFlag.Xml, MergeRoms = true, Files = unneeded, }; @@ -330,7 +330,7 @@ namespace SabreTools Category = "", Author = "SabreTools", ForcePacking = ForcePacking.None, - OutputFormat = OutputFormat.Xml, + OutputFormatFlag = OutputFormatFlag.Xml, MergeRoms = true, Files = newMissing, }; @@ -343,7 +343,7 @@ namespace SabreTools Category = "", Author = "SabreTools", ForcePacking = ForcePacking.None, - OutputFormat = OutputFormat.Xml, + OutputFormatFlag = OutputFormatFlag.Xml, MergeRoms = true, Files = have, }; @@ -417,7 +417,7 @@ namespace SabreTools Category = "", Author = "SabreTools", ForcePacking = ForcePacking.None, - OutputFormat = OutputFormat.Xml, + OutputFormatFlag = OutputFormatFlag.Xml, MergeRoms = true, Files = have, }; @@ -487,7 +487,7 @@ namespace SabreTools Category = "", Author = "SabreTools", ForcePacking = ForcePacking.None, - OutputFormat = OutputFormat.Xml, + OutputFormatFlag = OutputFormatFlag.Xml, MergeRoms = true, Files = have, }; diff --git a/SabreTools.Helper/Tools/DatTools.cs b/SabreTools.Helper/Tools/DatTools.cs index 2646e3b9..f31b0f66 100644 --- a/SabreTools.Helper/Tools/DatTools.cs +++ b/SabreTools.Helper/Tools/DatTools.cs @@ -21,15 +21,15 @@ namespace SabreTools.Helper /// Get what type of DAT the input file is /// /// Name of the file to be parsed - /// The OutputFormat corresponding to the DAT + /// The OutputFormatFlagcorresponding to the DAT /// There is currently no differentiation between XML and SabreDAT here - public static OutputFormat GetOutputFormat(string filename, Logger logger) + public static OutputFormatFlag GetOutputFormat(string filename, Logger logger) { // Limit the output formats based on extension string ext = Path.GetExtension(filename).ToLowerInvariant(); if (ext != ".dat" && ext != ".xml") { - return OutputFormat.None; + return 0; } // Read the input file, if possible @@ -39,7 +39,7 @@ namespace SabreTools.Helper if (!File.Exists(filename)) { logger.Warning("File '" + filename + "' could not read from!"); - return OutputFormat.None; + return 0; } try @@ -50,20 +50,20 @@ namespace SabreTools.Helper sr.Dispose(); if (first.Contains("<") && first.Contains(">")) { - return OutputFormat.Xml; + return OutputFormatFlag.Xml; } else if (first.Contains("[") && first.Contains("]")) { - return OutputFormat.RomCenter; + return OutputFormatFlag.RomCenter; } else { - return OutputFormat.ClrMamePro; + return OutputFormatFlag.ClrMamePro; } } catch (Exception) { - return OutputFormat.None; + return 0; } } @@ -175,7 +175,7 @@ namespace SabreTools.Helper datdata.FileName = (String.IsNullOrEmpty(datdata.FileName) ? (keepext ? Path.GetFileName(filename) : Path.GetFileNameWithoutExtension(filename)) : datdata.FileName); // If the output type isn't set already, get the internal output type - datdata.OutputFormat = (datdata.OutputFormat == OutputFormat.None ? GetOutputFormat(filename, logger) : datdata.OutputFormat); + datdata.OutputFormatFlag = (datdata.OutputFormatFlag == 0 ? GetOutputFormat(filename, logger) : datdata.OutputFormatFlag); // Make sure there's a dictionary to read to if (datdata.Files == null) @@ -186,12 +186,12 @@ namespace SabreTools.Helper // Now parse the correct type of DAT switch (GetOutputFormat(filename, logger)) { - case OutputFormat.ClrMamePro: + case OutputFormatFlag.ClrMamePro: return ParseCMP(filename, sysid, srcid, datdata, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, logger, keep, clean); - case OutputFormat.RomCenter: + case OutputFormatFlag.RomCenter: return ParseRC(filename, sysid, srcid, datdata, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, logger, clean); - case OutputFormat.SabreDat: - case OutputFormat.Xml: + case OutputFormatFlag.SabreDat: + case OutputFormatFlag.Xml: return ParseXML(filename, sysid, srcid, datdata, gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, logger, keep, clean, softlist); default: return datdata; @@ -1779,7 +1779,7 @@ namespace SabreTools.Helper root, logger, true, clean, softlist, keepext:(innerDatdata.XSV != null)); // If the extension matches, append ".new" to the filename - string extension = (innerDatdata.OutputFormat == OutputFormat.Xml || innerDatdata.OutputFormat == OutputFormat.SabreDat ? ".xml" : ".dat"); + string extension = ((innerDatdata.OutputFormatFlag & OutputFormatFlag.Xml) != 0 || (innerDatdata.OutputFormatFlag & OutputFormatFlag.SabreDat) != 0 ? ".xml" : ".dat"); if (outputDirectory == "" && Path.GetExtension(inputFileName) == extension) { innerDatdata.FileName += ".new"; @@ -1804,7 +1804,7 @@ namespace SabreTools.Helper slt, seq, crc, md5, sha1, nodump, trim, single, root, logger, true, clean, keepext:(datdata.XSV != null)); // If the extension matches, append ".new" to the filename - string extension = (innerDatdata.OutputFormat == OutputFormat.Xml || innerDatdata.OutputFormat == OutputFormat.SabreDat ? ".xml" : ".dat"); + string extension = ((innerDatdata.OutputFormatFlag & OutputFormatFlag.Xml) != 0 || (innerDatdata.OutputFormatFlag & OutputFormatFlag.SabreDat) != 0 ? ".xml" : ".dat"); if (outputDirectory == "" && Path.GetExtension(file) == extension) { innerDatdata.FileName += ".new"; @@ -1856,7 +1856,7 @@ namespace SabreTools.Helper int i = 0; userData = new Dat { - OutputFormat = (inputDat.OutputFormat != OutputFormat.None ? inputDat.OutputFormat : OutputFormat.None), + OutputFormatFlag = (inputDat.OutputFormatFlag != 0 ? inputDat.OutputFormatFlag : 0), Files = new Dictionary>(), MergeRoms = inputDat.MergeRoms, }; @@ -1876,7 +1876,7 @@ namespace SabreTools.Helper Dictionary> temp = userData.Files; userData = new Dat { - OutputFormat = (inputDat.OutputFormat != OutputFormat.None ? inputDat.OutputFormat : OutputFormat.None), + OutputFormatFlag = (inputDat.OutputFormatFlag != 0 ? inputDat.OutputFormatFlag : 0), Files = temp, MergeRoms = inputDat.MergeRoms, }; @@ -2424,6 +2424,7 @@ namespace SabreTools.Helper /// /// Names of the input files and/or folders /// User specified inputs contained in a DatData object + /// Non-zero flag for output format, zero otherwise for default /// Optional param for output directory /// True if input files should be merged into a single file, false otherwise /// Non-zero flag for diffing mode, zero otherwise @@ -2448,9 +2449,10 @@ namespace SabreTools.Helper /// String representing root directory to compare against for length calculation /// Integer representing the maximum amount of parallelization to be used /// Logging object for console and file output - public static void UpdateParallel(List inputFileNames, Dat datdata, string outputDirectory, bool merge, DiffMode diff, bool? cascade, bool inplace, - bool skip, bool bare, bool clean, bool softlist, string gamename, string romname, string romtype, long sgt, long slt, long seq, string crc, - string md5, string sha1, bool? nodump, bool trim, bool single, string root, int maxDegreeOfParallelism, Logger logger) + public static void UpdateParallel(List inputFileNames, Dat datdata, OutputFormatFlag outputFormatFlag, string outputDirectory, bool merge, + DiffMode diff, bool? cascade, bool inplace, bool skip, bool bare, bool clean, bool softlist, string gamename, string romname, string romtype, + long sgt, long slt, long seq, string crc, string md5, string sha1, bool? nodump, bool trim, bool single, string root, int maxDegreeOfParallelism, + Logger logger) { // If we're in merging or diffing mode, use the full list of inputs if (merge || diff != 0) @@ -2544,7 +2546,7 @@ namespace SabreTools.Helper root, logger, true, clean, softlist, keepext: (innerDatdata.XSV != null)); // If the extension matches, append ".new" to the filename - string extension = (innerDatdata.OutputFormat == OutputFormat.Xml || innerDatdata.OutputFormat == OutputFormat.SabreDat ? ".xml" : ".dat"); + string extension = ((innerDatdata.OutputFormatFlag & OutputFormatFlag.Xml) != 0 || (innerDatdata.OutputFormatFlag & OutputFormatFlag.SabreDat) != 0 ? ".xml" : ".dat"); if (outputDirectory == "" && Path.GetExtension(inputFileName) == extension) { innerDatdata.FileName += ".new"; @@ -2571,7 +2573,7 @@ namespace SabreTools.Helper slt, seq, crc, md5, sha1, nodump, trim, single, root, logger, true, clean, keepext: (datdata.XSV != null)); // If the extension matches, append ".new" to the filename - string extension = (innerDatdata.OutputFormat == OutputFormat.Xml || innerDatdata.OutputFormat == OutputFormat.SabreDat ? ".xml" : ".dat"); + string extension = ((innerDatdata.OutputFormatFlag & OutputFormatFlag.Xml) != 0 || (innerDatdata.OutputFormatFlag & OutputFormatFlag.SabreDat) != 0 ? ".xml" : ".dat"); if (outputDirectory == "" && Path.GetExtension(file) == extension) { innerDatdata.FileName += ".new"; @@ -2623,7 +2625,7 @@ namespace SabreTools.Helper userData = new Dat { - OutputFormat = (inputDat.OutputFormat != OutputFormat.None ? inputDat.OutputFormat : OutputFormat.None), + OutputFormatFlag = (inputDat.OutputFormatFlag != 0 ? inputDat.OutputFormatFlag: 0), Files = new Dictionary>(), MergeRoms = inputDat.MergeRoms, }; @@ -2634,7 +2636,7 @@ namespace SabreTools.Helper logger.User("Adding DAT: " + input.Split('¬')[0]); datHeaders[i] = new Dat { - OutputFormat = (inputDat.OutputFormat != OutputFormat.None ? inputDat.OutputFormat : OutputFormat.None), + OutputFormatFlag = (inputDat.OutputFormatFlag != 0 ? inputDat.OutputFormatFlag: 0), Files = new Dictionary>(), MergeRoms = inputDat.MergeRoms, }; @@ -2709,9 +2711,9 @@ namespace SabreTools.Helper } // If the DAT has no output format, default to XML - if (datdata.OutputFormat == OutputFormat.None) + if (datdata.OutputFormatFlag == 0) { - datdata.OutputFormat = OutputFormat.Xml; + datdata.OutputFormatFlag = OutputFormatFlag.Xml; } // Make sure that the three essential fields are filled in @@ -2758,87 +2760,91 @@ namespace SabreTools.Helper SortedDictionary> sortable = BucketByGame(datdata.Files, datdata.MergeRoms, norename, logger); // Get the outfile name - string outfile = Style.CreateOutfileName(outDir, datdata); - - logger.User("Opening file for writing: " + outfile); + Dictionary outfiles = Style.CreateOutfileNames(outDir, datdata); try { - FileStream fs = File.Create(outfile); - StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); - - // Write out the header - WriteHeader(sw, datdata, logger); - - // Write out each of the machines and roms - int depth = 2, last = -1; - string lastgame = null; - List splitpath = new List(); - - // Get a properly sorted set of keys - List keys = sortable.Keys.ToList(); - keys.Sort(Style.CompareNumeric); - - foreach (string key in keys) + foreach (OutputFormatFlag outputFormatFlag in outfiles.Keys) { - List roms = sortable[key]; + string outfile = outfiles[outputFormatFlag]; - for (int index = 0; index < roms.Count; index++) + logger.User("Opening file for writing: " + outfile); + FileStream fs = File.Create(outfile); + StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); + + // Write out the header + WriteHeader(sw, outputFormatFlag, datdata, logger); + + // Write out each of the machines and roms + int depth = 2, last = -1; + string lastgame = null; + List splitpath = new List(); + + // Get a properly sorted set of keys + List keys = sortable.Keys.ToList(); + keys.Sort(Style.CompareNumeric); + + foreach (string key in keys) { - Rom rom = roms[index]; - List newsplit = rom.Machine.Name.Split('\\').ToList(); + List roms = sortable[key]; - // If we have a different game and we're not at the start of the list, output the end of last item - if (lastgame != null && lastgame.ToLowerInvariant() != rom.Machine.Name.ToLowerInvariant()) + for (int index = 0; index < roms.Count; index++) { - depth = WriteEndGame(sw, rom, splitpath, newsplit, lastgame, datdata, depth, out last, logger); - } + Rom rom = roms[index]; + List newsplit = rom.Machine.Name.Split('\\').ToList(); - // If we have a new game, output the beginning of the new item - if (lastgame == null || lastgame.ToLowerInvariant() != rom.Machine.Name.ToLowerInvariant()) - { - depth = WriteStartGame(sw, rom, newsplit, lastgame, datdata, depth, last, logger); - } - - // If we have a "null" game (created by DATFromDir or something similar), log it to file - if (rom.HashData.Size == -1 && rom.HashData.CRC == "null" && rom.HashData.MD5 == "null" && rom.HashData.SHA1 == "null") - { - logger.Log("Empty folder found: " + rom.Machine.Name); - - // If we're in a mode that doesn't allow for actual empty folders, add the blank info - if (datdata.OutputFormat != OutputFormat.SabreDat && datdata.OutputFormat != OutputFormat.MissFile) + // If we have a different game and we're not at the start of the list, output the end of last item + if (lastgame != null && lastgame.ToLowerInvariant() != rom.Machine.Name.ToLowerInvariant()) { - rom.Name = (rom.Name == "null" ? "-" : rom.Name); - rom.HashData.Size = Constants.SizeZero; - rom.HashData.CRC = Constants.CRCZero; - rom.HashData.MD5 = Constants.MD5Zero; - rom.HashData.SHA1 = Constants.SHA1Zero; + depth = WriteEndGame(sw, outputFormatFlag, rom, splitpath, newsplit, lastgame, depth, out last, logger); } - // Otherwise, set the new path and such, write out, and continue - else + // If we have a new game, output the beginning of the new item + if (lastgame == null || lastgame.ToLowerInvariant() != rom.Machine.Name.ToLowerInvariant()) { - splitpath = newsplit; - lastgame = rom.Machine.Name; - continue; + depth = WriteStartGame(sw, outputFormatFlag, rom, newsplit, lastgame, depth, last, logger); } + + // If we have a "null" game (created by DATFromDir or something similar), log it to file + if (rom.HashData.Size == -1 && rom.HashData.CRC == "null" && rom.HashData.MD5 == "null" && rom.HashData.SHA1 == "null") + { + logger.Log("Empty folder found: " + rom.Machine.Name); + + // If we're in a mode that doesn't allow for actual empty folders, add the blank info + if (outputFormatFlag != OutputFormatFlag.SabreDat && outputFormatFlag != OutputFormatFlag.MissFile) + { + rom.Name = (rom.Name == "null" ? "-" : rom.Name); + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; + } + + // Otherwise, set the new path and such, write out, and continue + else + { + splitpath = newsplit; + lastgame = rom.Machine.Name; + continue; + } + } + + // Now, output the rom data + WriteRomData(sw, outputFormatFlag, rom, lastgame, datdata, depth, logger, ignoreblanks); + + // Set the new data to compare against + splitpath = newsplit; + lastgame = rom.Machine.Name; } - - // Now, output the rom data - WriteRomData(sw, rom, lastgame, datdata, depth, logger, ignoreblanks); - - // Set the new data to compare against - splitpath = newsplit; - lastgame = rom.Machine.Name; } + + // Write the file footer out + WriteFooter(sw, outputFormatFlag, datdata, depth, logger); + + logger.Log("File written!" + Environment.NewLine); + sw.Close(); + fs.Close(); } - - // Write the file footer out - WriteFooter(sw, datdata, depth, logger); - - logger.Log("File written!" + Environment.NewLine); - sw.Close(); - fs.Close(); } catch (Exception ex) { @@ -2853,17 +2859,18 @@ namespace SabreTools.Helper /// Write out DAT header using the supplied StreamWriter /// /// StreamWriter to output to + /// Output format to write to /// DatData object representing DAT information /// Logger object for file and console output /// True if the data was written, false on error - public static bool WriteHeader(StreamWriter sw, Dat datdata, Logger logger) + public static bool WriteHeader(StreamWriter sw, OutputFormatFlag outputFormatFlag, Dat datdata, Logger logger) { try { string header = ""; - switch (datdata.OutputFormat) + switch (outputFormatFlag) { - case OutputFormat.ClrMamePro: + case OutputFormatFlag.ClrMamePro: header = "clrmamepro (\n" + "\tname \"" + datdata.Name + "\"\n" + "\tdescription \"" + datdata.Description + "\"\n" + @@ -2878,7 +2885,7 @@ namespace SabreTools.Helper (datdata.ForcePacking == ForcePacking.Unzip ? "\tforcezipping no\n" : "") + ")\n"; break; - case OutputFormat.MissFile: + case OutputFormatFlag.MissFile: if (datdata.XSV == true) { header = "\"File Name\"\t\"Internal Name\"\t\"Description\"\t\"Game Name\"\t\"Game Description\"\t\"Type\"\t\"" + @@ -2890,7 +2897,7 @@ namespace SabreTools.Helper "Rom Name\",\"Disk Name\",\"Size\",\"CRC\",\"MD5\",\"SHA1\",\"Nodump\"\n"; } break; - case OutputFormat.RomCenter: + case OutputFormatFlag.RomCenter: header = "[CREDITS]\n" + "author=" + datdata.Author + "\n" + "version=" + datdata.Version + "\n" + @@ -2904,7 +2911,7 @@ namespace SabreTools.Helper "version=" + datdata.Description + "\n" + "[GAMES]\n"; break; - case OutputFormat.SabreDat: + case OutputFormatFlag.SabreDat: header = "\n" + "\n\n" + "\n" + @@ -2925,7 +2932,7 @@ namespace SabreTools.Helper "\t\n" + "\t\n"; break; - case OutputFormat.Xml: + case OutputFormatFlag.Xml: header = "\n" + "\n\n" + "\n" + @@ -2963,15 +2970,15 @@ namespace SabreTools.Helper /// Write out Game start using the supplied StreamWriter /// /// StreamWriter to output to + /// Output format to write to /// RomData object to be output /// Split path representing the parent game (SabreDAT only) /// The name of the last game to be output - /// DatData object representing DAT information /// Current depth to output file at (SabreDAT only) /// Last known depth to cycle back from (SabreDAT only) /// Logger object for file and console output /// The new depth of the tag - public static int WriteStartGame(StreamWriter sw, Rom rom, List newsplit, string lastgame, Dat datdata, int depth, int last, Logger logger) + public static int WriteStartGame(StreamWriter sw, OutputFormatFlag outputFormatFlag, Rom rom, List newsplit, string lastgame, int depth, int last, Logger logger) { try { @@ -2982,13 +2989,13 @@ namespace SabreTools.Helper } string state = ""; - switch (datdata.OutputFormat) + switch (outputFormatFlag) { - case OutputFormat.ClrMamePro: + case OutputFormatFlag.ClrMamePro: state += "game (\n\tname \"" + rom.Machine.Name + "\"\n" + "\tdescription \"" + (String.IsNullOrEmpty(rom.Machine.Description) ? rom.Machine.Name : rom.Machine.Description) + "\"\n"; break; - case OutputFormat.SabreDat: + case OutputFormatFlag.SabreDat: for (int i = (last == -1 ? 0 : last); i < newsplit.Count; i++) { for (int j = 0; j < depth - last + i - (lastgame == null ? 1 : 0); j++) @@ -3000,7 +3007,7 @@ namespace SabreTools.Helper } depth = depth - (last == -1 ? 0 : last) + newsplit.Count; break; - case OutputFormat.Xml: + case OutputFormatFlag.Xml: state += "\t\n" + "\t\t" + HttpUtility.HtmlEncode((String.IsNullOrEmpty(rom.Machine.Description) ? rom.Machine.Name : rom.Machine.Description)) + "\n"; break; @@ -3021,16 +3028,16 @@ namespace SabreTools.Helper /// Write out Game start using the supplied StreamWriter /// /// StreamWriter to output to + /// Output format to write to /// RomData object to be output /// Split path representing last kwown parent game (SabreDAT only) /// Split path representing the parent game (SabreDAT only) /// The name of the last game to be output - /// DatData object representing DAT information /// Current depth to output file at (SabreDAT only) /// Last known depth to cycle back from (SabreDAT only) /// Logger object for file and console output /// The new depth of the tag - public static int WriteEndGame(StreamWriter sw, Rom rom, List splitpath, List newsplit, string lastgame, Dat datdata, int depth, out int last, Logger logger) + public static int WriteEndGame(StreamWriter sw, OutputFormatFlag outputFormatFlag, Rom rom, List splitpath, List newsplit, string lastgame, int depth, out int last, Logger logger) { last = 0; @@ -3038,12 +3045,12 @@ namespace SabreTools.Helper { string state = ""; - switch (datdata.OutputFormat) + switch (outputFormatFlag) { - case OutputFormat.ClrMamePro: + case OutputFormatFlag.ClrMamePro: state += ")\n"; break; - case OutputFormat.SabreDat: + case OutputFormatFlag.SabreDat: if (splitpath != null) { for (int i = 0; i < newsplit.Count && i < splitpath.Count; i++) @@ -3073,7 +3080,7 @@ namespace SabreTools.Helper depth = 2 + last; } break; - case OutputFormat.Xml: + case OutputFormatFlag.Xml: state += "\t\n"; break; } @@ -3093,6 +3100,7 @@ namespace SabreTools.Helper /// Write out RomData using the supplied StreamWriter /// /// StreamWriter to output to + /// Output format to write to /// RomData object to be output /// The name of the last game to be output /// DatData object representing DAT information @@ -3100,7 +3108,7 @@ namespace SabreTools.Helper /// Logger object for file and console output /// True if blank roms should be skipped on output, false otherwise (default) /// True if the data was written, false on error - public static bool WriteRomData(StreamWriter sw, Rom rom, string lastgame, Dat datdata, int depth, Logger logger, bool ignoreblanks = false) + public static bool WriteRomData(StreamWriter sw, OutputFormatFlag outputFormatFlag, Rom rom, string lastgame, Dat datdata, int depth, Logger logger, bool ignoreblanks = false) { // If we are in ignore blanks mode AND we have a blank (0-size) rom, skip if (ignoreblanks && (rom.HashData.Size == 0 || rom.HashData.Size == -1)) @@ -3111,9 +3119,9 @@ namespace SabreTools.Helper try { string state = ""; - switch (datdata.OutputFormat) + switch (outputFormatFlag) { - case OutputFormat.ClrMamePro: + case OutputFormatFlag.ClrMamePro: state += "\t" + rom.Type.ToString().ToLowerInvariant() + " ( name \"" + rom.Name + "\"" + (rom.HashData.Size != -1 ? " size " + rom.HashData.Size : "") + (!String.IsNullOrEmpty(rom.HashData.CRC) ? " crc " + rom.HashData.CRC.ToLowerInvariant() : "") + @@ -3123,7 +3131,7 @@ namespace SabreTools.Helper (rom.Nodump ? " flags nodump" : "") + " )\n"; break; - case OutputFormat.MissFile: + case OutputFormatFlag.MissFile: string pre = datdata.Prefix + (datdata.Quotes ? "\"" : ""); string post = (datdata.Quotes ? "\"" : "") + datdata.Postfix; @@ -3188,23 +3196,23 @@ namespace SabreTools.Helper } } break; - case OutputFormat.RedumpMD5: + case OutputFormatFlag.RedumpMD5: state += rom.HashData.MD5 + " *" + rom.Name + "\n"; break; - case OutputFormat.RedumpSFV: + case OutputFormatFlag.RedumpSFV: state += rom.Name + " " + rom.HashData.CRC + "\n"; break; - case OutputFormat.RedumpSHA1: + case OutputFormatFlag.RedumpSHA1: state += rom.HashData.SHA1 + " *" + rom.Name + "\n"; break; - case OutputFormat.RomCenter: + case OutputFormatFlag.RomCenter: state += "¬¬¬" + HttpUtility.HtmlEncode(rom.Machine) + "¬" + HttpUtility.HtmlEncode((String.IsNullOrEmpty(rom.Machine.Description) ? rom.Machine.Name : rom.Machine.Description)) + "¬" + HttpUtility.HtmlEncode(rom.Name) + "¬" + rom.HashData.CRC.ToLowerInvariant() + "¬" + (rom.HashData.Size != -1 ? rom.HashData.Size.ToString() : "") + "¬¬¬\n"; break; - case OutputFormat.SabreDat: + case OutputFormatFlag.SabreDat: string prefix = ""; for (int i = 0; i < depth; i++) { @@ -3224,7 +3232,7 @@ namespace SabreTools.Helper prefix + "\n" : "/>\n"); break; - case OutputFormat.Xml: + case OutputFormatFlag.Xml: state += "\t\t<" + rom.Type.ToString().ToLowerInvariant() + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" + (rom.HashData.Size != -1 ? " size=\"" + rom.HashData.Size + "\"" : "") + (!String.IsNullOrEmpty(rom.HashData.CRC) ? " crc=\"" + rom.HashData.CRC.ToLowerInvariant() + "\"" : "") + @@ -3255,7 +3263,7 @@ namespace SabreTools.Helper /// Current depth to output file at (SabreDAT only) /// Logger object for file and console output /// True if the data was written, false on error - public static bool WriteFooter(StreamWriter sw, Dat datdata, int depth, Logger logger) + public static bool WriteFooter(StreamWriter sw, OutputFormatFlag outputFormatFlag, Dat datdata, int depth, Logger logger) { try { @@ -3264,12 +3272,12 @@ namespace SabreTools.Helper // If we have roms, output the full footer if (datdata.Files != null && datdata.Files.Count > 0) { - switch (datdata.OutputFormat) + switch (outputFormatFlag) { - case OutputFormat.ClrMamePro: + case OutputFormatFlag.ClrMamePro: footer = ")"; break; - case OutputFormat.SabreDat: + case OutputFormatFlag.SabreDat: for (int i = depth - 1; i >= 2; i--) { // Print out the number of tabs and the end folder @@ -3281,7 +3289,7 @@ namespace SabreTools.Helper } footer += "\t\n"; break; - case OutputFormat.Xml: + case OutputFormatFlag.Xml: footer = "\t\n"; break; } @@ -3290,10 +3298,10 @@ namespace SabreTools.Helper // Otherwise, output the abbreviated form else { - switch (datdata.OutputFormat) + switch (outputFormatFlag) { - case OutputFormat.SabreDat: - case OutputFormat.Xml: + case OutputFormatFlag.SabreDat: + case OutputFormatFlag.Xml: footer = ""; break; } @@ -3343,8 +3351,8 @@ namespace SabreTools.Helper string newExtBString = string.Join(",", newExtB); // Get the file format - OutputFormat outputFormat = GetOutputFormat(filename, logger); - if (outputFormat == OutputFormat.None) + OutputFormatFlag outputFormatFlag = GetOutputFormat(filename, logger); + if (outputFormatFlag == 0) { return true; } @@ -3368,7 +3376,7 @@ namespace SabreTools.Helper Url = datdata.Url, Comment = datdata.Comment, Files = new Dictionary>(), - OutputFormat = outputFormat, + OutputFormatFlag = outputFormatFlag, }; Dat datdataB = new Dat { @@ -3384,7 +3392,7 @@ namespace SabreTools.Helper Url = datdata.Url, Comment = datdata.Comment, Files = new Dictionary>(), - OutputFormat = outputFormat, + OutputFormatFlag = outputFormatFlag, }; // If roms is empty, return false @@ -3481,8 +3489,8 @@ namespace SabreTools.Helper basepath = (basepath.EndsWith(Path.DirectorySeparatorChar.ToString()) ? basepath : basepath + Path.DirectorySeparatorChar); // Get the file format - OutputFormat outputFormat = GetOutputFormat(filename, logger); - if (outputFormat == OutputFormat.None) + OutputFormatFlag outputFormatFlag = GetOutputFormat(filename, logger); + if (outputFormatFlag == 0) { return true; } @@ -3511,7 +3519,7 @@ namespace SabreTools.Helper ForceMerging = datdata.ForceMerging, ForceNodump = datdata.ForceNodump, ForcePacking = datdata.ForcePacking, - OutputFormat = outputFormat, + OutputFormatFlag = outputFormatFlag, MergeRoms = datdata.MergeRoms, Files = new Dictionary>(), }; @@ -3533,7 +3541,7 @@ namespace SabreTools.Helper ForceMerging = datdata.ForceMerging, ForceNodump = datdata.ForceNodump, ForcePacking = datdata.ForcePacking, - OutputFormat = outputFormat, + OutputFormatFlag = outputFormatFlag, MergeRoms = datdata.MergeRoms, Files = new Dictionary>(), }; @@ -3555,7 +3563,7 @@ namespace SabreTools.Helper ForceMerging = datdata.ForceMerging, ForceNodump = datdata.ForceNodump, ForcePacking = datdata.ForcePacking, - OutputFormat = outputFormat, + OutputFormatFlag = outputFormatFlag, MergeRoms = datdata.MergeRoms, Files = new Dictionary>(), }; @@ -3577,7 +3585,7 @@ namespace SabreTools.Helper ForceMerging = datdata.ForceMerging, ForceNodump = datdata.ForceNodump, ForcePacking = datdata.ForcePacking, - OutputFormat = outputFormat, + OutputFormatFlag = outputFormatFlag, MergeRoms = datdata.MergeRoms, Files = new Dictionary>(), }; @@ -3695,8 +3703,8 @@ namespace SabreTools.Helper basepath = (basepath.EndsWith(Path.DirectorySeparatorChar.ToString()) ? basepath : basepath + Path.DirectorySeparatorChar); // Get the file format - OutputFormat outputFormat = GetOutputFormat(filename, logger); - if (outputFormat == OutputFormat.None) + OutputFormatFlag outputFormatFlag = GetOutputFormat(filename, logger); + if (outputFormatFlag == 0) { return true; } @@ -3725,7 +3733,7 @@ namespace SabreTools.Helper ForceMerging = datdata.ForceMerging, ForceNodump = datdata.ForceNodump, ForcePacking = datdata.ForcePacking, - OutputFormat = outputFormat, + OutputFormatFlag = outputFormatFlag, MergeRoms = datdata.MergeRoms, Files = new Dictionary>(), }; @@ -3747,7 +3755,7 @@ namespace SabreTools.Helper ForceMerging = datdata.ForceMerging, ForceNodump = datdata.ForceNodump, ForcePacking = datdata.ForcePacking, - OutputFormat = outputFormat, + OutputFormatFlag = outputFormatFlag, MergeRoms = datdata.MergeRoms, Files = new Dictionary>(), }; diff --git a/SabreTools.Helper/Tools/DatToolsHash.cs b/SabreTools.Helper/Tools/DatToolsHash.cs index 9a49c530..15243456 100644 --- a/SabreTools.Helper/Tools/DatToolsHash.cs +++ b/SabreTools.Helper/Tools/DatToolsHash.cs @@ -39,7 +39,7 @@ namespace SabreTools.Helper datdata.FileName = (String.IsNullOrEmpty(datdata.FileName) ? (keepext ? Path.GetFileName(filename) : Path.GetFileNameWithoutExtension(filename)) : datdata.FileName); // If the output type isn't set already, get the internal output type - datdata.OutputFormat = (datdata.OutputFormat == OutputFormat.None ? DatTools.GetOutputFormat(filename, logger) : datdata.OutputFormat); + datdata.OutputFormatFlag = (datdata.OutputFormatFlag == 0 ? DatTools.GetOutputFormat(filename, logger) : datdata.OutputFormatFlag); // Make sure there's a dictionary to read to if (datdata.Hashes == null) @@ -50,12 +50,12 @@ namespace SabreTools.Helper // Now parse the correct type of DAT switch (DatTools.GetOutputFormat(filename, logger)) { - case OutputFormat.ClrMamePro: + case OutputFormatFlag.ClrMamePro: return ParseCMP(filename, sysid, srcid, datdata, logger, keep, clean); - case OutputFormat.RomCenter: + case OutputFormatFlag.RomCenter: return ParseRC(filename, sysid, srcid, datdata, logger, clean); - case OutputFormat.SabreDat: - case OutputFormat.Xml: + case OutputFormatFlag.SabreDat: + case OutputFormatFlag.Xml: return ParseXML(filename, sysid, srcid, datdata, logger, keep, clean, softlist); default: return datdata; diff --git a/SabreTools.Helper/Tools/Style.cs b/SabreTools.Helper/Tools/Style.cs index 4b36eaf6..cc98e150 100644 --- a/SabreTools.Helper/Tools/Style.cs +++ b/SabreTools.Helper/Tools/Style.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; @@ -151,49 +152,74 @@ namespace SabreTools.Helper /// /// Output directory /// DAT information - /// String representing the proper name - public static string CreateOutfileName(string outDir, Dat datdata) + /// Dictionary of output formats mapped to file names + public static Dictionary CreateOutfileNames(string outDir, Dat datdata) { + // Create the output dictionary + Dictionary outfileNames = new Dictionary(); + // Double check the outdir for the end delim if (!outDir.EndsWith(Path.DirectorySeparatorChar.ToString())) { outDir += Path.DirectorySeparatorChar; } - // Get the extension from the output type - string extension = ""; - switch(datdata.OutputFormat) + // Get the extensions from the output type + if ((datdata.OutputFormatFlag & OutputFormatFlag.Xml) != 0) { - case OutputFormat.ClrMamePro: - case OutputFormat.DOSCenter: - case OutputFormat.RomCenter: - extension = ".dat"; - break; - case OutputFormat.MissFile: - extension = ".txt"; - break; - case OutputFormat.SabreDat: - case OutputFormat.Xml: - extension = ".xml"; - break; - case OutputFormat.RedumpMD5: - extension = ".md5"; - break; - case OutputFormat.RedumpSFV: - extension = ".sfv"; - break; - case OutputFormat.RedumpSHA1: - extension = ".sha1"; - break; - } + outfileNames.Add(OutputFormatFlag.Xml, CreateOutfileNamesHelper(outDir, ".xml", datdata)); + }; + if ((datdata.OutputFormatFlag & OutputFormatFlag.ClrMamePro) != 0) + { + outfileNames.Add(OutputFormatFlag.ClrMamePro, CreateOutfileNamesHelper(outDir, ".dat", datdata)); + }; + if ((datdata.OutputFormatFlag & OutputFormatFlag.RomCenter) != 0) + { + outfileNames.Add(OutputFormatFlag.RomCenter, CreateOutfileNamesHelper(outDir, ".rc.dat", datdata)); + }; + if ((datdata.OutputFormatFlag & OutputFormatFlag.DOSCenter) != 0) + { + outfileNames.Add(OutputFormatFlag.DOSCenter, CreateOutfileNamesHelper(outDir, ".dc.dat", datdata)); + }; + if ((datdata.OutputFormatFlag & OutputFormatFlag.MissFile) != 0) + { + outfileNames.Add(OutputFormatFlag.MissFile, CreateOutfileNamesHelper(outDir, ".txt", datdata)); + }; + if ((datdata.OutputFormatFlag & OutputFormatFlag.SabreDat) != 0) + { + outfileNames.Add(OutputFormatFlag.SabreDat, CreateOutfileNamesHelper(outDir, ".sd.xml", datdata)); + }; + if ((datdata.OutputFormatFlag & OutputFormatFlag.RedumpMD5) != 0) + { + outfileNames.Add(OutputFormatFlag.RedumpMD5, CreateOutfileNamesHelper(outDir, ".md5", datdata)); + }; + if ((datdata.OutputFormatFlag & OutputFormatFlag.RedumpSHA1) != 0) + { + outfileNames.Add(OutputFormatFlag.RedumpSHA1, CreateOutfileNamesHelper(outDir, ".sha1", datdata)); + }; + if ((datdata.OutputFormatFlag & OutputFormatFlag.RedumpSFV) != 0) + { + outfileNames.Add(OutputFormatFlag.RedumpSFV, CreateOutfileNamesHelper(outDir, ".sfv", datdata)); + }; + + return outfileNames; + } + + /// + /// Help generating the outfile name + /// + /// Output directory + /// Extension to use for the file + /// DAT information + /// String containing the new filename + private static string CreateOutfileNamesHelper(string outDir, string extension, Dat datdata) + { string filename = (String.IsNullOrEmpty(datdata.FileName) ? datdata.Description : datdata.FileName); string outfile = outDir + filename + extension; outfile = (outfile.Contains(Path.DirectorySeparatorChar.ToString() + Path.DirectorySeparatorChar.ToString()) ? outfile.Replace(Path.DirectorySeparatorChar.ToString() + Path.DirectorySeparatorChar.ToString(), Path.DirectorySeparatorChar.ToString()) : outfile); - Console.WriteLine(outfile); - return outfile; } diff --git a/SabreTools/Partials/SabreTools_Inits.cs b/SabreTools/Partials/SabreTools_Inits.cs index 7ed949e4..a11926bd 100644 --- a/SabreTools/Partials/SabreTools_Inits.cs +++ b/SabreTools/Partials/SabreTools_Inits.cs @@ -93,7 +93,7 @@ namespace SabreTools /// None, Split, Full /// None, Obsolete, Required, Ignore /// None, Zip, Unzip - /// Non-zero flag for output format, zero otherwise + /// Non-zero flag for output format, zero otherwise for default /// /* Missfile-specific DAT info */ /// True if games are to be used in output, false if roms are /// Generic prefix to be added to each line @@ -303,6 +303,7 @@ namespace SabreTools ForceNodump = fn, ForcePacking = fp, MergeRoms = dedup, + OutputFormatFlag = outputFormatFlag, UseGame = usegame, Prefix = prefix, @@ -315,59 +316,8 @@ namespace SabreTools XSV = tsv, }; - if ((outputFormatFlag & OutputFormatFlag.ClrMamePro) != 0) - { - userInputDat.OutputFormat = OutputFormat.ClrMamePro; - DatTools.UpdateParallel(inputs, userInputDat, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, - gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); - } - if ((outputFormatFlag & OutputFormatFlag.MissFile) != 0 || tsv != null) - { - userInputDat.OutputFormat = OutputFormat.MissFile; - DatTools.UpdateParallel(inputs, userInputDat, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, - gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); - } - if ((outputFormatFlag & OutputFormatFlag.RedumpMD5) != 0) - { - userInputDat.OutputFormat = OutputFormat.RedumpMD5; - DatTools.UpdateParallel(inputs, userInputDat, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, - gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); - } - if ((outputFormatFlag & OutputFormatFlag.RedumpSFV) != 0) - { - userInputDat.OutputFormat = OutputFormat.RedumpSFV; - DatTools.UpdateParallel(inputs, userInputDat, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, - gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); - } - if ((outputFormatFlag & OutputFormatFlag.RedumpSHA1) != 0) - { - userInputDat.OutputFormat = OutputFormat.RedumpSHA1; - DatTools.UpdateParallel(inputs, userInputDat, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, - gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); - } - if ((outputFormatFlag & OutputFormatFlag.RomCenter) != 0) - { - userInputDat.OutputFormat = OutputFormat.RomCenter; - DatTools.UpdateParallel(inputs, userInputDat, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, - gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); - } - if ((outputFormatFlag & OutputFormatFlag.SabreDat) != 0) - { - userInputDat.OutputFormat = OutputFormat.SabreDat; - DatTools.UpdateParallel(inputs, userInputDat, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, - gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); - } - if ((outputFormatFlag & OutputFormatFlag.Xml) != 0) - { - userInputDat.OutputFormat = OutputFormat.Xml; - DatTools.UpdateParallel(inputs, userInputDat, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, - gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); - } - if (outputFormatFlag == 0 && tsv == null) - { - DatTools.UpdateParallel(inputs, userInputDat, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, - gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); - } + DatTools.UpdateParallel(inputs, userInputDat, outputFormatFlag, outdir, merge, diffMode, cascade, inplace, skip, bare, clean, softlist, + gamename, romname, romtype, sgt, slt, seq, crc, md5, sha1, nodump, trim, single, root, maxDegreeOfParallelism, _logger); } /// @@ -419,7 +369,7 @@ namespace SabreTools Date = DateTime.Now.ToString("yyyy-MM-dd"), Author = author, ForcePacking = (forceunpack ? ForcePacking.Unzip : ForcePacking.None), - OutputFormat = (old ? OutputFormat.ClrMamePro : OutputFormat.Xml), + OutputFormatFlag = (old ? OutputFormatFlag.ClrMamePro : OutputFormatFlag.Xml), Romba = romba, Type = (superdat ? "SuperDAT" : ""), Files = new Dictionary>(), @@ -487,7 +437,7 @@ namespace SabreTools Date = DateTime.Now.ToString("yyyy-MM-dd"), Author = author, ForcePacking = (forceunpack ? ForcePacking.Unzip : ForcePacking.None), - OutputFormat = (old ? OutputFormat.ClrMamePro : OutputFormat.Xml), + OutputFormatFlag = (old ? OutputFormatFlag.ClrMamePro : OutputFormatFlag.Xml), Romba = romba, Type = (superdat ? "SuperDAT" : ""), }; diff --git a/SabreTools/Partials/SabreTools_Menus.cs b/SabreTools/Partials/SabreTools_Menus.cs index d704f90b..37f291ce 100644 --- a/SabreTools/Partials/SabreTools_Menus.cs +++ b/SabreTools/Partials/SabreTools_Menus.cs @@ -241,7 +241,7 @@ Make a selection: private static void ConvertMenu() { string selection = "", input = "", outdir = ""; - OutputFormat outputFormat = OutputFormat.Xml; + OutputFormatFlag outputFormatFlag = OutputFormatFlag.Xml; while (selection.ToLowerInvariant() != "b") { Console.Clear(); @@ -252,7 +252,7 @@ Make a selection: 1) File or folder to convert" + (input == "" ? "" : ":\n" + input) + @" 2) New output folder" + (outdir == "" ? " (blank means source directory)" : ":\n" + outdir) + @" - 3) Current output type: " + (outputFormat.ToString()) + @" + 3) Current output type: " + (outputFormatFlag.ToString()) + @" 4) Process file or folder B) Go back to the previous menu "); @@ -287,16 +287,16 @@ Make a selection: switch (subsel) { case "1": - outputFormat = OutputFormat.Xml; + outputFormatFlag = OutputFormatFlag.Xml; break; case "2": - outputFormat = OutputFormat.ClrMamePro; + outputFormatFlag = OutputFormatFlag.ClrMamePro; break; case "3": - outputFormat = OutputFormat.RomCenter; + outputFormatFlag = OutputFormatFlag.RomCenter; break; case "4": - outputFormat = OutputFormat.SabreDat; + outputFormatFlag = OutputFormatFlag.SabreDat; break; default: subsel = ""; @@ -310,14 +310,14 @@ Make a selection: temp.Add(input); /* InitUpdate(temp, "", "", "", "", "", "", "", "", "", "", "", "", false, "", "", "", - (outputFormat == OutputFormat.ClrMamePro), (outputFormat == OutputFormat.MissFile), (outputFormat == OutputFormat.RomCenter), - (outputFormat == OutputFormat.SabreDat), (outputFormat == OutputFormat.Xml), false, "", "", false, "", "", false, false, false, + (outputFormatFlag == OutputFormatFlag.ClrMamePro), (outputFormatFlag == OutputFormatFlag.MissFile), (outputFormatFlag == OutputFormatFlag.RomCenter), + (outputFormatFlag == OutputFormatFlag.SabreDat), (outputFormatFlag == OutputFormatFlag.Xml), false, "", "", false, "", "", false, false, false, false, false, false, false, false, "", "", "", -1, -1, -1, "", "", "", null, outdir, false, false); */ Console.Write("\nPress any key to continue..."); Console.ReadKey(); input = ""; outdir = ""; - outputFormat = OutputFormat.Xml; + outputFormatFlag = OutputFormatFlag.Xml; break; } } diff --git a/SimpleSort/SimpleSort.cs b/SimpleSort/SimpleSort.cs index e04f96fc..615496e4 100644 --- a/SimpleSort/SimpleSort.cs +++ b/SimpleSort/SimpleSort.cs @@ -370,7 +370,7 @@ namespace SabreTools _matched.FileName = "fixDat_" + _matched.FileName; _matched.Name = "fixDat_" + _matched.Name; _matched.Description = "fixDat_" + _matched.Description; - _matched.OutputFormat = OutputFormat.Xml; + _matched.OutputFormatFlag = OutputFormatFlag.Xml; // Now that all files are parsed, get only files found in directory bool found = false; @@ -476,7 +476,7 @@ namespace SabreTools _datdata.FileName = "fixDat_" + _datdata.FileName; _datdata.Name = "fixDat_" + _datdata.Name; _datdata.Description = "fixDat_" + _datdata.Description; - _datdata.OutputFormat = OutputFormat.Xml; + _datdata.OutputFormatFlag = OutputFormatFlag.Xml; DatTools.WriteDatfile(_datdata, "", _logger); }