mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
File types don't care about As flags
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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/>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user