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,

View File

@@ -75,8 +75,17 @@ namespace SabreTools.DatItems.Formats
public Disk(BaseFile baseFile) : base()
{
SetName(baseFile.Filename);
SetFieldValue<string?>(Models.Metadata.Disk.MD5Key, baseFile.MD5.ToHexString());
SetFieldValue<string?>(Models.Metadata.Disk.SHA1Key, baseFile.SHA1.ToHexString());
if (baseFile is FileTypes.CHD.CHDFile chd)
{
SetFieldValue<string?>(Models.Metadata.Disk.MD5Key, chd.InternalMD5.ToHexString());
SetFieldValue<string?>(Models.Metadata.Disk.SHA1Key, chd.InternalSHA1.ToHexString());
}
else
{
SetFieldValue<string?>(Models.Metadata.Disk.MD5Key, baseFile.MD5.ToHexString());
SetFieldValue<string?>(Models.Metadata.Disk.SHA1Key, baseFile.SHA1.ToHexString());
}
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
}
@@ -132,7 +141,7 @@ namespace SabreTools.DatItems.Formats
public string GetDuplicateSuffix() => _internal.GetDuplicateSuffix();
#endregion
#region Sorting and Merging
/// <inheritdoc/>

View File

@@ -37,10 +37,21 @@ namespace SabreTools.DatItems.Formats
public Media(BaseFile baseFile) : base()
{
SetName(baseFile.Filename);
SetFieldValue<string?>(Models.Metadata.Media.MD5Key, baseFile.MD5.ToHexString());
SetFieldValue<string?>(Models.Metadata.Media.SHA1Key, baseFile.SHA1.ToHexString());
SetFieldValue<string?>(Models.Metadata.Media.SHA256Key, baseFile.SHA256.ToHexString());
SetFieldValue<string?>(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
if (baseFile is FileTypes.Aaru.AaruFormat aif)
{
SetFieldValue<string?>(Models.Metadata.Media.MD5Key, aif.InternalMD5.ToHexString());
SetFieldValue<string?>(Models.Metadata.Media.SHA1Key, aif.InternalSHA1.ToHexString());
SetFieldValue<string?>(Models.Metadata.Media.SHA256Key, aif.InternalSHA256.ToHexString());
SetFieldValue<string?>(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(aif.InternalSpamSum ?? []));
}
else
{
SetFieldValue<string?>(Models.Metadata.Media.MD5Key, baseFile.MD5.ToHexString());
SetFieldValue<string?>(Models.Metadata.Media.SHA1Key, baseFile.SHA1.ToHexString());
SetFieldValue<string?>(Models.Metadata.Media.SHA256Key, baseFile.SHA256.ToHexString());
SetFieldValue<string?>(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
}
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
}