/// <summary> /// Generate a proper outfile name based on a DAT and output directory /// </summary> /// <param name="outDir">Output directory</param> /// <param name="overwrite">True if we ignore existing files (default), false otherwise</param> /// <returns>Dictionary of output formats mapped to file names</returns> public Dictionary <DatFormat, string> CreateOutFileNames(string outDir, bool overwrite = true) { // Create the output dictionary Dictionary <DatFormat, string> outfileNames = new Dictionary <DatFormat, string>(); // Double check the outDir for the end delim if (!outDir.EndsWith(Path.DirectorySeparatorChar.ToString())) { outDir += Path.DirectorySeparatorChar; } // Get all used extensions List <string> usedExtensions = new List <string>(); // Get the extensions from the output type #region .csv // CSV if (DatFormat.HasFlag(DatFormat.CSV)) { outfileNames.Add(DatFormat.CSV, CreateOutFileNamesHelper(outDir, ".csv", overwrite)); usedExtensions.Add(".csv"); } ; #endregion #region .dat // ClrMamePro if (DatFormat.HasFlag(DatFormat.ClrMamePro)) { outfileNames.Add(DatFormat.ClrMamePro, CreateOutFileNamesHelper(outDir, ".dat", overwrite)); usedExtensions.Add(".dat"); } ; // RomCenter if (DatFormat.HasFlag(DatFormat.RomCenter)) { if (usedExtensions.Contains(".dat")) { outfileNames.Add(DatFormat.RomCenter, CreateOutFileNamesHelper(outDir, ".rc.dat", overwrite)); usedExtensions.Add(".rc.dat"); } else { outfileNames.Add(DatFormat.RomCenter, CreateOutFileNamesHelper(outDir, ".dat", overwrite)); usedExtensions.Add(".dat"); } } // DOSCenter if (DatFormat.HasFlag(DatFormat.DOSCenter)) { if (usedExtensions.Contains(".dat")) { outfileNames.Add(DatFormat.DOSCenter, CreateOutFileNamesHelper(outDir, ".dc.dat", overwrite)); usedExtensions.Add(".dc.dat"); } else { outfileNames.Add(DatFormat.DOSCenter, CreateOutFileNamesHelper(outDir, ".dat", overwrite)); usedExtensions.Add(".dat"); } } #endregion #region .json // JSON if (DatFormat.HasFlag(DatFormat.SabreJSON)) { outfileNames.Add(DatFormat.SabreJSON, CreateOutFileNamesHelper(outDir, ".json", overwrite)); usedExtensions.Add(".json"); } #endregion #region .md5 // Redump MD5 if (DatFormat.HasFlag(DatFormat.RedumpMD5)) { outfileNames.Add(DatFormat.RedumpMD5, CreateOutFileNamesHelper(outDir, ".md5", overwrite)); usedExtensions.Add(".md5"); } ; #endregion #region .sfv // Redump SFV if (DatFormat.HasFlag(DatFormat.RedumpSFV)) { outfileNames.Add(DatFormat.RedumpSFV, CreateOutFileNamesHelper(outDir, ".sfv", overwrite)); usedExtensions.Add(".sfv"); } ; #endregion #region .sha1 // Redump SHA-1 if (DatFormat.HasFlag(DatFormat.RedumpSHA1)) { outfileNames.Add(DatFormat.RedumpSHA1, CreateOutFileNamesHelper(outDir, ".sha1", overwrite)); usedExtensions.Add(".sha1"); } ; #endregion #region .sha256 // Redump SHA-256 if (DatFormat.HasFlag(DatFormat.RedumpSHA256)) { outfileNames.Add(DatFormat.RedumpSHA256, CreateOutFileNamesHelper(outDir, ".sha256", overwrite)); usedExtensions.Add(".sha256"); } ; #endregion #region .sha384 // Redump SHA-384 if (DatFormat.HasFlag(DatFormat.RedumpSHA384)) { outfileNames.Add(DatFormat.RedumpSHA384, CreateOutFileNamesHelper(outDir, ".sha384", overwrite)); usedExtensions.Add(".sha384"); } ; #endregion #region .sha512 // Redump SHA-512 if (DatFormat.HasFlag(DatFormat.RedumpSHA512)) { outfileNames.Add(DatFormat.RedumpSHA512, CreateOutFileNamesHelper(outDir, ".sha512", overwrite)); usedExtensions.Add(".sha512"); } ; #endregion #region .spamsum // Redump SpamSum if (DatFormat.HasFlag(DatFormat.RedumpSpamSum)) { outfileNames.Add(DatFormat.RedumpSpamSum, CreateOutFileNamesHelper(outDir, ".spamsum", overwrite)); usedExtensions.Add(".spamsum"); } ; #endregion #region .ssv // SSV if (DatFormat.HasFlag(DatFormat.SSV)) { outfileNames.Add(DatFormat.SSV, CreateOutFileNamesHelper(outDir, ".ssv", overwrite)); usedExtensions.Add(".ssv"); } ; #endregion #region .tsv // TSV if (DatFormat.HasFlag(DatFormat.TSV)) { outfileNames.Add(DatFormat.TSV, CreateOutFileNamesHelper(outDir, ".tsv", overwrite)); usedExtensions.Add(".tsv"); } ; #endregion #region .txt // AttractMode if (DatFormat.HasFlag(DatFormat.AttractMode)) { outfileNames.Add(DatFormat.AttractMode, CreateOutFileNamesHelper(outDir, ".txt", overwrite)); usedExtensions.Add(".txt"); } // MAME Listroms if (DatFormat.HasFlag(DatFormat.Listrom)) { if (usedExtensions.Contains(".txt")) { outfileNames.Add(DatFormat.Listrom, CreateOutFileNamesHelper(outDir, ".lr.txt", overwrite)); usedExtensions.Add(".lr.txt"); } else { outfileNames.Add(DatFormat.Listrom, CreateOutFileNamesHelper(outDir, ".txt", overwrite)); usedExtensions.Add(".txt"); } } // Missfile if (DatFormat.HasFlag(DatFormat.MissFile)) { if (usedExtensions.Contains(".txt")) { outfileNames.Add(DatFormat.MissFile, CreateOutFileNamesHelper(outDir, ".miss.txt", overwrite)); usedExtensions.Add(".miss.txt"); } else { outfileNames.Add(DatFormat.MissFile, CreateOutFileNamesHelper(outDir, ".txt", overwrite)); usedExtensions.Add(".txt"); } } // Everdrive SMDB if (DatFormat.HasFlag(DatFormat.EverdriveSMDB)) { if (usedExtensions.Contains(".txt")) { outfileNames.Add(DatFormat.EverdriveSMDB, CreateOutFileNamesHelper(outDir, ".smdb.txt", overwrite)); usedExtensions.Add(".smdb.txt"); } else { outfileNames.Add(DatFormat.EverdriveSMDB, CreateOutFileNamesHelper(outDir, ".txt", overwrite)); usedExtensions.Add(".txt"); } } #endregion #region .xml // Logiqx XML if (DatFormat.HasFlag(DatFormat.Logiqx)) { outfileNames.Add(DatFormat.Logiqx, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); usedExtensions.Add(".xml"); } if (DatFormat.HasFlag(DatFormat.LogiqxDeprecated)) { outfileNames.Add(DatFormat.LogiqxDeprecated, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); usedExtensions.Add(".xml"); } // SabreDAT if (DatFormat.HasFlag(DatFormat.SabreXML)) { if (usedExtensions.Contains(".xml")) { outfileNames.Add(DatFormat.SabreXML, CreateOutFileNamesHelper(outDir, ".sd.xml", overwrite)); usedExtensions.Add(".sd.xml"); } else { outfileNames.Add(DatFormat.SabreXML, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); usedExtensions.Add(".xml"); } } // Software List if (DatFormat.HasFlag(DatFormat.SoftwareList)) { if (usedExtensions.Contains(".xml")) { outfileNames.Add(DatFormat.SoftwareList, CreateOutFileNamesHelper(outDir, ".sl.xml", overwrite)); usedExtensions.Add(".sl.xml"); } else { outfileNames.Add(DatFormat.SoftwareList, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); usedExtensions.Add(".xml"); } } // MAME Listxml if (DatFormat.HasFlag(DatFormat.Listxml)) { if (usedExtensions.Contains(".xml")) { outfileNames.Add(DatFormat.Listxml, CreateOutFileNamesHelper(outDir, ".mame.xml", overwrite)); usedExtensions.Add(".mame.xml"); } else { outfileNames.Add(DatFormat.Listxml, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); usedExtensions.Add(".xml"); } } // OfflineList if (DatFormat.HasFlag(DatFormat.OfflineList)) { if (usedExtensions.Contains(".xml")) { outfileNames.Add(DatFormat.OfflineList, CreateOutFileNamesHelper(outDir, ".ol.xml", overwrite)); usedExtensions.Add(".ol.xml"); } else { outfileNames.Add(DatFormat.OfflineList, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); usedExtensions.Add(".xml"); } } // openMSX if (DatFormat.HasFlag(DatFormat.OpenMSX)) { if (usedExtensions.Contains(".xml")) { outfileNames.Add(DatFormat.OpenMSX, CreateOutFileNamesHelper(outDir, ".msx.xml", overwrite)); usedExtensions.Add(".msx.xml"); } else { outfileNames.Add(DatFormat.OpenMSX, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); usedExtensions.Add(".xml"); } } // Archive.org if (DatFormat.HasFlag(DatFormat.ArchiveDotOrg)) { if (usedExtensions.Contains(".xml")) { outfileNames.Add(DatFormat.ArchiveDotOrg, CreateOutFileNamesHelper(outDir, ".ado.xml", overwrite)); usedExtensions.Add(".ado.xml"); } else { outfileNames.Add(DatFormat.ArchiveDotOrg, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); usedExtensions.Add(".xml"); } } #endregion return(outfileNames); }