diff --git a/SabreTools.DatItems/DatItemTool.cs b/SabreTools.DatItems/DatItemTool.cs
index c12be568..e585c383 100644
--- a/SabreTools.DatItems/DatItemTool.cs
+++ b/SabreTools.DatItems/DatItemTool.cs
@@ -3,6 +3,9 @@ using System.IO;
using SabreTools.Core.Tools;
using SabreTools.DatItems.Formats;
using SabreTools.FileTypes;
+using SabreTools.FileTypes.Aaru;
+using SabreTools.FileTypes.CHD;
+using SabreTools.IO.Extensions;
using SabreTools.IO.Logging;
using SabreTools.Matching.Compare;
@@ -33,22 +36,22 @@ namespace SabreTools.DatItems
{
// Disk
#if NET20 || NET35
- FileTypes.CHD.CHDFile when (asFile & TreatAsFile.CHD) == 0 => new Disk(baseFile),
+ FileTypes.CHD.CHDFile when (asFile & TreatAsFile.CHD) == 0 => baseFile.ConvertToDisk(),
#else
- FileTypes.CHD.CHDFile when !asFile.HasFlag(TreatAsFile.CHD) => new Disk(baseFile),
+ FileTypes.CHD.CHDFile when !asFile.HasFlag(TreatAsFile.CHD) => baseFile.ConvertToDisk(),
#endif
// Media
#if NET20 || NET35
- FileTypes.Aaru.AaruFormat when (asFile & TreatAsFile.AaruFormat) == 0 => new Media(baseFile),
+ FileTypes.Aaru.AaruFormat when (asFile & TreatAsFile.AaruFormat) == 0 => baseFile.ConvertToMedia(),
#else
- FileTypes.Aaru.AaruFormat when !asFile.HasFlag(TreatAsFile.AaruFormat) => new Media(baseFile),
+ FileTypes.Aaru.AaruFormat when !asFile.HasFlag(TreatAsFile.AaruFormat) => baseFile.ConvertToMedia(),
#endif
// Rom
- BaseArchive => new Rom(baseFile),
+ BaseArchive => baseFile.ConvertToRom(),
Folder => null, // Folders cannot be a DatItem
- BaseFile => new Rom(baseFile),
+ BaseFile => baseFile.ConvertToRom(),
// Miscellaneous
_ => null,
@@ -57,6 +60,193 @@ namespace SabreTools.DatItems
#endregion
+ #region Conversion
+
+ ///
+ /// Convert a BaseFile value to a Disk
+ ///
+ /// BaseFile to convert
+ /// Disk containing original BaseFile information
+ public static Disk ConvertToDisk(this BaseFile baseFile)
+ {
+ var disk = new Disk();
+
+ disk.SetName(baseFile.Filename);
+ if (baseFile is FileTypes.CHD.CHDFile chd)
+ {
+ disk.SetFieldValue(Models.Metadata.Disk.MD5Key, chd.InternalMD5.ToHexString());
+ disk.SetFieldValue(Models.Metadata.Disk.SHA1Key, chd.InternalSHA1.ToHexString());
+ }
+ else
+ {
+ disk.SetFieldValue(Models.Metadata.Disk.MD5Key, baseFile.MD5.ToHexString());
+ disk.SetFieldValue(Models.Metadata.Disk.SHA1Key, baseFile.SHA1.ToHexString());
+ }
+
+ disk.SetFieldValue(DatItem.DupeTypeKey, 0x00);
+
+ return disk;
+ }
+
+ ///
+ /// Convert a BaseFile value to a File
+ ///
+ /// BaseFile to convert
+ /// File containing original BaseFile information
+ public static Formats.File ConvertToFile(this BaseFile baseFile)
+ {
+ var file = new Formats.File();
+
+ file.CRC = baseFile.CRC.ToHexString();
+ file.MD5 = baseFile.MD5.ToHexString();
+ file.SHA1 = baseFile.SHA1.ToHexString();
+ file.SHA256 = baseFile.SHA256.ToHexString();
+
+ file.SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType.File);
+ file.SetFieldValue(DatItem.DupeTypeKey, 0x00);
+
+ return file;
+ }
+
+ ///
+ /// Convert a BaseFile value to a Media
+ ///
+ /// BaseFile to convert
+ /// Media containing original BaseFile information
+ public static Media ConvertToMedia(this BaseFile baseFile)
+ {
+ var media = new Media();
+
+ media.SetName(baseFile.Filename);
+ if (baseFile is FileTypes.Aaru.AaruFormat aif)
+ {
+ media.SetFieldValue(Models.Metadata.Media.MD5Key, aif.InternalMD5.ToHexString());
+ media.SetFieldValue(Models.Metadata.Media.SHA1Key, aif.InternalSHA1.ToHexString());
+ media.SetFieldValue(Models.Metadata.Media.SHA256Key, aif.InternalSHA256.ToHexString());
+ media.SetFieldValue(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(aif.InternalSpamSum ?? []));
+ }
+ else
+ {
+ media.SetFieldValue(Models.Metadata.Media.MD5Key, baseFile.MD5.ToHexString());
+ media.SetFieldValue(Models.Metadata.Media.SHA1Key, baseFile.SHA1.ToHexString());
+ media.SetFieldValue(Models.Metadata.Media.SHA256Key, baseFile.SHA256.ToHexString());
+ media.SetFieldValue(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
+ }
+
+ media.SetFieldValue(DatItem.DupeTypeKey, 0x00);
+
+ return media;
+ }
+
+ ///
+ /// Convert a BaseFile value to a Rom
+ ///
+ /// BaseFile to convert
+ /// Rom containing original BaseFile information
+ public static Rom ConvertToRom(this BaseFile baseFile)
+ {
+ var rom = new Rom();
+
+ rom.SetName(baseFile.Filename);
+ rom.SetFieldValue(Models.Metadata.Rom.DateKey, baseFile.Date);
+ rom.SetFieldValue(Models.Metadata.Rom.CRCKey, baseFile.CRC.ToHexString());
+ rom.SetFieldValue(Models.Metadata.Rom.MD5Key, baseFile.MD5.ToHexString());
+ rom.SetFieldValue(Models.Metadata.Rom.SHA1Key, baseFile.SHA1.ToHexString());
+ rom.SetFieldValue(Models.Metadata.Rom.SHA256Key, baseFile.SHA256.ToHexString());
+ rom.SetFieldValue(Models.Metadata.Rom.SHA384Key, baseFile.SHA384.ToHexString());
+ rom.SetFieldValue(Models.Metadata.Rom.SHA512Key, baseFile.SHA512.ToHexString());
+ rom.SetFieldValue(Models.Metadata.Rom.SizeKey, baseFile.Size.ToString());
+ if (baseFile.SpamSum != null)
+ rom.SetFieldValue(Models.Metadata.Rom.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum));
+
+ rom.SetFieldValue(DatItem.DupeTypeKey, 0x00);
+
+ return rom;
+ }
+
+ ///
+ /// Convert a Disk value to a BaseFile
+ ///
+ /// Disk to convert
+ /// BaseFile containing original Disk information
+ public static BaseFile ConvertToBaseFile(this Disk disk)
+ {
+ return new CHDFile()
+ {
+ Filename = disk.GetName(),
+ Parent = disk.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
+ MD5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key).FromHexString(),
+ InternalMD5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key).FromHexString(),
+ SHA1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key).FromHexString(),
+ InternalSHA1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key).FromHexString(),
+ };
+ }
+
+ ///
+ /// Convert a File value to a BaseFile
+ ///
+ /// File to convert
+ /// BaseFile containing original File information
+ public static BaseFile ConvertToBaseFile(this Formats.File file)
+ {
+ return new BaseFile()
+ {
+ Parent = file.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
+ CRC = file.CRC.FromHexString(),
+ MD5 = file.MD5.FromHexString(),
+ SHA1 = file.SHA1.FromHexString(),
+ SHA256 = file.SHA256.FromHexString(),
+ };
+ }
+
+ ///
+ /// Convert a Media value to a BaseFile
+ ///
+ /// Media to convert
+ /// BaseFile containing original Media information
+ public static BaseFile ConvertToBaseFile(this Media media)
+ {
+ return new AaruFormat()
+ {
+ Filename = media.GetName(),
+ Parent = media.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
+ MD5 = media.GetStringFieldValue(Models.Metadata.Media.MD5Key).FromHexString(),
+ InternalMD5 = media.GetStringFieldValue(Models.Metadata.Media.MD5Key).FromHexString(),
+ SHA1 = media.GetStringFieldValue(Models.Metadata.Media.SHA1Key).FromHexString(),
+ InternalSHA1 = media.GetStringFieldValue(Models.Metadata.Media.SHA1Key).FromHexString(),
+ SHA256 = media.GetStringFieldValue(Models.Metadata.Media.SHA256Key).FromHexString(),
+ InternalSHA256 = media.GetStringFieldValue(Models.Metadata.Media.SHA256Key).FromHexString(),
+ SpamSum = System.Text.Encoding.UTF8.GetBytes(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty),
+ InternalSpamSum = System.Text.Encoding.UTF8.GetBytes(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty),
+ };
+ }
+
+ ///
+ /// Convert a Rom value to a BaseFile
+ ///
+ /// Rom to convert
+ /// BaseFile containing original Rom information
+ public static BaseFile ConvertToBaseFile(this Rom rom)
+ {
+ string? spamSum = rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey);
+ return new BaseFile()
+ {
+ Filename = rom.GetName(),
+ Parent = rom.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
+ Date = rom.GetStringFieldValue(Models.Metadata.Rom.DateKey),
+ Size = NumberHelper.ConvertToInt64(rom.GetStringFieldValue(Models.Metadata.Rom.SizeKey)),
+ CRC = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey).FromHexString(),
+ MD5 = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key).FromHexString(),
+ SHA1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key).FromHexString(),
+ SHA256 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key).FromHexString(),
+ SHA384 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key).FromHexString(),
+ SHA512 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key).FromHexString(),
+ SpamSum = spamSum != null ? System.Text.Encoding.UTF8.GetBytes(spamSum) : null,
+ };
+ }
+
+ #endregion
+
#region Sorting and Merging
///
diff --git a/SabreTools.DatItems/Formats/Disk.cs b/SabreTools.DatItems/Formats/Disk.cs
index 9aaa10b0..75d1ae36 100644
--- a/SabreTools.DatItems/Formats/Disk.cs
+++ b/SabreTools.DatItems/Formats/Disk.cs
@@ -2,8 +2,6 @@
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
-using SabreTools.FileTypes;
-using SabreTools.IO.Extensions;
namespace SabreTools.DatItems.Formats
{
@@ -72,42 +70,10 @@ namespace SabreTools.DatItems.Formats
SetFieldValue(DatItem.DupeTypeKey, 0x00);
}
- public Disk(BaseFile baseFile) : base()
- {
- SetName(baseFile.Filename);
-
- if (baseFile is FileTypes.CHD.CHDFile chd)
- {
- SetFieldValue(Models.Metadata.Disk.MD5Key, chd.InternalMD5.ToHexString());
- SetFieldValue(Models.Metadata.Disk.SHA1Key, chd.InternalSHA1.ToHexString());
- }
- else
- {
- SetFieldValue(Models.Metadata.Disk.MD5Key, baseFile.MD5.ToHexString());
- SetFieldValue(Models.Metadata.Disk.SHA1Key, baseFile.SHA1.ToHexString());
- }
-
- SetFieldValue(DatItem.DupeTypeKey, 0x00);
- }
-
#endregion
#region Cloning Methods
- ///
- /// Convert Disk object to a BaseFile
- ///
- public BaseFile ConvertToBaseFile()
- {
- return new BaseFile()
- {
- Filename = GetName(),
- Parent = GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
- MD5 = GetStringFieldValue(Models.Metadata.Disk.MD5Key).FromHexString(),
- SHA1 = GetStringFieldValue(Models.Metadata.Disk.SHA1Key).FromHexString(),
- };
- }
-
///
/// Convert a disk to the closest Rom approximation
///
diff --git a/SabreTools.DatItems/Formats/File.cs b/SabreTools.DatItems/Formats/File.cs
index a981f29c..b288a56f 100644
--- a/SabreTools.DatItems/Formats/File.cs
+++ b/SabreTools.DatItems/Formats/File.cs
@@ -2,7 +2,6 @@ using System.Linq;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
-using SabreTools.FileTypes;
using SabreTools.Hashing;
using SabreTools.IO.Extensions;
@@ -105,21 +104,6 @@ namespace SabreTools.DatItems.Formats
SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType);
}
- ///
- /// Create a File object from a BaseFile
- ///
- ///
- public File(BaseFile baseFile)
- {
- _crc = baseFile.CRC;
- _md5 = baseFile.MD5;
- _sha1 = baseFile.SHA1;
- _sha256 = baseFile.SHA256;
-
- SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType);
- SetFieldValue(DatItem.DupeTypeKey, 0x00);
- }
-
#endregion
#region Cloning Methods
@@ -146,21 +130,6 @@ namespace SabreTools.DatItems.Formats
return file;
}
- ///
- /// Convert Disk object to a BaseFile
- ///
- public BaseFile ConvertToBaseFile()
- {
- return new BaseFile()
- {
- Parent = GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
- CRC = this._crc,
- MD5 = this._md5,
- SHA1 = this._sha1,
- SHA256 = this._sha256,
- };
- }
-
///
/// Convert a disk to the closest Rom approximation
///
diff --git a/SabreTools.DatItems/Formats/Media.cs b/SabreTools.DatItems/Formats/Media.cs
index 4072ec71..ee9ab3de 100644
--- a/SabreTools.DatItems/Formats/Media.cs
+++ b/SabreTools.DatItems/Formats/Media.cs
@@ -1,8 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
-using SabreTools.FileTypes;
-using SabreTools.IO.Extensions;
namespace SabreTools.DatItems.Formats
{
@@ -34,48 +32,10 @@ namespace SabreTools.DatItems.Formats
SetFieldValue(DatItem.DupeTypeKey, 0x00);
}
- public Media(BaseFile baseFile) : base()
- {
- SetName(baseFile.Filename);
-
- if (baseFile is FileTypes.Aaru.AaruFormat aif)
- {
- SetFieldValue(Models.Metadata.Media.MD5Key, aif.InternalMD5.ToHexString());
- SetFieldValue(Models.Metadata.Media.SHA1Key, aif.InternalSHA1.ToHexString());
- SetFieldValue(Models.Metadata.Media.SHA256Key, aif.InternalSHA256.ToHexString());
- SetFieldValue(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(aif.InternalSpamSum ?? []));
- }
- else
- {
- SetFieldValue(Models.Metadata.Media.MD5Key, baseFile.MD5.ToHexString());
- SetFieldValue(Models.Metadata.Media.SHA1Key, baseFile.SHA1.ToHexString());
- SetFieldValue(Models.Metadata.Media.SHA256Key, baseFile.SHA256.ToHexString());
- SetFieldValue(Models.Metadata.Media.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum ?? []));
- }
-
- SetFieldValue(DatItem.DupeTypeKey, 0x00);
- }
-
#endregion
#region Cloning Methods
- ///
- /// Convert Media object to a BaseFile
- ///
- public BaseFile ConvertToBaseFile()
- {
- return new BaseFile()
- {
- Filename = GetName(),
- Parent = GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
- MD5 = GetStringFieldValue(Models.Metadata.Media.MD5Key).FromHexString(),
- SHA1 = GetStringFieldValue(Models.Metadata.Media.SHA1Key).FromHexString(),
- SHA256 = GetStringFieldValue(Models.Metadata.Media.SHA256Key).FromHexString(),
- SpamSum = System.Text.Encoding.UTF8.GetBytes(GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty),
- };
- }
-
///
/// Convert a media to the closest Rom approximation
///
diff --git a/SabreTools.DatItems/Formats/Rom.cs b/SabreTools.DatItems/Formats/Rom.cs
index b44cc6f2..dcf0b06c 100644
--- a/SabreTools.DatItems/Formats/Rom.cs
+++ b/SabreTools.DatItems/Formats/Rom.cs
@@ -2,8 +2,6 @@
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
-using SabreTools.FileTypes;
-using SabreTools.IO.Extensions;
namespace SabreTools.DatItems.Formats
{
@@ -91,23 +89,6 @@ namespace SabreTools.DatItems.Formats
SetFieldValue(Models.Metadata.Rom.StatusKey, ItemStatus.None.AsStringValue());
}
- public Rom(BaseFile baseFile) : base()
- {
- SetName(baseFile.Filename);
- SetFieldValue(Models.Metadata.Rom.DateKey, baseFile.Date);
- SetFieldValue(Models.Metadata.Rom.CRCKey, baseFile.CRC.ToHexString());
- SetFieldValue(Models.Metadata.Rom.MD5Key, baseFile.MD5.ToHexString());
- SetFieldValue(Models.Metadata.Rom.SHA1Key, baseFile.SHA1.ToHexString());
- SetFieldValue(Models.Metadata.Rom.SHA256Key, baseFile.SHA256.ToHexString());
- SetFieldValue(Models.Metadata.Rom.SHA384Key, baseFile.SHA384.ToHexString());
- SetFieldValue(Models.Metadata.Rom.SHA512Key, baseFile.SHA512.ToHexString());
- SetFieldValue(Models.Metadata.Rom.SizeKey, baseFile.Size.ToString());
- if (baseFile.SpamSum != null)
- SetFieldValue(Models.Metadata.Rom.SpamSumKey, System.Text.Encoding.UTF8.GetString(baseFile.SpamSum));
-
- SetFieldValue(DatItem.DupeTypeKey, 0x00);
- }
-
public Rom(Models.Metadata.Rom item) : base(item)
{
SetFieldValue(DatItem.DupeTypeKey, 0x00);
@@ -115,32 +96,6 @@ namespace SabreTools.DatItems.Formats
#endregion
- #region Cloning Methods
-
- ///
- /// Convert Rom object to a BaseFile
- ///
- public BaseFile ConvertToBaseFile()
- {
- string? spamSum = GetStringFieldValue(Models.Metadata.Rom.SpamSumKey);
- return new BaseFile()
- {
- Filename = GetName(),
- Parent = GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
- Date = GetStringFieldValue(Models.Metadata.Rom.DateKey),
- Size = NumberHelper.ConvertToInt64(GetStringFieldValue(Models.Metadata.Rom.SizeKey)),
- CRC = GetStringFieldValue(Models.Metadata.Rom.CRCKey).FromHexString(),
- MD5 = GetStringFieldValue(Models.Metadata.Rom.MD5Key).FromHexString(),
- SHA1 = GetStringFieldValue(Models.Metadata.Rom.SHA1Key).FromHexString(),
- SHA256 = GetStringFieldValue(Models.Metadata.Rom.SHA256Key).FromHexString(),
- SHA384 = GetStringFieldValue(Models.Metadata.Rom.SHA384Key).FromHexString(),
- SHA512 = GetStringFieldValue(Models.Metadata.Rom.SHA512Key).FromHexString(),
- SpamSum = spamSum != null ? System.Text.Encoding.UTF8.GetBytes(spamSum) : null,
- };
- }
-
- #endregion
-
#region Comparision Methods
///
diff --git a/SabreTools.DatTools/DatFromDir.cs b/SabreTools.DatTools/DatFromDir.cs
index bc8a5518..7b4b6545 100644
--- a/SabreTools.DatTools/DatFromDir.cs
+++ b/SabreTools.DatTools/DatFromDir.cs
@@ -229,7 +229,7 @@ namespace SabreTools.DatTools
if (baseFile != null && baseFile.Filename != null)
{
// Add the list if it doesn't exist already
- Rom rom = new(baseFile);
+ Rom rom = baseFile.ConvertToRom();
datFile.Items.Add(rom.GetKey(ItemKey.CRC), rom);
logger.Verbose($"File added: {Path.GetFileNameWithoutExtension(item)}");
}
diff --git a/SabreTools.DatTools/Rebuilder.cs b/SabreTools.DatTools/Rebuilder.cs
index 0643aa37..dc5205b1 100644
--- a/SabreTools.DatTools/Rebuilder.cs
+++ b/SabreTools.DatTools/Rebuilder.cs
@@ -157,13 +157,13 @@ namespace SabreTools.DatTools
// Otherwise, we rebuild that file to all locations that we need to
bool usedInternally;
if (items[0].GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue() == ItemType.Disk)
- usedInternally = RebuildIndividualFile(datFile, new Disk(fileinfo), foundpath, outDir, date, inverse, outputFormat, isZip: false);
+ usedInternally = RebuildIndividualFile(datFile, fileinfo.ConvertToDisk(), foundpath, outDir, date, inverse, outputFormat, isZip: false);
else if (items[0].GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue() == ItemType.File)
- usedInternally = RebuildIndividualFile(datFile, new DatItems.Formats.File(fileinfo), foundpath, outDir, date, inverse, outputFormat, isZip: false);
+ usedInternally = RebuildIndividualFile(datFile, fileinfo.ConvertToFile(), foundpath, outDir, date, inverse, outputFormat, isZip: false);
else if (items[0].GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue() == ItemType.Media)
- usedInternally = RebuildIndividualFile(datFile, new Media(fileinfo), foundpath, outDir, date, inverse, outputFormat, isZip: false);
+ usedInternally = RebuildIndividualFile(datFile, fileinfo.ConvertToMedia(), foundpath, outDir, date, inverse, outputFormat, isZip: false);
else
- usedInternally = RebuildIndividualFile(datFile, new Rom(fileinfo), foundpath, outDir, date, inverse, outputFormat, isZip: false);
+ usedInternally = RebuildIndividualFile(datFile, fileinfo.ConvertToRom(), foundpath, outDir, date, inverse, outputFormat, isZip: false);
// If we are supposed to delete the depot file, do so
if (delete && usedInternally)
@@ -335,15 +335,15 @@ namespace SabreTools.DatTools
#else
else if (internalFileInfo is FileTypes.Aaru.AaruFormat && !asFile.HasFlag(TreatAsFile.AaruFormat))
#endif
- internalDatItem = new Media(internalFileInfo);
+ internalDatItem = internalFileInfo.ConvertToMedia();
#if NET20 || NET35
else if (internalFileInfo is FileTypes.CHD.CHDFile && (asFile & TreatAsFile.CHD) == 0)
#else
else if (internalFileInfo is FileTypes.CHD.CHDFile && !asFile.HasFlag(TreatAsFile.CHD))
#endif
- internalDatItem = new Disk(internalFileInfo);
+ internalDatItem = internalFileInfo.ConvertToDisk();
else
- internalDatItem = new Rom(internalFileInfo);
+ internalDatItem = internalFileInfo.ConvertToRom();
if (internalDatItem != null)
usedExternally = RebuildIndividualFile(datFile, internalDatItem, file, outDir, date, inverse, outputFormat);
@@ -500,7 +500,7 @@ namespace SabreTools.DatTools
{
// Get the file informations that we will be using
HashType[] hashes = [HashType.CRC32, HashType.MD5, HashType.SHA1];
- Rom headerless = new(FileTypeTool.GetInfo(transformStream, hashes));
+ Rom headerless = FileTypeTool.GetInfo(transformStream, hashes).ConvertToRom();
// If we have duplicates and we're not filtering
if (ShouldRebuild(datFile, headerless, transformStream, false, out dupes))
@@ -575,7 +575,7 @@ namespace SabreTools.DatTools
// Get the item from the current file
HashType[] hashes = [HashType.CRC32, HashType.MD5, HashType.SHA1];
- Rom item = new(FileTypeTool.GetInfo(stream, hashes));
+ Rom item = FileTypeTool.GetInfo(stream, hashes).ConvertToRom();
item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.DescriptionKey, Path.GetFileNameWithoutExtension(item.GetName()));
item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.NameKey, Path.GetFileNameWithoutExtension(item.GetName()));
@@ -633,7 +633,7 @@ namespace SabreTools.DatTools
// Get the item from the current file
HashType[] hashes = [HashType.CRC32, HashType.MD5, HashType.SHA1];
- var item = new Rom(FileTypeTool.GetInfo(stream, hashes));
+ Rom item = FileTypeTool.GetInfo(stream, hashes).ConvertToRom();
// Create a machine for the current item
var machine = new Machine();
diff --git a/SabreTools.DatTools/Verification.cs b/SabreTools.DatTools/Verification.cs
index 7da13c26..ef9cf40a 100644
--- a/SabreTools.DatTools/Verification.cs
+++ b/SabreTools.DatTools/Verification.cs
@@ -96,8 +96,8 @@ namespace SabreTools.DatTools
continue;
// Now we want to remove all duplicates from the DAT
- datFile.Items.GetDuplicates(new Rom(fileinfo))
- .AddRange(datFile.Items.GetDuplicates(new Disk(fileinfo)));
+ datFile.Items.GetDuplicates(fileinfo.ConvertToRom())
+ .AddRange(datFile.Items.GetDuplicates(fileinfo.ConvertToDisk()));
}
watch.Stop();
@@ -181,8 +181,8 @@ namespace SabreTools.DatTools
continue;
// Now we want to remove all duplicates from the DAT
- datFile.ItemsDB.GetDuplicates(new KeyValuePair(-1, new Rom(fileinfo)))
- .Concat(datFile.ItemsDB.GetDuplicates(new KeyValuePair(-1, new Disk(fileinfo))));
+ datFile.ItemsDB.GetDuplicates(new KeyValuePair(-1, fileinfo.ConvertToRom()))
+ .Concat(datFile.ItemsDB.GetDuplicates(new KeyValuePair(-1, fileinfo.ConvertToDisk())));
}
watch.Stop();