File types don't care about As flags

This commit is contained in:
Matt Nadareski
2025-01-05 21:35:06 -05:00
parent 792ed1e924
commit 19914685a7
8 changed files with 94 additions and 59 deletions

View File

@@ -128,27 +128,30 @@ namespace SabreTools.DatItems
/// Create a specific type of DatItem to be used based on a BaseFile
/// </summary>
/// <param name="baseFile">BaseFile containing information to be created</param>
/// <param name="asFiles">TreatAsFiles representing special format scanning</param>
/// <returns>DatItem of the specific internal type that corresponds to the inputs</returns>
public static DatItem? Create(BaseFile? baseFile)
public static DatItem? Create(BaseFile? baseFile, TreatAsFile asFiles = 0x00)
{
return baseFile switch
{
// Disk
FileTypes.CHD.CHDFile => new Disk(baseFile),
#if NET20 || NET35
FileTypes.CHD.CHDFile when (asFiles & TreatAsFile.CHD) == 0 => new Disk(baseFile),
#else
FileTypes.CHD.CHDFile when !asFiles.HasFlag(TreatAsFile.CHD) => new Disk(baseFile),
#endif
// Media
FileTypes.Aaru.AaruFormat => new Media(baseFile),
#if NET20 || NET35
FileTypes.Aaru.AaruFormat when (asFiles & TreatAsFile.AaruFormat) == 0 => new Media(baseFile),
#else
FileTypes.Aaru.AaruFormat when !asFiles.HasFlag(TreatAsFile.AaruFormat) => new Media(baseFile),
#endif
// Rom
FileTypes.Archives.GZipArchive => new Rom(baseFile),
FileTypes.Archives.RarArchive => new Rom(baseFile),
FileTypes.Archives.SevenZipArchive => new Rom(baseFile),
FileTypes.Archives.TapeArchive => new Rom(baseFile),
FileTypes.Archives.XZArchive => new Rom(baseFile),
FileTypes.Archives.ZipArchive => new Rom(baseFile),
FileTypes.BaseArchive => new Rom(baseFile),
FileTypes.Folder => null, // Folders cannot be a DatItem
FileTypes.BaseFile => new Rom(baseFile),
BaseArchive => new Rom(baseFile),
Folder => null, // Folders cannot be a DatItem
BaseFile => new Rom(baseFile),
// Miscellaneous
_ => null,