mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Create and use more passthrough methods
This commit is contained in:
@@ -216,81 +216,81 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
|
||||
// Selectively set all possible fields -- TODO: Figure out how to make this less manual
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.AuthorKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, header.GetFieldValue<string?>(Models.Metadata.Header.AuthorKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, header.GetStringFieldValue(Models.Metadata.Header.AuthorKey));
|
||||
if (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.BiosModeKey) == MergingFlag.None)
|
||||
Header.SetFieldValue<MergingFlag>(Models.Metadata.Header.BiosModeKey, header.GetFieldValue<MergingFlag>(Models.Metadata.Header.BiosModeKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.BuildKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.BuildKey, header.GetFieldValue<string?>(Models.Metadata.Header.BuildKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.CategoryKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, header.GetFieldValue<string?>(Models.Metadata.Header.CategoryKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.CommentKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, header.GetFieldValue<string?>(Models.Metadata.Header.CommentKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.DateKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, header.GetFieldValue<string?>(Models.Metadata.Header.DateKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.DatVersionKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DatVersionKey, header.GetFieldValue<string?>(Models.Metadata.Header.DatVersionKey));
|
||||
if (Header.GetFieldValue<bool?>(Models.Metadata.Header.DebugKey) == null)
|
||||
Header.SetFieldValue<bool?>(Models.Metadata.Header.DebugKey, header.GetFieldValue<bool?>(Models.Metadata.Header.DebugKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.EmailKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.EmailKey, header.GetFieldValue<string?>(Models.Metadata.Header.EmailKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.EmulatorVersionKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.EmulatorVersionKey, header.GetFieldValue<string?>(Models.Metadata.Header.EmulatorVersionKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.BuildKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.BuildKey, header.GetStringFieldValue(Models.Metadata.Header.BuildKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.CategoryKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, header.GetStringFieldValue(Models.Metadata.Header.CategoryKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.CommentKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, header.GetStringFieldValue(Models.Metadata.Header.CommentKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.DateKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, header.GetStringFieldValue(Models.Metadata.Header.DateKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.DatVersionKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DatVersionKey, header.GetStringFieldValue(Models.Metadata.Header.DatVersionKey));
|
||||
if (Header.GetBoolFieldValue(Models.Metadata.Header.DebugKey) == null)
|
||||
Header.SetFieldValue<bool?>(Models.Metadata.Header.DebugKey, header.GetBoolFieldValue(Models.Metadata.Header.DebugKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.EmailKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.EmailKey, header.GetStringFieldValue(Models.Metadata.Header.EmailKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.EmulatorVersionKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.EmulatorVersionKey, header.GetStringFieldValue(Models.Metadata.Header.EmulatorVersionKey));
|
||||
if (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey) == MergingFlag.None)
|
||||
Header.SetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey, header.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey));
|
||||
if (Header.GetFieldValue<NodumpFlag>(Models.Metadata.Header.ForceNodumpKey) == NodumpFlag.None)
|
||||
Header.SetFieldValue<NodumpFlag>(Models.Metadata.Header.ForceNodumpKey, header.GetFieldValue<NodumpFlag>(Models.Metadata.Header.ForceNodumpKey));
|
||||
if (Header.GetFieldValue<PackingFlag>(Models.Metadata.Header.ForcePackingKey) == PackingFlag.None)
|
||||
Header.SetFieldValue<PackingFlag>(Models.Metadata.Header.ForcePackingKey, header.GetFieldValue<PackingFlag>(Models.Metadata.Header.ForcePackingKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.HeaderKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.HeaderKey, header.GetFieldValue<string?>(Models.Metadata.Header.HeaderKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.HomepageKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.HomepageKey, header.GetFieldValue<string?>(Models.Metadata.Header.HomepageKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.IdKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.IdKey, header.GetFieldValue<string?>(Models.Metadata.Header.IdKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.ImFolderKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.ImFolderKey, header.GetFieldValue<string?>(Models.Metadata.Header.ImFolderKey));
|
||||
if (Header.GetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey) == null)
|
||||
Header.SetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey, header.GetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey));
|
||||
if (Header.GetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey) == null)
|
||||
Header.SetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey, header.GetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey));
|
||||
if (Header.GetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey) == null)
|
||||
Header.SetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey, header.GetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.MameConfigKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.MameConfigKey, header.GetFieldValue<string?>(Models.Metadata.Header.MameConfigKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, header.GetFieldValue<string?>(Models.Metadata.Header.NameKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.PluginKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.PluginKey, header.GetFieldValue<string?>(Models.Metadata.Header.PluginKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.RefNameKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.RefNameKey, header.GetFieldValue<string?>(Models.Metadata.Header.RefNameKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.HeaderKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.HeaderKey, header.GetStringFieldValue(Models.Metadata.Header.HeaderKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.HomepageKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.HomepageKey, header.GetStringFieldValue(Models.Metadata.Header.HomepageKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.IdKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.IdKey, header.GetStringFieldValue(Models.Metadata.Header.IdKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.ImFolderKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.ImFolderKey, header.GetStringFieldValue(Models.Metadata.Header.ImFolderKey));
|
||||
if (Header.GetBoolFieldValue(Models.Metadata.Header.LockBiosModeKey) == null)
|
||||
Header.SetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey, header.GetBoolFieldValue(Models.Metadata.Header.LockBiosModeKey));
|
||||
if (Header.GetBoolFieldValue(Models.Metadata.Header.LockRomModeKey) == null)
|
||||
Header.SetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey, header.GetBoolFieldValue(Models.Metadata.Header.LockRomModeKey));
|
||||
if (Header.GetBoolFieldValue(Models.Metadata.Header.LockSampleModeKey) == null)
|
||||
Header.SetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey, header.GetBoolFieldValue(Models.Metadata.Header.LockSampleModeKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.MameConfigKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.MameConfigKey, header.GetStringFieldValue(Models.Metadata.Header.MameConfigKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.NameKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, header.GetStringFieldValue(Models.Metadata.Header.NameKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.PluginKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.PluginKey, header.GetStringFieldValue(Models.Metadata.Header.PluginKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.RefNameKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.RefNameKey, header.GetStringFieldValue(Models.Metadata.Header.RefNameKey));
|
||||
if (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.RomModeKey) == MergingFlag.None)
|
||||
Header.SetFieldValue<MergingFlag>(Models.Metadata.Header.RomModeKey, header.GetFieldValue<MergingFlag>(Models.Metadata.Header.RomModeKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.RomTitleKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.RomTitleKey, header.GetFieldValue<string?>(Models.Metadata.Header.RomTitleKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.RootDirKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.RootDirKey, header.GetFieldValue<string?>(Models.Metadata.Header.RootDirKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.RomTitleKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.RomTitleKey, header.GetStringFieldValue(Models.Metadata.Header.RomTitleKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.RootDirKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.RootDirKey, header.GetStringFieldValue(Models.Metadata.Header.RootDirKey));
|
||||
if (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.SampleModeKey) == MergingFlag.None)
|
||||
Header.SetFieldValue<MergingFlag>(Models.Metadata.Header.SampleModeKey, header.GetFieldValue<MergingFlag>(Models.Metadata.Header.SampleModeKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.ScreenshotsHeightKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.ScreenshotsHeightKey, header.GetFieldValue<string?>(Models.Metadata.Header.ScreenshotsHeightKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.ScreenshotsWidthKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.ScreenshotsWidthKey, header.GetFieldValue<string?>(Models.Metadata.Header.ScreenshotsWidthKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.SystemKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.SystemKey, header.GetFieldValue<string?>(Models.Metadata.Header.SystemKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.TypeKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.TypeKey, header.GetFieldValue<string?>(Models.Metadata.Header.TypeKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.UrlKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.UrlKey, header.GetFieldValue<string?>(Models.Metadata.Header.UrlKey));
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.VersionKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.VersionKey, header.GetFieldValue<string?>(Models.Metadata.Header.VersionKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.ScreenshotsHeightKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.ScreenshotsHeightKey, header.GetStringFieldValue(Models.Metadata.Header.ScreenshotsHeightKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.ScreenshotsWidthKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.ScreenshotsWidthKey, header.GetStringFieldValue(Models.Metadata.Header.ScreenshotsWidthKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.SystemKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.SystemKey, header.GetStringFieldValue(Models.Metadata.Header.SystemKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.TypeKey, header.GetStringFieldValue(Models.Metadata.Header.TypeKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.UrlKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.UrlKey, header.GetStringFieldValue(Models.Metadata.Header.UrlKey));
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.VersionKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.VersionKey, header.GetStringFieldValue(Models.Metadata.Header.VersionKey));
|
||||
|
||||
// Handle implied SuperDAT
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey)?.Contains(" - SuperDAT") == true && keep)
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.NameKey)?.Contains(" - SuperDAT") == true && keep)
|
||||
{
|
||||
if (Header.GetFieldValue<string?>(Models.Metadata.Header.TypeKey) == null)
|
||||
if (Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == null)
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.TypeKey, "SuperDAT");
|
||||
}
|
||||
}
|
||||
@@ -895,7 +895,7 @@ namespace SabreTools.DatFiles
|
||||
continue;
|
||||
}
|
||||
|
||||
string name = $"{machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}_{index++}{(!string.IsNullOrEmpty(rom!.ReadString(Models.Metadata.Rom.RemarkKey)) ? $" {rom.ReadString(Models.Metadata.Rom.RemarkKey)}" : string.Empty)}";
|
||||
string name = $"{machine.GetStringFieldValue(Models.Metadata.Machine.NameKey)}_{index++}{(!string.IsNullOrEmpty(rom!.ReadString(Models.Metadata.Rom.RemarkKey)) ? $" {rom.ReadString(Models.Metadata.Rom.RemarkKey)}" : string.Empty)}";
|
||||
|
||||
var item = new DatItems.Formats.Rom();
|
||||
item.SetName(name);
|
||||
|
||||
@@ -179,9 +179,9 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
var newDat = new Models.OfflineList.NewDat
|
||||
{
|
||||
DatVersionUrl = Header.GetFieldValue<string?>("DATVERSIONURL"),
|
||||
DatVersionUrl = Header.GetStringFieldValue("DATVERSIONURL"),
|
||||
//DatUrl = Header.GetFieldValue<Models.OfflineList.DatUrl?>("DATURL"), // TODO: Add to internal model
|
||||
ImUrl = Header.GetFieldValue<string?>("IMURL"),
|
||||
ImUrl = Header.GetStringFieldValue("IMURL"),
|
||||
};
|
||||
header[Models.Metadata.Header.NewDatKey] = newDat;
|
||||
}
|
||||
|
||||
@@ -128,23 +128,23 @@ namespace SabreTools.DatFiles
|
||||
public void FillHeaderFromPath(string path, bool bare)
|
||||
{
|
||||
// If the description is defined but not the name, set the name from the description
|
||||
if (string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey)) && !string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey)))
|
||||
if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.NameKey)) && !string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
|
||||
{
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey));
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
|
||||
}
|
||||
|
||||
// If the name is defined but not the description, set the description from the name
|
||||
else if (!string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey)) && string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey)))
|
||||
else if (!string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.NameKey)) && string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
|
||||
{
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey) + (bare ? string.Empty : $" ({Header.GetFieldValue<string?>(Models.Metadata.Header.DateKey)})"));
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + (bare ? string.Empty : $" ({Header.GetStringFieldValue(Models.Metadata.Header.DateKey)})"));
|
||||
}
|
||||
|
||||
// If neither the name or description are defined, set them from the automatic values
|
||||
else if (string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey)) && string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey)))
|
||||
else if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.NameKey)) && string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
|
||||
{
|
||||
string[] splitpath = path.TrimEnd(Path.DirectorySeparatorChar).Split(Path.DirectorySeparatorChar);
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, splitpath.Last());
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey) + (bare ? string.Empty : $" ({Header.GetFieldValue<string?>(Models.Metadata.Header.DateKey)})"));
|
||||
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + (bare ? string.Empty : $" ({Header.GetStringFieldValue(Models.Metadata.Header.DateKey)})"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,8 +222,8 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
// If the file has aboslutely no hashes, skip and log
|
||||
if (disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) != ItemStatus.Nodump
|
||||
&& string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)))
|
||||
&& string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
|
||||
{
|
||||
logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump");
|
||||
disk.SetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey, ItemStatus.Nodump);
|
||||
@@ -234,10 +234,10 @@ namespace SabreTools.DatFiles
|
||||
if (item is Media media)
|
||||
{
|
||||
// If the file has aboslutely no hashes, skip and log
|
||||
if (string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.MD5Key))
|
||||
&& string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key))
|
||||
&& string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key))
|
||||
&& string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey)))
|
||||
if (string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.MD5Key))
|
||||
&& string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key))
|
||||
&& string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA256Key))
|
||||
&& string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)))
|
||||
{
|
||||
logger.Verbose($"Incomplete entry for '{media.GetName()}' will be output as nodump");
|
||||
}
|
||||
@@ -246,18 +246,18 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
else if (item is Rom rom)
|
||||
{
|
||||
long? size = NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey));
|
||||
long? size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey);
|
||||
|
||||
// If we have the case where there is SHA-1 and nothing else, we don't fill in any other part of the data
|
||||
if (size == null && !rom.HasHashes())
|
||||
{
|
||||
// No-op, just catch it so it doesn't go further
|
||||
logger.Verbose($"{Header.GetFieldValue<string?>(DatHeader.FileNameKey)}: Entry with only SHA-1 found - '{rom.GetName()}'");
|
||||
logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Entry with only SHA-1 found - '{rom.GetName()}'");
|
||||
}
|
||||
|
||||
// If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info
|
||||
else if ((size == 0 || size == null)
|
||||
&& (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)) || rom.HasZeroHash()))
|
||||
&& (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)) || rom.HasZeroHash()))
|
||||
{
|
||||
// TODO: All instances of Hash.DeepHashes should be made into 0x0 eventually
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString());
|
||||
@@ -273,7 +273,7 @@ namespace SabreTools.DatFiles
|
||||
// If the file has no size and it's not the above case, skip and log
|
||||
else if (rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey) != ItemStatus.Nodump && (size == 0 || size == null))
|
||||
{
|
||||
logger.Verbose($"{Header.GetFieldValue<string?>(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
|
||||
logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
|
||||
rom.SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.Nodump);
|
||||
}
|
||||
|
||||
@@ -282,7 +282,7 @@ namespace SabreTools.DatFiles
|
||||
&& size != null && size > 0
|
||||
&& !rom.HasHashes())
|
||||
{
|
||||
logger.Verbose($"{Header.GetFieldValue<string?>(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
|
||||
logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump");
|
||||
rom.SetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey, ItemStatus.Nodump);
|
||||
}
|
||||
|
||||
@@ -368,7 +368,7 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
// Initialize strings
|
||||
string fix,
|
||||
game = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty,
|
||||
game = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty,
|
||||
name = item.GetName() ?? item.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey).ToString(),
|
||||
crc = string.Empty,
|
||||
md5 = string.Empty,
|
||||
@@ -381,35 +381,35 @@ namespace SabreTools.DatFiles
|
||||
|
||||
// If we have a prefix
|
||||
if (prefix)
|
||||
fix = Header.GetFieldValue<string?>(DatHeader.PrefixKey) + (Header.GetFieldValue<bool>(DatHeader.QuotesKey) ? "\"" : string.Empty);
|
||||
fix = Header.GetStringFieldValue(DatHeader.PrefixKey) + (Header.GetBoolFieldValue(DatHeader.QuotesKey) == true ? "\"" : string.Empty);
|
||||
|
||||
// If we have a postfix
|
||||
else
|
||||
fix = (Header.GetFieldValue<bool>(DatHeader.QuotesKey) ? "\"" : string.Empty) + Header.GetFieldValue<string?>(DatHeader.PostfixKey);
|
||||
fix = (Header.GetBoolFieldValue(DatHeader.QuotesKey) == true ? "\"" : string.Empty) + Header.GetStringFieldValue(DatHeader.PostfixKey);
|
||||
|
||||
// Ensure we have the proper values for replacement
|
||||
if (item is Disk disk)
|
||||
{
|
||||
md5 = disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key) ?? string.Empty;
|
||||
sha1 = disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key) ?? string.Empty;
|
||||
md5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key) ?? string.Empty;
|
||||
sha1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key) ?? string.Empty;
|
||||
}
|
||||
else if (item is Media media)
|
||||
{
|
||||
md5 = media.GetFieldValue<string?>(Models.Metadata.Media.MD5Key) ?? string.Empty;
|
||||
sha1 = media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key) ?? string.Empty;
|
||||
sha256 = media.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key) ?? string.Empty;
|
||||
spamsum = media.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey) ?? string.Empty;
|
||||
md5 = media.GetStringFieldValue(Models.Metadata.Media.MD5Key) ?? string.Empty;
|
||||
sha1 = media.GetStringFieldValue(Models.Metadata.Media.SHA1Key) ?? string.Empty;
|
||||
sha256 = media.GetStringFieldValue(Models.Metadata.Media.SHA256Key) ?? string.Empty;
|
||||
spamsum = media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty;
|
||||
}
|
||||
else if (item is Rom rom)
|
||||
{
|
||||
crc = rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey) ?? string.Empty;
|
||||
md5 = rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key) ?? string.Empty;
|
||||
sha1 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key) ?? string.Empty;
|
||||
sha256 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key) ?? string.Empty;
|
||||
sha384 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key) ?? string.Empty;
|
||||
sha512 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key) ?? string.Empty;
|
||||
size = rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey) ?? string.Empty;
|
||||
spamsum = rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey) ?? string.Empty;
|
||||
crc = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) ?? string.Empty;
|
||||
md5 = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) ?? string.Empty;
|
||||
sha1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) ?? string.Empty;
|
||||
sha256 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) ?? string.Empty;
|
||||
sha384 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key) ?? string.Empty;
|
||||
sha512 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key) ?? string.Empty;
|
||||
size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString() ?? string.Empty;
|
||||
spamsum = rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) ?? string.Empty;
|
||||
}
|
||||
|
||||
// Now do bulk replacement where possible
|
||||
@@ -417,9 +417,9 @@ namespace SabreTools.DatFiles
|
||||
.Replace("%game%", game)
|
||||
.Replace("%machine%", game)
|
||||
.Replace("%name%", name)
|
||||
.Replace("%manufacturer%", item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty)
|
||||
.Replace("%publisher%", item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey) ?? string.Empty)
|
||||
.Replace("%category%", item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey) ?? string.Empty)
|
||||
.Replace("%manufacturer%", item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty)
|
||||
.Replace("%publisher%", item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty)
|
||||
.Replace("%category%", item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty)
|
||||
.Replace("%crc%", crc)
|
||||
.Replace("%md5%", md5)
|
||||
.Replace("%sha1%", sha1)
|
||||
@@ -441,17 +441,17 @@ namespace SabreTools.DatFiles
|
||||
protected void ProcessItemName(DatItem item, bool forceRemoveQuotes, bool forceRomName = true)
|
||||
{
|
||||
// Backup relevant values and set new ones accordingly
|
||||
bool quotesBackup = Header.GetFieldValue<bool>(DatHeader.QuotesKey);
|
||||
bool useRomNameBackup = Header.GetFieldValue<bool>(DatHeader.UseRomNameKey);
|
||||
bool? quotesBackup = Header.GetBoolFieldValue(DatHeader.QuotesKey);
|
||||
bool? useRomNameBackup = Header.GetBoolFieldValue(DatHeader.UseRomNameKey);
|
||||
if (forceRemoveQuotes)
|
||||
Header.SetFieldValue<bool>(DatHeader.QuotesKey, false);
|
||||
if (forceRomName)
|
||||
Header.SetFieldValue<bool>(DatHeader.UseRomNameKey, true);
|
||||
|
||||
// Get the name to update
|
||||
string? name = (Header.GetFieldValue<bool>(DatHeader.UseRomNameKey)
|
||||
string? name = (Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true
|
||||
? item.GetName()
|
||||
: item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)) ?? string.Empty;
|
||||
: item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)) ?? string.Empty;
|
||||
|
||||
// Create the proper Prefix and Postfix
|
||||
string pre = CreatePrefixPostfix(item, true);
|
||||
@@ -463,27 +463,27 @@ namespace SabreTools.DatFiles
|
||||
if (item is Disk disk)
|
||||
{
|
||||
// We can only write out if there's a SHA-1
|
||||
if (!string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)))
|
||||
if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
|
||||
{
|
||||
name = Utilities.GetDepotPath(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key), Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
|
||||
name = Utilities.GetDepotPath(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key), Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
|
||||
item.SetName($"{pre}{name}{post}");
|
||||
}
|
||||
}
|
||||
else if (item is Media media)
|
||||
{
|
||||
// We can only write out if there's a SHA-1
|
||||
if (!string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key)))
|
||||
if (!string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)))
|
||||
{
|
||||
name = Utilities.GetDepotPath(media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key), Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
|
||||
name = Utilities.GetDepotPath(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key), Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
|
||||
item.SetName($"{pre}{name}{post}");
|
||||
}
|
||||
}
|
||||
else if (item is Rom rom)
|
||||
{
|
||||
// We can only write out if there's a SHA-1
|
||||
if (!string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)))
|
||||
if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
|
||||
{
|
||||
name = Utilities.GetDepotPath(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key), Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
|
||||
name = Utilities.GetDepotPath(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key), Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
|
||||
item.SetName($"{pre}{name}{post}");
|
||||
}
|
||||
}
|
||||
@@ -491,38 +491,38 @@ namespace SabreTools.DatFiles
|
||||
return;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(Header.GetFieldValue<string?>(DatHeader.ReplaceExtensionKey)) || Header.GetFieldValue<bool>(DatHeader.RemoveExtensionKey))
|
||||
if (!string.IsNullOrEmpty(Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)) || Header.GetBoolFieldValue(DatHeader.RemoveExtensionKey) == true)
|
||||
{
|
||||
if (Header.GetFieldValue<bool>(DatHeader.RemoveExtensionKey))
|
||||
if (Header.GetBoolFieldValue(DatHeader.RemoveExtensionKey) == true)
|
||||
Header.SetFieldValue<string?>(DatHeader.ReplaceExtensionKey, string.Empty);
|
||||
|
||||
string? dir = Path.GetDirectoryName(name);
|
||||
if (dir != null)
|
||||
{
|
||||
dir = dir.TrimStart(Path.DirectorySeparatorChar);
|
||||
name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + Header.GetFieldValue<string?>(DatHeader.ReplaceExtensionKey));
|
||||
name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey));
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(Header.GetFieldValue<string?>(DatHeader.AddExtensionKey)))
|
||||
name += Header.GetFieldValue<string?>(DatHeader.AddExtensionKey);
|
||||
if (!string.IsNullOrEmpty(Header.GetStringFieldValue(DatHeader.AddExtensionKey)))
|
||||
name += Header.GetStringFieldValue(DatHeader.AddExtensionKey);
|
||||
|
||||
if (Header.GetFieldValue<bool>(DatHeader.UseRomNameKey) && Header.GetFieldValue<bool>(DatHeader.GameNameKey))
|
||||
name = Path.Combine(item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty, name);
|
||||
if (Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true && Header.GetBoolFieldValue(DatHeader.GameNameKey) == true)
|
||||
name = Path.Combine(item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty, name);
|
||||
|
||||
// Now assign back the formatted name
|
||||
name = $"{pre}{name}{post}";
|
||||
if (Header.GetFieldValue<bool>(DatHeader.UseRomNameKey))
|
||||
if (Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true)
|
||||
item.SetName(name);
|
||||
else if (item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
item.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, name);
|
||||
|
||||
// Restore all relevant values
|
||||
if (forceRemoveQuotes)
|
||||
Header.SetFieldValue<bool>(DatHeader.QuotesKey, quotesBackup);
|
||||
Header.SetFieldValue<bool?>(DatHeader.QuotesKey, quotesBackup);
|
||||
|
||||
if (forceRomName)
|
||||
Header.SetFieldValue<bool>(DatHeader.UseRomNameKey, useRomNameBackup);
|
||||
Header.SetFieldValue<bool?>(DatHeader.UseRomNameKey, useRomNameBackup);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -537,19 +537,19 @@ namespace SabreTools.DatFiles
|
||||
return datItem;
|
||||
|
||||
// If the Rom has "null" characteristics, ensure all fields
|
||||
if (rom.GetFieldValue<long?>(Models.Metadata.Rom.SizeKey) == null && rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey) == "null")
|
||||
if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null && rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null")
|
||||
{
|
||||
logger.Verbose($"Empty folder found: {datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}");
|
||||
logger.Verbose($"Empty folder found: {datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}");
|
||||
|
||||
rom.SetName(rom.GetName() == "null" ? "-" : rom.GetName());
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString());
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey) == "null" ? Constants.CRCZero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key) == "null" ? Constants.MD5Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key) == "null" ? Constants.SHA1Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key) == "null" ? Constants.SHA256Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA384Key, rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key) == "null" ? Constants.SHA384Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA512Key, rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key) == "null" ? Constants.SHA512Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey, rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey) == "null" ? Constants.SpamSumZero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null" ? Constants.CRCZero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) == "null" ? Constants.MD5Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) == "null" ? Constants.SHA1Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) == "null" ? Constants.SHA256Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA384Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key) == "null" ? Constants.SHA384Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SHA512Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key) == "null" ? Constants.SHA512Zero : null);
|
||||
rom.SetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey, rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) == "null" ? Constants.SpamSumZero : null);
|
||||
}
|
||||
|
||||
return rom;
|
||||
@@ -607,7 +607,7 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
|
||||
// If the item is supposed to be removed, we ignore
|
||||
if (datItem.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||
if (datItem.GetBoolFieldValue(DatItem.RemoveKey) == true)
|
||||
{
|
||||
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
|
||||
logger?.Verbose($"Item '{itemString}' was skipped because it was marked for removal");
|
||||
@@ -626,7 +626,7 @@ namespace SabreTools.DatFiles
|
||||
if (ignoreBlanks && datItem is Rom rom)
|
||||
{
|
||||
// If we have a 0-size or blank rom, then we ignore
|
||||
long? size = NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey));
|
||||
long? size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey);
|
||||
if (size == 0 || size == null)
|
||||
{
|
||||
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
|
||||
|
||||
@@ -7,6 +7,7 @@ using SabreTools.Core;
|
||||
using SabreTools.Core.Tools;
|
||||
using SabreTools.DatFiles.Formats;
|
||||
using SabreTools.Filter;
|
||||
using SabreTools.Serialization;
|
||||
|
||||
namespace SabreTools.DatFiles
|
||||
{
|
||||
@@ -107,9 +108,9 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetFieldValue<string?>("DATVERSIONURL") != null
|
||||
return GetStringFieldValue("DATVERSIONURL") != null
|
||||
//&& GetFieldValue<Models.OfflineList.DatUrl?>("DATURL") != null // TODO: Add to internal model
|
||||
&& GetFieldValue<string?>("IMURL") != null;
|
||||
&& GetStringFieldValue("IMURL") != null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,13 +157,88 @@ namespace SabreTools.DatFiles
|
||||
public T? GetFieldValue<T>(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName))
|
||||
if (string.IsNullOrEmpty(fieldName) || !_header.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _header.Read<T>(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public bool? GetBoolFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_header.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _header.ReadBool(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public double? GetDoubleFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_header.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _header.ReadDouble(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public long? GetInt64FieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_header.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _header.ReadLong(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public string? GetStringFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_header.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _header.ReadString(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the value from a field based on the type provided
|
||||
/// </summary>
|
||||
/// <param name="fieldName">Field to retrieve</param>
|
||||
/// <returns>Value from the field, if possible</returns>
|
||||
public string[]? GetStringArrayFieldValue(string? fieldName)
|
||||
{
|
||||
// Invalid field cannot be processed
|
||||
if (string.IsNullOrEmpty(fieldName) || !_header.ContainsKey(fieldName!))
|
||||
return default;
|
||||
|
||||
// Get the value based on the type
|
||||
return _header.ReadStringArray(fieldName!);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Set the value from a field based on the type provided
|
||||
/// </summary>
|
||||
@@ -196,51 +272,51 @@ namespace SabreTools.DatFiles
|
||||
public object Clone()
|
||||
{
|
||||
var header = new DatHeader();
|
||||
header.SetFieldValue<string?>(DatHeader.AddExtensionKey, GetFieldValue<string?>(DatHeader.AddExtensionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, GetFieldValue<string?>(Models.Metadata.Header.AuthorKey));
|
||||
header.SetFieldValue<string?>(DatHeader.AddExtensionKey, GetStringFieldValue(DatHeader.AddExtensionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, GetStringFieldValue(Models.Metadata.Header.AuthorKey));
|
||||
header.SetFieldValue<MergingFlag>(Models.Metadata.Header.BiosModeKey, GetFieldValue<MergingFlag>(Models.Metadata.Header.BiosModeKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.BuildKey, GetFieldValue<string?>(Models.Metadata.Header.BuildKey));
|
||||
header.SetFieldValue<string[]?>(Models.Metadata.Header.CanOpenKey, GetFieldValue<string[]?>(Models.Metadata.Header.CanOpenKey)); // TODO: Perform a deep clone
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, GetFieldValue<string?>(Models.Metadata.Header.CategoryKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, GetFieldValue<string?>(Models.Metadata.Header.CommentKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, GetFieldValue<string?>(Models.Metadata.Header.DateKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.BuildKey, GetStringFieldValue(Models.Metadata.Header.BuildKey));
|
||||
header.SetFieldValue<string[]?>(Models.Metadata.Header.CanOpenKey, GetStringArrayFieldValue(Models.Metadata.Header.CanOpenKey)); // TODO: Perform a deep clone
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, GetStringFieldValue(Models.Metadata.Header.CategoryKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, GetStringFieldValue(Models.Metadata.Header.CommentKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, GetStringFieldValue(Models.Metadata.Header.DateKey));
|
||||
header.SetFieldValue<DatFormat>(DatHeader.DatFormatKey, GetFieldValue<DatFormat>(DatHeader.DatFormatKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DatVersionKey, GetFieldValue<string?>(Models.Metadata.Header.DatVersionKey));
|
||||
header.SetFieldValue<bool?>(Models.Metadata.Header.DebugKey, GetFieldValue<bool?>(Models.Metadata.Header.DebugKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.EmailKey, GetFieldValue<string?>(Models.Metadata.Header.EmailKey));
|
||||
header.SetFieldValue<string?>(DatHeader.FileNameKey, GetFieldValue<string?>(DatHeader.FileNameKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DatVersionKey, GetStringFieldValue(Models.Metadata.Header.DatVersionKey));
|
||||
header.SetFieldValue<bool?>(Models.Metadata.Header.DebugKey, GetBoolFieldValue(Models.Metadata.Header.DebugKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.EmailKey, GetStringFieldValue(Models.Metadata.Header.EmailKey));
|
||||
header.SetFieldValue<string?>(DatHeader.FileNameKey, GetStringFieldValue(DatHeader.FileNameKey));
|
||||
header.SetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey, GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey));
|
||||
header.SetFieldValue<NodumpFlag>(Models.Metadata.Header.ForceNodumpKey, GetFieldValue<NodumpFlag>(Models.Metadata.Header.ForceNodumpKey));
|
||||
header.SetFieldValue<PackingFlag>(Models.Metadata.Header.ForcePackingKey, GetFieldValue<PackingFlag>(Models.Metadata.Header.ForcePackingKey));
|
||||
header.SetFieldValue<bool>(DatHeader.GameNameKey, GetFieldValue<bool>(DatHeader.GameNameKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.HeaderKey, GetFieldValue<string?>(Models.Metadata.Header.HeaderKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.HomepageKey, GetFieldValue<string?>(Models.Metadata.Header.HomepageKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.IdKey, GetFieldValue<string?>(Models.Metadata.Header.IdKey));
|
||||
header.SetFieldValue<bool?>(DatHeader.GameNameKey, GetBoolFieldValue(DatHeader.GameNameKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.HeaderKey, GetStringFieldValue(Models.Metadata.Header.HeaderKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.HomepageKey, GetStringFieldValue(Models.Metadata.Header.HomepageKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.IdKey, GetStringFieldValue(Models.Metadata.Header.IdKey));
|
||||
header.SetFieldValue<OfflineListInfo[]?>(Models.Metadata.Header.InfosKey, GetFieldValue<OfflineListInfo[]?>(Models.Metadata.Header.InfosKey)); // TODO: Perform a deep clone
|
||||
header.SetFieldValue<DepotInformation?>(DatHeader.InputDepotKey, GetFieldValue<DepotInformation?>(DatHeader.InputDepotKey)?.Clone() as DepotInformation);
|
||||
header.SetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey, GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.Clone() as DepotInformation);
|
||||
header.SetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey, GetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey));
|
||||
header.SetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey, GetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey));
|
||||
header.SetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey, GetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.MameConfigKey, GetFieldValue<string?>(Models.Metadata.Header.MameConfigKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, GetFieldValue<string?>(Models.Metadata.Header.NameKey));
|
||||
header.SetFieldValue<string?>(DatHeader.PostfixKey, GetFieldValue<string?>(DatHeader.PostfixKey));
|
||||
header.SetFieldValue<string?>(DatHeader.PrefixKey, GetFieldValue<string?>(DatHeader.PrefixKey));
|
||||
header.SetFieldValue<bool>(DatHeader.QuotesKey, GetFieldValue<bool>(DatHeader.QuotesKey));
|
||||
header.SetFieldValue<bool>(DatHeader.RemoveExtensionKey, GetFieldValue<bool>(DatHeader.RemoveExtensionKey));
|
||||
header.SetFieldValue<string?>(DatHeader.ReplaceExtensionKey, GetFieldValue<string?>(DatHeader.ReplaceExtensionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.RomTitleKey, GetFieldValue<string?>(Models.Metadata.Header.RomTitleKey));
|
||||
header.SetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey, GetBoolFieldValue(Models.Metadata.Header.LockBiosModeKey));
|
||||
header.SetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey, GetBoolFieldValue(Models.Metadata.Header.LockRomModeKey));
|
||||
header.SetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey, GetBoolFieldValue(Models.Metadata.Header.LockSampleModeKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.MameConfigKey, GetStringFieldValue(Models.Metadata.Header.MameConfigKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, GetStringFieldValue(Models.Metadata.Header.NameKey));
|
||||
header.SetFieldValue<string?>(DatHeader.PostfixKey, GetStringFieldValue(DatHeader.PostfixKey));
|
||||
header.SetFieldValue<string?>(DatHeader.PrefixKey, GetStringFieldValue(DatHeader.PrefixKey));
|
||||
header.SetFieldValue<bool?>(DatHeader.QuotesKey, GetBoolFieldValue(DatHeader.QuotesKey));
|
||||
header.SetFieldValue<bool?>(DatHeader.RemoveExtensionKey, GetBoolFieldValue(DatHeader.RemoveExtensionKey));
|
||||
header.SetFieldValue<string?>(DatHeader.ReplaceExtensionKey, GetStringFieldValue(DatHeader.ReplaceExtensionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.RomTitleKey, GetStringFieldValue(Models.Metadata.Header.RomTitleKey));
|
||||
header.SetFieldValue<MergingFlag>(Models.Metadata.Header.RomModeKey, GetFieldValue<MergingFlag>(Models.Metadata.Header.RomModeKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.RootDirKey, GetFieldValue<string?>(Models.Metadata.Header.RootDirKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.RootDirKey, GetStringFieldValue(Models.Metadata.Header.RootDirKey));
|
||||
header.SetFieldValue<MergingFlag>(Models.Metadata.Header.SampleModeKey, GetFieldValue<MergingFlag>(Models.Metadata.Header.SampleModeKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.ScreenshotsHeightKey, GetFieldValue<string?>(Models.Metadata.Header.ScreenshotsHeightKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.ScreenshotsWidthKey, GetFieldValue<string?>(Models.Metadata.Header.ScreenshotsWidthKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.SystemKey, GetFieldValue<string?>(Models.Metadata.Header.SystemKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.TypeKey, GetFieldValue<string?>(Models.Metadata.Header.TypeKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.UrlKey, GetFieldValue<string?>(Models.Metadata.Header.UrlKey));
|
||||
header.SetFieldValue<bool>(DatHeader.UseRomNameKey, GetFieldValue<bool>(DatHeader.UseRomNameKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.VersionKey, GetFieldValue<string?>(Models.Metadata.Header.VersionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.ScreenshotsHeightKey, GetStringFieldValue(Models.Metadata.Header.ScreenshotsHeightKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.ScreenshotsWidthKey, GetStringFieldValue(Models.Metadata.Header.ScreenshotsWidthKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.SystemKey, GetStringFieldValue(Models.Metadata.Header.SystemKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.TypeKey, GetStringFieldValue(Models.Metadata.Header.TypeKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.UrlKey, GetStringFieldValue(Models.Metadata.Header.UrlKey));
|
||||
header.SetFieldValue<bool?>(DatHeader.UseRomNameKey, GetBoolFieldValue(DatHeader.UseRomNameKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.VersionKey, GetStringFieldValue(Models.Metadata.Header.VersionKey));
|
||||
|
||||
return header;
|
||||
}
|
||||
@@ -251,24 +327,24 @@ namespace SabreTools.DatFiles
|
||||
public DatHeader CloneStandard()
|
||||
{
|
||||
var header = new DatHeader();
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, GetFieldValue<string?>(Models.Metadata.Header.AuthorKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, GetFieldValue<string?>(Models.Metadata.Header.CategoryKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, GetFieldValue<string?>(Models.Metadata.Header.CommentKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, GetFieldValue<string?>(Models.Metadata.Header.DateKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, GetStringFieldValue(Models.Metadata.Header.AuthorKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, GetStringFieldValue(Models.Metadata.Header.CategoryKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, GetStringFieldValue(Models.Metadata.Header.CommentKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, GetStringFieldValue(Models.Metadata.Header.DateKey));
|
||||
header.SetFieldValue<DatFormat>(DatHeader.DatFormatKey, GetFieldValue<DatFormat>(DatHeader.DatFormatKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.EmailKey, GetFieldValue<string?>(Models.Metadata.Header.EmailKey));
|
||||
header.SetFieldValue<string?>(DatHeader.FileNameKey, GetFieldValue<string?>(DatHeader.FileNameKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.EmailKey, GetStringFieldValue(Models.Metadata.Header.EmailKey));
|
||||
header.SetFieldValue<string?>(DatHeader.FileNameKey, GetStringFieldValue(DatHeader.FileNameKey));
|
||||
header.SetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey, GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey));
|
||||
header.SetFieldValue<NodumpFlag>(Models.Metadata.Header.ForceNodumpKey, GetFieldValue<NodumpFlag>(Models.Metadata.Header.ForceNodumpKey));
|
||||
header.SetFieldValue<PackingFlag>(Models.Metadata.Header.ForcePackingKey, GetFieldValue<PackingFlag>(Models.Metadata.Header.ForcePackingKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.HeaderKey, GetFieldValue<string?>(Models.Metadata.Header.HeaderKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.HomepageKey, GetFieldValue<string?>(Models.Metadata.Header.HomepageKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, GetFieldValue<string?>(Models.Metadata.Header.NameKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.RootDirKey, GetFieldValue<string?>(Models.Metadata.Header.RootDirKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.TypeKey, GetFieldValue<string?>(Models.Metadata.Header.TypeKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.UrlKey, GetFieldValue<string?>(Models.Metadata.Header.UrlKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.VersionKey, GetFieldValue<string?>(Models.Metadata.Header.VersionKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.HeaderKey, GetStringFieldValue(Models.Metadata.Header.HeaderKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.HomepageKey, GetStringFieldValue(Models.Metadata.Header.HomepageKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, GetStringFieldValue(Models.Metadata.Header.NameKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.RootDirKey, GetStringFieldValue(Models.Metadata.Header.RootDirKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.TypeKey, GetStringFieldValue(Models.Metadata.Header.TypeKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.UrlKey, GetStringFieldValue(Models.Metadata.Header.UrlKey));
|
||||
header.SetFieldValue<string?>(Models.Metadata.Header.VersionKey, GetStringFieldValue(Models.Metadata.Header.VersionKey));
|
||||
|
||||
return header;
|
||||
}
|
||||
@@ -279,17 +355,17 @@ namespace SabreTools.DatFiles
|
||||
public DatHeader CloneFiltering()
|
||||
{
|
||||
var header = new DatHeader();
|
||||
header.SetFieldValue<string?>(DatHeader.AddExtensionKey, GetFieldValue<string?>(DatHeader.AddExtensionKey));
|
||||
header.SetFieldValue<string?>(DatHeader.AddExtensionKey, GetStringFieldValue(DatHeader.AddExtensionKey));
|
||||
header.SetFieldValue<DatFormat>(DatHeader.DatFormatKey, GetFieldValue<DatFormat>(DatHeader.DatFormatKey));
|
||||
header.SetFieldValue<bool>(DatHeader.GameNameKey, GetFieldValue<bool>(DatHeader.GameNameKey));
|
||||
header.SetFieldValue<bool?>(DatHeader.GameNameKey, GetBoolFieldValue(DatHeader.GameNameKey));
|
||||
header.SetFieldValue<DepotInformation?>(DatHeader.InputDepotKey, GetFieldValue<DepotInformation?>(DatHeader.InputDepotKey)?.Clone() as DepotInformation);
|
||||
header.SetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey, GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.Clone() as DepotInformation);
|
||||
header.SetFieldValue<string?>(DatHeader.PostfixKey, GetFieldValue<string?>(DatHeader.PostfixKey));
|
||||
header.SetFieldValue<string?>(DatHeader.PrefixKey, GetFieldValue<string?>(DatHeader.PrefixKey));
|
||||
header.SetFieldValue<bool>(DatHeader.RemoveExtensionKey, GetFieldValue<bool>(DatHeader.RemoveExtensionKey));
|
||||
header.SetFieldValue<string?>(DatHeader.ReplaceExtensionKey, GetFieldValue<string?>(DatHeader.ReplaceExtensionKey));
|
||||
header.SetFieldValue<bool>(DatHeader.QuotesKey, GetFieldValue<bool>(DatHeader.QuotesKey));
|
||||
header.SetFieldValue<bool>(DatHeader.UseRomNameKey, GetFieldValue<bool>(DatHeader.UseRomNameKey));
|
||||
header.SetFieldValue<string?>(DatHeader.PostfixKey, GetStringFieldValue(DatHeader.PostfixKey));
|
||||
header.SetFieldValue<string?>(DatHeader.PrefixKey, GetStringFieldValue(DatHeader.PrefixKey));
|
||||
header.SetFieldValue<bool?>(DatHeader.RemoveExtensionKey, GetBoolFieldValue(DatHeader.RemoveExtensionKey));
|
||||
header.SetFieldValue<string?>(DatHeader.ReplaceExtensionKey, GetStringFieldValue(DatHeader.ReplaceExtensionKey));
|
||||
header.SetFieldValue<bool?>(DatHeader.QuotesKey, GetBoolFieldValue(DatHeader.QuotesKey));
|
||||
header.SetFieldValue<bool?>(DatHeader.UseRomNameKey, GetBoolFieldValue(DatHeader.UseRomNameKey));
|
||||
|
||||
return header;
|
||||
}
|
||||
@@ -303,47 +379,47 @@ namespace SabreTools.DatFiles
|
||||
if (datHeader == null)
|
||||
return;
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(DatHeader.FileNameKey)))
|
||||
SetFieldValue<string?>(DatHeader.FileNameKey, datHeader.GetFieldValue<string?>(DatHeader.FileNameKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(DatHeader.FileNameKey)))
|
||||
SetFieldValue<string?>(DatHeader.FileNameKey, datHeader.GetStringFieldValue(DatHeader.FileNameKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.NameKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.NameKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.NameKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.NameKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.NameKey, datHeader.GetStringFieldValue(Models.Metadata.Header.NameKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, datHeader.GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.RootDirKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.RootDirKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.RootDirKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.RootDirKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.RootDirKey, datHeader.GetStringFieldValue(Models.Metadata.Header.RootDirKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.CategoryKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.CategoryKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.CategoryKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, datHeader.GetStringFieldValue(Models.Metadata.Header.CategoryKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.VersionKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.VersionKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.VersionKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.VersionKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.VersionKey, datHeader.GetStringFieldValue(Models.Metadata.Header.VersionKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.DateKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.DateKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.DateKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.DateKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.DateKey, datHeader.GetStringFieldValue(Models.Metadata.Header.DateKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.AuthorKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.AuthorKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.AuthorKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, datHeader.GetStringFieldValue(Models.Metadata.Header.AuthorKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.EmailKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.EmailKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.EmailKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.EmailKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.EmailKey, datHeader.GetStringFieldValue(Models.Metadata.Header.EmailKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.HomepageKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.HomepageKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.HomepageKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.HomepageKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.HomepageKey, datHeader.GetStringFieldValue(Models.Metadata.Header.HomepageKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.UrlKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.UrlKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.UrlKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.UrlKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.UrlKey, datHeader.GetStringFieldValue(Models.Metadata.Header.UrlKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.CommentKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.CommentKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.CommentKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.CommentKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.CommentKey, datHeader.GetStringFieldValue(Models.Metadata.Header.CommentKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.HeaderKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.HeaderKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.HeaderKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.HeaderKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.HeaderKey, datHeader.GetStringFieldValue(Models.Metadata.Header.HeaderKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(Models.Metadata.Header.TypeKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.TypeKey, datHeader.GetFieldValue<string?>(Models.Metadata.Header.TypeKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.TypeKey)))
|
||||
SetFieldValue<string?>(Models.Metadata.Header.TypeKey, datHeader.GetStringFieldValue(Models.Metadata.Header.TypeKey));
|
||||
|
||||
if (datHeader.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey) != MergingFlag.None)
|
||||
SetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey, datHeader.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey));
|
||||
@@ -357,24 +433,24 @@ namespace SabreTools.DatFiles
|
||||
if (datHeader.GetFieldValue<DatFormat>(DatHeader.DatFormatKey) != 0x00)
|
||||
SetFieldValue<DatFormat>(DatHeader.DatFormatKey, datHeader.GetFieldValue<DatFormat>(DatHeader.DatFormatKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(DatHeader.PrefixKey)))
|
||||
SetFieldValue<string?>(DatHeader.PrefixKey, datHeader.GetFieldValue<string?>(DatHeader.PrefixKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(DatHeader.PrefixKey)))
|
||||
SetFieldValue<string?>(DatHeader.PrefixKey, datHeader.GetStringFieldValue(DatHeader.PrefixKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(DatHeader.PostfixKey)))
|
||||
SetFieldValue<string?>(DatHeader.PostfixKey, datHeader.GetFieldValue<string?>(DatHeader.PostfixKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(DatHeader.PostfixKey)))
|
||||
SetFieldValue<string?>(DatHeader.PostfixKey, datHeader.GetStringFieldValue(DatHeader.PostfixKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(DatHeader.AddExtensionKey)))
|
||||
SetFieldValue<string?>(DatHeader.AddExtensionKey, datHeader.GetFieldValue<string?>(DatHeader.AddExtensionKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(DatHeader.AddExtensionKey)))
|
||||
SetFieldValue<string?>(DatHeader.AddExtensionKey, datHeader.GetStringFieldValue(DatHeader.AddExtensionKey));
|
||||
|
||||
if (!string.IsNullOrEmpty(datHeader.GetFieldValue<string?>(DatHeader.ReplaceExtensionKey)))
|
||||
SetFieldValue<string?>(DatHeader.ReplaceExtensionKey, datHeader.GetFieldValue<string?>(DatHeader.ReplaceExtensionKey));
|
||||
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(DatHeader.ReplaceExtensionKey)))
|
||||
SetFieldValue<string?>(DatHeader.ReplaceExtensionKey, datHeader.GetStringFieldValue(DatHeader.ReplaceExtensionKey));
|
||||
|
||||
SetFieldValue<DepotInformation?>(DatHeader.InputDepotKey, datHeader.GetFieldValue<DepotInformation?>(DatHeader.InputDepotKey)?.Clone() as DepotInformation);
|
||||
SetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey, datHeader.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.Clone() as DepotInformation);
|
||||
SetFieldValue<bool>(DatHeader.GameNameKey, datHeader.GetFieldValue<bool>(DatHeader.GameNameKey));
|
||||
SetFieldValue<bool>(DatHeader.QuotesKey, datHeader.GetFieldValue<bool>(DatHeader.QuotesKey));
|
||||
SetFieldValue<bool>(DatHeader.RemoveExtensionKey, datHeader.GetFieldValue<bool>(DatHeader.RemoveExtensionKey));
|
||||
SetFieldValue<bool>(DatHeader.UseRomNameKey, datHeader.GetFieldValue<bool>(DatHeader.UseRomNameKey));
|
||||
SetFieldValue<bool?>(DatHeader.GameNameKey, datHeader.GetBoolFieldValue(DatHeader.GameNameKey));
|
||||
SetFieldValue<bool?>(DatHeader.QuotesKey, datHeader.GetBoolFieldValue(DatHeader.QuotesKey));
|
||||
SetFieldValue<bool?>(DatHeader.RemoveExtensionKey, datHeader.GetBoolFieldValue(DatHeader.RemoveExtensionKey));
|
||||
SetFieldValue<bool?>(DatHeader.UseRomNameKey, datHeader.GetBoolFieldValue(DatHeader.UseRomNameKey));
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -879,9 +955,9 @@ namespace SabreTools.DatFiles
|
||||
/// <returns>String containing the new filename</returns>
|
||||
private string CreateOutFileNamesHelper(string outDir, string extension, bool overwrite)
|
||||
{
|
||||
string? filename = string.IsNullOrEmpty(GetFieldValue<string?>(DatHeader.FileNameKey))
|
||||
? GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey)
|
||||
: GetFieldValue<string?>(DatHeader.FileNameKey);
|
||||
string? filename = string.IsNullOrEmpty(GetStringFieldValue(DatHeader.FileNameKey))
|
||||
? GetStringFieldValue(Models.Metadata.Header.DescriptionKey)
|
||||
: GetStringFieldValue(DatHeader.FileNameKey);
|
||||
|
||||
// Strip off the extension if it's a holdover from the DAT
|
||||
if (Utilities.HasValidDatExtension(filename))
|
||||
|
||||
@@ -43,29 +43,29 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Release release:
|
||||
if (string.IsNullOrEmpty(release.GetName()))
|
||||
missingFields.Add(Models.Metadata.Release.NameKey);
|
||||
if (string.IsNullOrEmpty(release.GetFieldValue<string?>(Models.Metadata.Release.RegionKey)))
|
||||
if (string.IsNullOrEmpty(release.GetStringFieldValue(Models.Metadata.Release.RegionKey)))
|
||||
missingFields.Add(Models.Metadata.Release.RegionKey);
|
||||
break;
|
||||
|
||||
case BiosSet biosset:
|
||||
if (string.IsNullOrEmpty(biosset.GetName()))
|
||||
missingFields.Add(Models.Metadata.BiosSet.NameKey);
|
||||
if (string.IsNullOrEmpty(biosset.GetFieldValue<string?>(Models.Metadata.BiosSet.DescriptionKey)))
|
||||
if (string.IsNullOrEmpty(biosset.GetStringFieldValue(Models.Metadata.BiosSet.DescriptionKey)))
|
||||
missingFields.Add(Models.Metadata.BiosSet.DescriptionKey);
|
||||
break;
|
||||
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetName()))
|
||||
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||
if (rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey) == null || NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) < 0)
|
||||
if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null || rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < 0)
|
||||
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||
}
|
||||
@@ -74,8 +74,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.GetName()))
|
||||
missingFields.Add(Models.Metadata.Disk.NameKey);
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||
}
|
||||
@@ -101,17 +101,17 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Display display:
|
||||
if (display.GetFieldValue<DisplayType>(Models.Metadata.Display.DisplayTypeKey) == DisplayType.NULL)
|
||||
missingFields.Add(Models.Metadata.Display.DisplayTypeKey);
|
||||
if (display.GetFieldValue<long?>(Models.Metadata.Display.RotateKey) == null)
|
||||
if (display.GetInt64FieldValue(Models.Metadata.Display.RotateKey) == null)
|
||||
missingFields.Add(Models.Metadata.Display.RotateKey);
|
||||
break;
|
||||
|
||||
case Sound sound:
|
||||
if (sound.GetFieldValue<long?>(Models.Metadata.Sound.ChannelsKey) == null)
|
||||
if (sound.GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey) == null)
|
||||
missingFields.Add(Models.Metadata.Sound.ChannelsKey);
|
||||
break;
|
||||
|
||||
case Input input:
|
||||
if (input.GetFieldValue<long?>(Models.Metadata.Input.PlayersKey) == null)
|
||||
if (input.GetInt64FieldValue(Models.Metadata.Input.PlayersKey) == null)
|
||||
missingFields.Add(Models.Metadata.Input.PlayersKey);
|
||||
if (!input.ControlsSpecified)
|
||||
missingFields.Add(Models.Metadata.Input.ControlKey);
|
||||
@@ -188,18 +188,18 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
var clrMamePro = new Models.ClrMamePro.ClrMamePro
|
||||
{
|
||||
Name = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey),
|
||||
RootDir = Header.GetFieldValue<string?>(Models.Metadata.Header.RootDirKey),
|
||||
Category = Header.GetFieldValue<string?>(Models.Metadata.Header.CategoryKey),
|
||||
Version = Header.GetFieldValue<string?>(Models.Metadata.Header.VersionKey),
|
||||
Date = Header.GetFieldValue<string?>(Models.Metadata.Header.DateKey),
|
||||
Author = Header.GetFieldValue<string?>(Models.Metadata.Header.AuthorKey),
|
||||
Homepage = Header.GetFieldValue<string?>(Models.Metadata.Header.HomepageKey),
|
||||
Url = Header.GetFieldValue<string?>(Models.Metadata.Header.UrlKey),
|
||||
Comment = Header.GetFieldValue<string?>(Models.Metadata.Header.CommentKey),
|
||||
Header = Header.GetFieldValue<string?>(Models.Metadata.Header.HeaderKey),
|
||||
Type = Header.GetFieldValue<string?>(Models.Metadata.Header.TypeKey),
|
||||
Name = Header.GetStringFieldValue(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey),
|
||||
RootDir = Header.GetStringFieldValue(Models.Metadata.Header.RootDirKey),
|
||||
Category = Header.GetStringFieldValue(Models.Metadata.Header.CategoryKey),
|
||||
Version = Header.GetStringFieldValue(Models.Metadata.Header.VersionKey),
|
||||
Date = Header.GetStringFieldValue(Models.Metadata.Header.DateKey),
|
||||
Author = Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey),
|
||||
Homepage = Header.GetStringFieldValue(Models.Metadata.Header.HomepageKey),
|
||||
Url = Header.GetStringFieldValue(Models.Metadata.Header.UrlKey),
|
||||
Comment = Header.GetStringFieldValue(Models.Metadata.Header.CommentKey),
|
||||
Header = Header.GetStringFieldValue(Models.Metadata.Header.HeaderKey),
|
||||
Type = Header.GetStringFieldValue(Models.Metadata.Header.TypeKey),
|
||||
};
|
||||
|
||||
if (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey) != MergingFlag.None)
|
||||
@@ -236,14 +236,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
// We normalize to all "game"
|
||||
var game = new Models.ClrMamePro.Game
|
||||
{
|
||||
Name = machine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
Description = machine?.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Year = machine?.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Manufacturer = machine?.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey),
|
||||
Category = machine?.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey),
|
||||
CloneOf = machine?.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
RomOf = machine?.GetFieldValue<string?>(Models.Metadata.Machine.RomOfKey),
|
||||
SampleOf = machine?.GetFieldValue<string?>(Models.Metadata.Machine.SampleOfKey),
|
||||
Name = machine?.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
Description = machine?.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey),
|
||||
Year = machine?.GetStringFieldValue(Models.Metadata.Machine.YearKey),
|
||||
Manufacturer = machine?.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey),
|
||||
Category = machine?.GetStringFieldValue(Models.Metadata.Machine.CategoryKey),
|
||||
CloneOf = machine?.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey),
|
||||
RomOf = machine?.GetStringFieldValue(Models.Metadata.Machine.RomOfKey),
|
||||
SampleOf = machine?.GetStringFieldValue(Models.Metadata.Machine.SampleOfKey),
|
||||
};
|
||||
|
||||
// Create holders for all item types
|
||||
@@ -342,10 +342,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var release = new Models.ClrMamePro.Release
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Region = item.GetFieldValue<string?>(Models.Metadata.Release.RegionKey),
|
||||
Language = item.GetFieldValue<string?>(Models.Metadata.Release.LanguageKey),
|
||||
Date = item.GetFieldValue<string?>(Models.Metadata.Release.DateKey),
|
||||
Default = item.GetFieldValue<bool?>(Models.Metadata.Release.DefaultKey).FromYesNo(),
|
||||
Region = item.GetStringFieldValue(Models.Metadata.Release.RegionKey),
|
||||
Language = item.GetStringFieldValue(Models.Metadata.Release.LanguageKey),
|
||||
Date = item.GetStringFieldValue(Models.Metadata.Release.DateKey),
|
||||
Default = item.GetBoolFieldValue(Models.Metadata.Release.DefaultKey).FromYesNo(),
|
||||
};
|
||||
|
||||
return release;
|
||||
@@ -359,8 +359,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var biosset = new Models.ClrMamePro.BiosSet
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Default = item.GetFieldValue<bool?>(Models.Metadata.BiosSet.DefaultKey).FromYesNo(),
|
||||
Description = item.GetFieldValue<string?>(Models.Metadata.BiosSet.DescriptionKey),
|
||||
Default = item.GetBoolFieldValue(Models.Metadata.BiosSet.DefaultKey).FromYesNo(),
|
||||
Description = item.GetStringFieldValue(Models.Metadata.BiosSet.DescriptionKey),
|
||||
};
|
||||
|
||||
return biosset;
|
||||
@@ -374,25 +374,25 @@ namespace SabreTools.DatFiles.Formats
|
||||
var rom = new Models.ClrMamePro.Rom
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Size = item.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
CRC = item.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
MD5 = item.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
SHA256 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key),
|
||||
SHA384 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key),
|
||||
SHA512 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key),
|
||||
SpamSum = item.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey),
|
||||
xxHash364 = item.GetFieldValue<string?>(Models.Metadata.Rom.xxHash364Key),
|
||||
xxHash3128 = item.GetFieldValue<string?>(Models.Metadata.Rom.xxHash3128Key),
|
||||
Merge = item.GetFieldValue<string?>(Models.Metadata.Rom.MergeKey),
|
||||
Region = item.GetFieldValue<string?>(Models.Metadata.Rom.RegionKey),
|
||||
Flags = item.GetFieldValue<string?>(Models.Metadata.Rom.FlagsKey),
|
||||
Date = item.GetFieldValue<string?>(Models.Metadata.Rom.DateKey),
|
||||
Offs = item.GetFieldValue<string?>(Models.Metadata.Rom.OffsetKey),
|
||||
Serial = item.GetFieldValue<string?>(Models.Metadata.Rom.SerialKey),
|
||||
Header = item.GetFieldValue<string?>(Models.Metadata.Rom.HeaderKey),
|
||||
Inverted = item.GetFieldValue<bool?>(Models.Metadata.Rom.InvertedKey).FromYesNo(),
|
||||
MIA = item.GetFieldValue<bool?>(Models.Metadata.Rom.MIAKey).FromYesNo(),
|
||||
Size = item.GetStringFieldValue(Models.Metadata.Rom.SizeKey),
|
||||
CRC = item.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
MD5 = item.GetStringFieldValue(Models.Metadata.Rom.MD5Key),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Rom.SHA1Key),
|
||||
SHA256 = item.GetStringFieldValue(Models.Metadata.Rom.SHA256Key),
|
||||
SHA384 = item.GetStringFieldValue(Models.Metadata.Rom.SHA384Key),
|
||||
SHA512 = item.GetStringFieldValue(Models.Metadata.Rom.SHA512Key),
|
||||
SpamSum = item.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey),
|
||||
xxHash364 = item.GetStringFieldValue(Models.Metadata.Rom.xxHash364Key),
|
||||
xxHash3128 = item.GetStringFieldValue(Models.Metadata.Rom.xxHash3128Key),
|
||||
Merge = item.GetStringFieldValue(Models.Metadata.Rom.MergeKey),
|
||||
Region = item.GetStringFieldValue(Models.Metadata.Rom.RegionKey),
|
||||
Flags = item.GetStringFieldValue(Models.Metadata.Rom.FlagsKey),
|
||||
Date = item.GetStringFieldValue(Models.Metadata.Rom.DateKey),
|
||||
Offs = item.GetStringFieldValue(Models.Metadata.Rom.OffsetKey),
|
||||
Serial = item.GetStringFieldValue(Models.Metadata.Rom.SerialKey),
|
||||
Header = item.GetStringFieldValue(Models.Metadata.Rom.HeaderKey),
|
||||
Inverted = item.GetBoolFieldValue(Models.Metadata.Rom.InvertedKey).FromYesNo(),
|
||||
MIA = item.GetBoolFieldValue(Models.Metadata.Rom.MIAKey).FromYesNo(),
|
||||
};
|
||||
|
||||
if (item.ItemStatusSpecified)
|
||||
@@ -409,10 +409,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var disk = new Models.ClrMamePro.Disk
|
||||
{
|
||||
Name = item.GetName(),
|
||||
MD5 = item.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key),
|
||||
Merge = item.GetFieldValue<string?>(Models.Metadata.Disk.MergeKey),
|
||||
Flags = item.GetFieldValue<string?>(Models.Metadata.Disk.FlagsKey),
|
||||
MD5 = item.GetStringFieldValue(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Disk.SHA1Key),
|
||||
Merge = item.GetStringFieldValue(Models.Metadata.Disk.MergeKey),
|
||||
Flags = item.GetStringFieldValue(Models.Metadata.Disk.FlagsKey),
|
||||
};
|
||||
|
||||
if (item.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) != ItemStatus.NULL)
|
||||
@@ -429,10 +429,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var media = new Models.ClrMamePro.Media
|
||||
{
|
||||
Name = item.GetName(),
|
||||
MD5 = item.GetFieldValue<string?>(Models.Metadata.Media.MD5Key),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key),
|
||||
SHA256 = item.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key),
|
||||
SpamSum = item.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey),
|
||||
MD5 = item.GetStringFieldValue(Models.Metadata.Media.MD5Key),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Media.SHA1Key),
|
||||
SHA256 = item.GetStringFieldValue(Models.Metadata.Media.SHA256Key),
|
||||
SpamSum = item.GetStringFieldValue(Models.Metadata.Media.SpamSumKey),
|
||||
};
|
||||
return media;
|
||||
}
|
||||
@@ -470,8 +470,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
Type = item.GetFieldValue<ChipType>(Models.Metadata.Chip.ChipTypeKey).AsStringValue<ChipType>(),
|
||||
Name = item.GetName(),
|
||||
Flags = item.GetFieldValue<string?>(Models.Metadata.Chip.FlagsKey),
|
||||
Clock = item.GetFieldValue<long?>(Models.Metadata.Chip.ClockKey)?.ToString(),
|
||||
Flags = item.GetStringFieldValue(Models.Metadata.Chip.FlagsKey),
|
||||
Clock = item.GetInt64FieldValue(Models.Metadata.Chip.ClockKey)?.ToString(),
|
||||
};
|
||||
return chip;
|
||||
}
|
||||
@@ -484,14 +484,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
var video = new Models.ClrMamePro.Video
|
||||
{
|
||||
Screen = item.GetFieldValue<DisplayType>(Models.Metadata.Display.DisplayTypeKey).AsStringValue<DisplayType>(),
|
||||
X = item.GetFieldValue<long?>(Models.Metadata.Display.WidthKey)?.ToString(),
|
||||
Y = item.GetFieldValue<long?>(Models.Metadata.Display.HeightKey)?.ToString(),
|
||||
AspectX = item.GetFieldValue<string?>("ASPECTX"),
|
||||
AspectY = item.GetFieldValue<string?>("ASPECTY"),
|
||||
Freq = item.GetFieldValue<double?>(Models.Metadata.Display.RefreshKey)?.ToString(),
|
||||
X = item.GetInt64FieldValue(Models.Metadata.Display.WidthKey)?.ToString(),
|
||||
Y = item.GetInt64FieldValue(Models.Metadata.Display.HeightKey)?.ToString(),
|
||||
AspectX = item.GetStringFieldValue("ASPECTX"),
|
||||
AspectY = item.GetStringFieldValue("ASPECTY"),
|
||||
Freq = item.GetDoubleFieldValue(Models.Metadata.Display.RefreshKey)?.ToString(),
|
||||
};
|
||||
|
||||
switch (item.GetFieldValue<long?>(Models.Metadata.Display.RotateKey))
|
||||
switch (item.GetInt64FieldValue(Models.Metadata.Display.RotateKey))
|
||||
{
|
||||
case 0:
|
||||
case 180:
|
||||
@@ -513,7 +513,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var sound = new Models.ClrMamePro.Sound
|
||||
{
|
||||
Channels = item.GetFieldValue<long?>(Models.Metadata.Sound.ChannelsKey)?.ToString(),
|
||||
Channels = item.GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey)?.ToString(),
|
||||
};
|
||||
return sound;
|
||||
}
|
||||
@@ -525,15 +525,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var input = new Models.ClrMamePro.Input
|
||||
{
|
||||
Players = item.GetFieldValue<long?>(Models.Metadata.Input.PlayersKey)?.ToString(),
|
||||
//Control = item.GetFieldValue<string?>(Models.Metadata.Input.ControlKey),
|
||||
Coins = item.GetFieldValue<long?>(Models.Metadata.Input.CoinsKey)?.ToString(),
|
||||
Tilt = item.GetFieldValue<bool?>(Models.Metadata.Input.TiltKey).FromYesNo(),
|
||||
Service = item.GetFieldValue<bool?>(Models.Metadata.Input.ServiceKey).FromYesNo(),
|
||||
Players = item.GetInt64FieldValue(Models.Metadata.Input.PlayersKey)?.ToString(),
|
||||
//Control = item.GetStringFieldValue(Models.Metadata.Input.ControlKey),
|
||||
Coins = item.GetInt64FieldValue(Models.Metadata.Input.CoinsKey)?.ToString(),
|
||||
Tilt = item.GetBoolFieldValue(Models.Metadata.Input.TiltKey).FromYesNo(),
|
||||
Service = item.GetBoolFieldValue(Models.Metadata.Input.ServiceKey).FromYesNo(),
|
||||
};
|
||||
|
||||
if (item.ControlsSpecified)
|
||||
input.Buttons = item.GetFieldValue<Control[]?>(Models.Metadata.Input.ControlKey)![0].GetFieldValue<long?>(Models.Metadata.Control.ButtonsKey)?.ToString();
|
||||
input.Buttons = item.GetFieldValue<Control[]?>(Models.Metadata.Input.ControlKey)![0].GetInt64FieldValue(Models.Metadata.Control.ButtonsKey)?.ToString();
|
||||
|
||||
return input;
|
||||
}
|
||||
@@ -553,9 +553,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
var entries = new List<string>();
|
||||
foreach (var setting in item.GetFieldValue<DipValue[]?>(Models.Metadata.DipSwitch.DipValueKey)!)
|
||||
{
|
||||
entries.Add(setting.GetFieldValue<string?>(Models.Metadata.DipValue.ValueKey)!);
|
||||
if (setting.GetFieldValue<bool?>(Models.Metadata.DipValue.DefaultKey) == true)
|
||||
dipswitch.Default = setting.GetFieldValue<string?>(Models.Metadata.DipValue.ValueKey);
|
||||
entries.Add(setting.GetStringFieldValue(Models.Metadata.DipValue.ValueKey)!);
|
||||
if (setting.GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey) == true)
|
||||
dipswitch.Default = setting.GetStringFieldValue(Models.Metadata.DipValue.ValueKey);
|
||||
}
|
||||
|
||||
dipswitch.Entry = [.. entries];
|
||||
@@ -574,8 +574,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
Status = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.StatusKey).AsStringValue<SupportStatus>(),
|
||||
Color = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.ColorKey).AsStringValue<SupportStatus>(),
|
||||
Sound = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.SoundKey).AsStringValue<SupportStatus>(),
|
||||
PaletteSize = item.GetFieldValue<long?>(Models.Metadata.Driver.PaletteSizeKey)?.ToString(),
|
||||
Blit = item.GetFieldValue<string?>(Models.Metadata.Driver.BlitKey),
|
||||
PaletteSize = item.GetInt64FieldValue(Models.Metadata.Driver.PaletteSizeKey)?.ToString(),
|
||||
Blit = item.GetStringFieldValue(Models.Metadata.Driver.BlitKey),
|
||||
};
|
||||
return driver;
|
||||
}
|
||||
|
||||
@@ -34,11 +34,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey) == null || NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) < 0)
|
||||
if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null || rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < 0)
|
||||
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||
// if (string.IsNullOrEmpty(rom.Date))
|
||||
// missingFields.Add(Models.Metadata.Rom.DateKey);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)))
|
||||
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||
break;
|
||||
}
|
||||
@@ -97,13 +97,13 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
var clrMamePro = new Models.DosCenter.DosCenter
|
||||
{
|
||||
Name = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey),
|
||||
Version = Header.GetFieldValue<string?>(Models.Metadata.Header.VersionKey),
|
||||
Date = Header.GetFieldValue<string?>(Models.Metadata.Header.DateKey),
|
||||
Author = Header.GetFieldValue<string?>(Models.Metadata.Header.AuthorKey),
|
||||
Homepage = Header.GetFieldValue<string?>(Models.Metadata.Header.HomepageKey),
|
||||
Comment = Header.GetFieldValue<string?>(Models.Metadata.Header.CommentKey),
|
||||
Name = Header.GetStringFieldValue(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey),
|
||||
Version = Header.GetStringFieldValue(Models.Metadata.Header.VersionKey),
|
||||
Date = Header.GetStringFieldValue(Models.Metadata.Header.DateKey),
|
||||
Author = Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey),
|
||||
Homepage = Header.GetStringFieldValue(Models.Metadata.Header.HomepageKey),
|
||||
Comment = Header.GetStringFieldValue(Models.Metadata.Header.CommentKey),
|
||||
};
|
||||
|
||||
return clrMamePro;
|
||||
@@ -135,7 +135,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
// We re-add the missing parts of the game name
|
||||
var game = new Models.DosCenter.Game
|
||||
{
|
||||
Name = $"\"{machine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty}.zip\""
|
||||
Name = $"\"{machine?.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty}.zip\""
|
||||
};
|
||||
|
||||
// Create holders for all item types
|
||||
@@ -180,9 +180,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
var rom = new Models.DosCenter.File
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Size = item.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
CRC = item.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
Date = item.GetFieldValue<string?>(Models.Metadata.Rom.DateKey),
|
||||
Size = item.GetStringFieldValue(Models.Metadata.Rom.SizeKey),
|
||||
CRC = item.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
Date = item.GetStringFieldValue(Models.Metadata.Rom.DateKey),
|
||||
};
|
||||
return rom;
|
||||
}
|
||||
|
||||
@@ -33,13 +33,13 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.SHA256Key);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.MD5Key);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)))
|
||||
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||
break;
|
||||
}
|
||||
@@ -138,12 +138,12 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var row = new Models.EverdriveSMDB.Row
|
||||
{
|
||||
SHA256 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key),
|
||||
Name = $"{rom.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty}/{rom.GetName()}",
|
||||
SHA1 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
MD5 = rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key),
|
||||
CRC32 = rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
Size = rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
SHA256 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key),
|
||||
Name = $"{rom.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty}/{rom.GetName()}",
|
||||
SHA1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key),
|
||||
MD5 = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key),
|
||||
CRC32 = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
Size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString(),
|
||||
};
|
||||
return row;
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)))
|
||||
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||
break;
|
||||
default:
|
||||
@@ -52,15 +52,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key)))
|
||||
if (string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)))
|
||||
missingFields.Add(Models.Metadata.Disk.MD5Key);
|
||||
break;
|
||||
case Media medium:
|
||||
if (string.IsNullOrEmpty(medium.GetFieldValue<string?>(Models.Metadata.Media.MD5Key)))
|
||||
if (string.IsNullOrEmpty(medium.GetStringFieldValue(Models.Metadata.Media.MD5Key)))
|
||||
missingFields.Add(Models.Metadata.Media.MD5Key);
|
||||
break;
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.MD5Key);
|
||||
break;
|
||||
default:
|
||||
@@ -72,15 +72,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
|
||||
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||
break;
|
||||
case Media medium:
|
||||
if (string.IsNullOrEmpty(medium.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(medium.GetStringFieldValue(Models.Metadata.Media.SHA1Key)))
|
||||
missingFields.Add(Models.Metadata.Media.SHA1Key);
|
||||
break;
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||
break;
|
||||
default:
|
||||
@@ -92,11 +92,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Media medium:
|
||||
if (string.IsNullOrEmpty(medium.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key)))
|
||||
if (string.IsNullOrEmpty(medium.GetStringFieldValue(Models.Metadata.Media.SHA256Key)))
|
||||
missingFields.Add(Models.Metadata.Media.SHA256Key);
|
||||
break;
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.SHA256Key);
|
||||
break;
|
||||
default:
|
||||
@@ -108,7 +108,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.SHA384Key);
|
||||
break;
|
||||
default:
|
||||
@@ -120,7 +120,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.SHA512Key);
|
||||
break;
|
||||
default:
|
||||
@@ -132,11 +132,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Media medium:
|
||||
if (string.IsNullOrEmpty(medium.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey)))
|
||||
if (string.IsNullOrEmpty(medium.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)))
|
||||
missingFields.Add(Models.Metadata.Media.SpamSumKey);
|
||||
break;
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)))
|
||||
missingFields.Add(Models.Metadata.Rom.SpamSumKey);
|
||||
break;
|
||||
default:
|
||||
@@ -243,8 +243,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
continue;
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GetFieldValue<bool>(DatHeader.GameNameKey) && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
if (Header.GetBoolFieldValue(DatHeader.GameNameKey) == true && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
@@ -252,7 +252,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
sfvs.Add(new Models.Hashfile.SFV
|
||||
{
|
||||
File = name + rom.GetName(),
|
||||
Hash = rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
Hash = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
});
|
||||
break;
|
||||
}
|
||||
@@ -294,15 +294,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
continue;
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GetFieldValue<bool>(DatHeader.GameNameKey) && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
if (Header.GetBoolFieldValue(DatHeader.GameNameKey) == true && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
case Disk disk:
|
||||
md5s.Add(new Models.Hashfile.MD5
|
||||
{
|
||||
Hash = disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key),
|
||||
Hash = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key),
|
||||
File = name + disk.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -310,7 +310,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Media media:
|
||||
md5s.Add(new Models.Hashfile.MD5
|
||||
{
|
||||
Hash = media.GetFieldValue<string?>(Models.Metadata.Media.MD5Key),
|
||||
Hash = media.GetStringFieldValue(Models.Metadata.Media.MD5Key),
|
||||
File = name + media.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -318,7 +318,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Rom rom:
|
||||
md5s.Add(new Models.Hashfile.MD5
|
||||
{
|
||||
Hash = rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key),
|
||||
Hash = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key),
|
||||
File = name + rom.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -361,15 +361,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
continue;
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GetFieldValue<bool>(DatHeader.GameNameKey) && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
if (Header.GetBoolFieldValue(DatHeader.GameNameKey) == true && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
case Disk disk:
|
||||
sha1s.Add(new Models.Hashfile.SHA1
|
||||
{
|
||||
Hash = disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key),
|
||||
Hash = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key),
|
||||
File = name + disk.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -377,7 +377,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Media media:
|
||||
sha1s.Add(new Models.Hashfile.SHA1
|
||||
{
|
||||
Hash = media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key),
|
||||
Hash = media.GetStringFieldValue(Models.Metadata.Media.SHA1Key),
|
||||
File = name + media.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -385,7 +385,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Rom rom:
|
||||
sha1s.Add(new Models.Hashfile.SHA1
|
||||
{
|
||||
Hash = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
Hash = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key),
|
||||
File = name + rom.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -428,15 +428,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
continue;
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GetFieldValue<bool>(DatHeader.GameNameKey) && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
if (Header.GetBoolFieldValue(DatHeader.GameNameKey) == true && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
case Media media:
|
||||
sha256s.Add(new Models.Hashfile.SHA256
|
||||
{
|
||||
Hash = media.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key),
|
||||
Hash = media.GetStringFieldValue(Models.Metadata.Media.SHA256Key),
|
||||
File = name + media.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -444,7 +444,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Rom rom:
|
||||
sha256s.Add(new Models.Hashfile.SHA256
|
||||
{
|
||||
Hash = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key),
|
||||
Hash = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key),
|
||||
File = name + rom.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -487,15 +487,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
continue;
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GetFieldValue<bool>(DatHeader.GameNameKey) && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
if (Header.GetBoolFieldValue(DatHeader.GameNameKey) == true && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
case Rom rom:
|
||||
sha384s.Add(new Models.Hashfile.SHA384
|
||||
{
|
||||
Hash = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key),
|
||||
Hash = rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key),
|
||||
File = name + rom.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -538,15 +538,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
continue;
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GetFieldValue<bool>(DatHeader.GameNameKey) && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
if (Header.GetBoolFieldValue(DatHeader.GameNameKey) == true && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
case Rom rom:
|
||||
sha512s.Add(new Models.Hashfile.SHA512
|
||||
{
|
||||
Hash = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key),
|
||||
Hash = rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key),
|
||||
File = name + rom.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -589,15 +589,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
continue;
|
||||
|
||||
string name = string.Empty;
|
||||
if (Header.GetFieldValue<bool>(DatHeader.GameNameKey) && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
if (Header.GetBoolFieldValue(DatHeader.GameNameKey) == true && item.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
name = $"{item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}{Path.DirectorySeparatorChar}";
|
||||
|
||||
switch (item)
|
||||
{
|
||||
case Media media:
|
||||
spamsums.Add(new Models.Hashfile.SpamSum
|
||||
{
|
||||
Hash = media.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey),
|
||||
Hash = media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey),
|
||||
File = name + media.GetName(),
|
||||
});
|
||||
break;
|
||||
@@ -605,7 +605,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Rom rom:
|
||||
spamsums.Add(new Models.Hashfile.SpamSum
|
||||
{
|
||||
Hash = rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey),
|
||||
Hash = rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey),
|
||||
File = name + rom.GetName(),
|
||||
});
|
||||
break;
|
||||
|
||||
@@ -35,19 +35,19 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||
}
|
||||
break;
|
||||
|
||||
case Rom rom:
|
||||
if (rom.GetFieldValue<long?>(Models.Metadata.Rom.SizeKey) == null || NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) < 0)
|
||||
if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null || rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < 0)
|
||||
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)))
|
||||
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||
break;
|
||||
}
|
||||
@@ -117,11 +117,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
var set = new Models.Listrom.Set
|
||||
{
|
||||
Driver = items[0]!.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey) == true
|
||||
? items[0]!.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)
|
||||
Driver = items[0]!.GetFieldValue<Machine>(DatItem.MachineKey)!.GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey) == true
|
||||
? items[0]!.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)
|
||||
: null,
|
||||
Device = items[0]!.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey) == true
|
||||
? items[0]!.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)
|
||||
Device = items[0]!.GetFieldValue<Machine>(DatItem.MachineKey)!.GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey) == true
|
||||
? items[0]!.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)
|
||||
: null,
|
||||
};
|
||||
|
||||
@@ -182,10 +182,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
Bad = true,
|
||||
};
|
||||
|
||||
if (!string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key)))
|
||||
row.MD5 = disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key);
|
||||
if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)))
|
||||
row.MD5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key);
|
||||
else
|
||||
row.SHA1 = disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key);
|
||||
row.SHA1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key);
|
||||
|
||||
return row;
|
||||
}
|
||||
@@ -196,10 +196,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
Name = disk.GetName(),
|
||||
};
|
||||
|
||||
if (!string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key)))
|
||||
row.MD5 = disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key);
|
||||
if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)))
|
||||
row.MD5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key);
|
||||
else
|
||||
row.SHA1 = disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key);
|
||||
row.SHA1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key);
|
||||
|
||||
return row;
|
||||
}
|
||||
@@ -215,7 +215,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
return new Models.Listrom.Row
|
||||
{
|
||||
Name = rom.GetName(),
|
||||
Size = rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
Size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString(),
|
||||
NoGoodDumpKnown = true,
|
||||
};
|
||||
}
|
||||
@@ -224,10 +224,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
return new Models.Listrom.Row
|
||||
{
|
||||
Name = rom.GetName(),
|
||||
Size = rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
Size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString(),
|
||||
Bad = true,
|
||||
CRC = rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
SHA1 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
CRC = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
SHA1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key),
|
||||
};
|
||||
}
|
||||
else
|
||||
@@ -235,9 +235,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
return new Models.Listrom.Row
|
||||
{
|
||||
Name = rom.GetName(),
|
||||
Size = rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
CRC = rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
SHA1 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
Size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString(),
|
||||
CRC = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
SHA1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,17 +50,17 @@ namespace SabreTools.DatFiles.Formats
|
||||
case BiosSet biosset:
|
||||
if (string.IsNullOrEmpty(biosset.GetName()))
|
||||
missingFields.Add(Models.Metadata.BiosSet.NameKey);
|
||||
if (string.IsNullOrEmpty(biosset.GetFieldValue<string?>(Models.Metadata.BiosSet.DescriptionKey)))
|
||||
if (string.IsNullOrEmpty(biosset.GetStringFieldValue(Models.Metadata.BiosSet.DescriptionKey)))
|
||||
missingFields.Add(Models.Metadata.BiosSet.DescriptionKey);
|
||||
break;
|
||||
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetName()))
|
||||
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||
if (rom.GetFieldValue<long?>(Models.Metadata.Rom.SizeKey) == null || NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) < 0)
|
||||
if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null || rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < 0)
|
||||
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||
}
|
||||
@@ -69,8 +69,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.GetName()))
|
||||
missingFields.Add(Models.Metadata.Disk.NameKey);
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||
}
|
||||
@@ -96,36 +96,36 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Display display:
|
||||
if (display.GetFieldValue<DisplayType>(Models.Metadata.Display.DisplayTypeKey) == DisplayType.NULL)
|
||||
missingFields.Add(Models.Metadata.Display.DisplayTypeKey);
|
||||
if (display.GetFieldValue<double?>(Models.Metadata.Display.RefreshKey) == null)
|
||||
if (display.GetDoubleFieldValue(Models.Metadata.Display.RefreshKey) == null)
|
||||
missingFields.Add(Models.Metadata.Display.RefreshKey);
|
||||
break;
|
||||
|
||||
case Sound sound:
|
||||
if (sound.GetFieldValue<long?>(Models.Metadata.Sound.ChannelsKey) == null)
|
||||
if (sound.GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey) == null)
|
||||
missingFields.Add(Models.Metadata.Sound.ChannelsKey);
|
||||
break;
|
||||
|
||||
case Input input:
|
||||
if (input.GetFieldValue<long?>(Models.Metadata.Input.PlayersKey) == null)
|
||||
if (input.GetInt64FieldValue(Models.Metadata.Input.PlayersKey) == null)
|
||||
missingFields.Add(Models.Metadata.Input.PlayersKey);
|
||||
break;
|
||||
|
||||
case DipSwitch dipswitch:
|
||||
if (string.IsNullOrEmpty(dipswitch.GetName()))
|
||||
missingFields.Add(Models.Metadata.DipSwitch.NameKey);
|
||||
if (string.IsNullOrEmpty(dipswitch.GetFieldValue<string?>(Models.Metadata.DipSwitch.TagKey)))
|
||||
if (string.IsNullOrEmpty(dipswitch.GetStringFieldValue(Models.Metadata.DipSwitch.TagKey)))
|
||||
missingFields.Add(Models.Metadata.DipSwitch.TagKey);
|
||||
break;
|
||||
|
||||
case Configuration configuration:
|
||||
if (string.IsNullOrEmpty(configuration.GetName()))
|
||||
missingFields.Add(Models.Metadata.Configuration.NameKey);
|
||||
if (string.IsNullOrEmpty(configuration.GetFieldValue<string>(Models.Metadata.Configuration.TagKey)))
|
||||
if (string.IsNullOrEmpty(configuration.GetStringFieldValue(Models.Metadata.Configuration.TagKey)))
|
||||
missingFields.Add(Models.Metadata.Configuration.TagKey);
|
||||
break;
|
||||
|
||||
case Port port:
|
||||
if (string.IsNullOrEmpty(port.GetFieldValue<string>(Models.Metadata.Port.TagKey)))
|
||||
if (string.IsNullOrEmpty(port.GetStringFieldValue(Models.Metadata.Port.TagKey)))
|
||||
missingFields.Add(Models.Metadata.Port.TagKey);
|
||||
break;
|
||||
|
||||
@@ -161,7 +161,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
break;
|
||||
|
||||
case DatItems.Formats.SoftwareList softwarelist:
|
||||
if (string.IsNullOrEmpty(softwarelist.GetFieldValue<string?>(Models.Metadata.SoftwareList.TagKey)))
|
||||
if (string.IsNullOrEmpty(softwarelist.GetStringFieldValue(Models.Metadata.SoftwareList.TagKey)))
|
||||
missingFields.Add(Models.Metadata.SoftwareList.TagKey);
|
||||
if (string.IsNullOrEmpty(softwarelist.GetName()))
|
||||
missingFields.Add(Models.Metadata.SoftwareList.NameKey);
|
||||
@@ -212,11 +212,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var datafile = new Models.Listxml.Mame
|
||||
{
|
||||
Build = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey)
|
||||
?? Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey)
|
||||
?? Header.GetFieldValue<string?>(Models.Metadata.Header.BuildKey),
|
||||
Debug = Header.GetFieldValue<bool?>(Models.Metadata.Header.DebugKey).FromYesNo(),
|
||||
MameConfig = Header.GetFieldValue<string?>(Models.Metadata.Header.MameConfigKey),
|
||||
Build = Header.GetStringFieldValue(Models.Metadata.Header.NameKey)
|
||||
?? Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)
|
||||
?? Header.GetStringFieldValue(Models.Metadata.Header.BuildKey),
|
||||
Debug = Header.GetBoolFieldValue(Models.Metadata.Header.DebugKey).FromYesNo(),
|
||||
MameConfig = Header.GetStringFieldValue(Models.Metadata.Header.MameConfigKey),
|
||||
|
||||
Game = CreateGames(ignoreblanks)
|
||||
};
|
||||
@@ -374,23 +374,23 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var game = new Models.Listxml.Machine
|
||||
{
|
||||
Name = machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
SourceFile = machine.GetFieldValue<string?>(Models.Metadata.Machine.SourceFileKey),
|
||||
Name = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
SourceFile = machine.GetStringFieldValue(Models.Metadata.Machine.SourceFileKey),
|
||||
Runnable = machine.GetFieldValue<Runnable>(Models.Metadata.Machine.RunnableKey).AsStringValue<Runnable>(),
|
||||
CloneOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
RomOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.RomOfKey),
|
||||
SampleOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.SampleOfKey),
|
||||
Description = machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Year = machine.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Manufacturer = machine.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey),
|
||||
History = machine.GetFieldValue<string?>(Models.Metadata.Machine.HistoryKey),
|
||||
CloneOf = machine.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey),
|
||||
RomOf = machine.GetStringFieldValue(Models.Metadata.Machine.RomOfKey),
|
||||
SampleOf = machine.GetStringFieldValue(Models.Metadata.Machine.SampleOfKey),
|
||||
Description = machine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey),
|
||||
Year = machine.GetStringFieldValue(Models.Metadata.Machine.YearKey),
|
||||
Manufacturer = machine.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey),
|
||||
History = machine.GetStringFieldValue(Models.Metadata.Machine.HistoryKey),
|
||||
};
|
||||
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsBiosKey) == true)
|
||||
if (machine.GetBoolFieldValue(Models.Metadata.Machine.IsBiosKey) == true)
|
||||
game.IsBios = "yes";
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey) == true)
|
||||
if (machine.GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey) == true)
|
||||
game.IsDevice = "yes";
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsMechanicalKey) == true)
|
||||
if (machine.GetBoolFieldValue(Models.Metadata.Machine.IsMechanicalKey) == true)
|
||||
game.IsMechanical = "yes";
|
||||
|
||||
return game;
|
||||
@@ -404,8 +404,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var biosset = new Models.Listxml.BiosSet
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Default = item.GetFieldValue<bool?>(Models.Metadata.BiosSet.DefaultKey).FromYesNo(),
|
||||
Description = item.GetFieldValue<string?>(Models.Metadata.BiosSet.DescriptionKey),
|
||||
Default = item.GetBoolFieldValue(Models.Metadata.BiosSet.DefaultKey).FromYesNo(),
|
||||
Description = item.GetStringFieldValue(Models.Metadata.BiosSet.DescriptionKey),
|
||||
};
|
||||
|
||||
return biosset;
|
||||
@@ -419,17 +419,17 @@ namespace SabreTools.DatFiles.Formats
|
||||
var rom = new Models.Listxml.Rom
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Bios = item.GetFieldValue<string?>(Models.Metadata.Rom.BiosKey),
|
||||
Size = item.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
CRC = item.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
Merge = item.GetFieldValue<string?>(Models.Metadata.Rom.MergeKey),
|
||||
Region = item.GetFieldValue<string?>(Models.Metadata.Rom.RegionKey),
|
||||
Offset = item.GetFieldValue<string?>(Models.Metadata.Rom.OffsetKey),
|
||||
Bios = item.GetStringFieldValue(Models.Metadata.Rom.BiosKey),
|
||||
Size = item.GetStringFieldValue(Models.Metadata.Rom.SizeKey),
|
||||
CRC = item.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Rom.SHA1Key),
|
||||
Merge = item.GetStringFieldValue(Models.Metadata.Rom.MergeKey),
|
||||
Region = item.GetStringFieldValue(Models.Metadata.Rom.RegionKey),
|
||||
Offset = item.GetStringFieldValue(Models.Metadata.Rom.OffsetKey),
|
||||
Status = item.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey).AsStringValue<ItemStatus>(useSecond: false),
|
||||
Optional = item.GetFieldValue<bool?>(Models.Metadata.Rom.OptionalKey).FromYesNo(),
|
||||
Dispose = item.GetFieldValue<bool?>(Models.Metadata.Rom.DisposeKey).FromYesNo(),
|
||||
SoundOnly = item.GetFieldValue<bool?>(Models.Metadata.Rom.SoundOnlyKey).FromYesNo(),
|
||||
Optional = item.GetBoolFieldValue(Models.Metadata.Rom.OptionalKey).FromYesNo(),
|
||||
Dispose = item.GetBoolFieldValue(Models.Metadata.Rom.DisposeKey).FromYesNo(),
|
||||
SoundOnly = item.GetBoolFieldValue(Models.Metadata.Rom.SoundOnlyKey).FromYesNo(),
|
||||
};
|
||||
|
||||
return rom;
|
||||
@@ -443,14 +443,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
var disk = new Models.Listxml.Disk
|
||||
{
|
||||
Name = item.GetName(),
|
||||
MD5 = item.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key),
|
||||
Merge = item.GetFieldValue<string?>(Models.Metadata.Disk.MergeKey),
|
||||
Region = item.GetFieldValue<string?>(Models.Metadata.Disk.RegionKey),
|
||||
Index = item.GetFieldValue<string?>(Models.Metadata.Disk.IndexKey),
|
||||
Writable = item.GetFieldValue<bool?>(Models.Metadata.Disk.WritableKey).FromYesNo(),
|
||||
MD5 = item.GetStringFieldValue(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Disk.SHA1Key),
|
||||
Merge = item.GetStringFieldValue(Models.Metadata.Disk.MergeKey),
|
||||
Region = item.GetStringFieldValue(Models.Metadata.Disk.RegionKey),
|
||||
Index = item.GetStringFieldValue(Models.Metadata.Disk.IndexKey),
|
||||
Writable = item.GetBoolFieldValue(Models.Metadata.Disk.WritableKey).FromYesNo(),
|
||||
Status = item.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey).AsStringValue<ItemStatus>(useSecond: false),
|
||||
Optional = item.GetFieldValue<bool?>(Models.Metadata.Disk.OptionalKey).FromYesNo(),
|
||||
Optional = item.GetBoolFieldValue(Models.Metadata.Disk.OptionalKey).FromYesNo(),
|
||||
};
|
||||
|
||||
return disk;
|
||||
@@ -490,10 +490,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var chip = new Models.Listxml.Chip
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Tag = item.GetFieldValue<string?>(Models.Metadata.Chip.TagKey),
|
||||
Tag = item.GetStringFieldValue(Models.Metadata.Chip.TagKey),
|
||||
Type = item.GetFieldValue<ChipType>(Models.Metadata.Chip.ChipTypeKey).AsStringValue<ChipType>(),
|
||||
SoundOnly = item.GetFieldValue<bool?>(Models.Metadata.Chip.SoundOnlyKey).FromYesNo(),
|
||||
Clock = item.GetFieldValue<long?>(Models.Metadata.Chip.TagKey)?.ToString(),
|
||||
SoundOnly = item.GetBoolFieldValue(Models.Metadata.Chip.SoundOnlyKey).FromYesNo(),
|
||||
Clock = item.GetInt64FieldValue(Models.Metadata.Chip.TagKey)?.ToString(),
|
||||
};
|
||||
|
||||
return chip;
|
||||
@@ -506,20 +506,20 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var display = new Models.Listxml.Display
|
||||
{
|
||||
Tag = item.GetFieldValue<string?>(Models.Metadata.Display.TagKey),
|
||||
Tag = item.GetStringFieldValue(Models.Metadata.Display.TagKey),
|
||||
Type = item.GetFieldValue<DisplayType>(Models.Metadata.Display.DisplayTypeKey).AsStringValue<DisplayType>(),
|
||||
Rotate = item.GetFieldValue<long?>(Models.Metadata.Display.RotateKey)?.ToString(),
|
||||
FlipX = item.GetFieldValue<bool?>(Models.Metadata.Display.FlipXKey).FromYesNo(),
|
||||
Width = item.GetFieldValue<string?>(Models.Metadata.Display.WidthKey)?.ToString(),
|
||||
Height = item.GetFieldValue<string?>(Models.Metadata.Display.HeightKey)?.ToString(),
|
||||
Refresh = item.GetFieldValue<double?>(Models.Metadata.Display.RefreshKey)?.ToString(),
|
||||
PixClock = item.GetFieldValue<string?>(Models.Metadata.Display.PixClockKey)?.ToString(),
|
||||
HTotal = item.GetFieldValue<string?>(Models.Metadata.Display.HTotalKey)?.ToString(),
|
||||
HBEnd = item.GetFieldValue<string?>(Models.Metadata.Display.HBEndKey)?.ToString(),
|
||||
HBStart = item.GetFieldValue<string?>(Models.Metadata.Display.HBStartKey)?.ToString(),
|
||||
VTotal = item.GetFieldValue<string?>(Models.Metadata.Display.VTotalKey)?.ToString(),
|
||||
VBEnd = item.GetFieldValue<string?>(Models.Metadata.Display.VBEndKey)?.ToString(),
|
||||
VBStart = item.GetFieldValue<string?>(Models.Metadata.Display.VBStartKey)?.ToString(),
|
||||
Rotate = item.GetInt64FieldValue(Models.Metadata.Display.RotateKey)?.ToString(),
|
||||
FlipX = item.GetBoolFieldValue(Models.Metadata.Display.FlipXKey).FromYesNo(),
|
||||
Width = item.GetStringFieldValue(Models.Metadata.Display.WidthKey)?.ToString(),
|
||||
Height = item.GetStringFieldValue(Models.Metadata.Display.HeightKey)?.ToString(),
|
||||
Refresh = item.GetDoubleFieldValue(Models.Metadata.Display.RefreshKey)?.ToString(),
|
||||
PixClock = item.GetStringFieldValue(Models.Metadata.Display.PixClockKey)?.ToString(),
|
||||
HTotal = item.GetStringFieldValue(Models.Metadata.Display.HTotalKey)?.ToString(),
|
||||
HBEnd = item.GetStringFieldValue(Models.Metadata.Display.HBEndKey)?.ToString(),
|
||||
HBStart = item.GetStringFieldValue(Models.Metadata.Display.HBStartKey)?.ToString(),
|
||||
VTotal = item.GetStringFieldValue(Models.Metadata.Display.VTotalKey)?.ToString(),
|
||||
VBEnd = item.GetStringFieldValue(Models.Metadata.Display.VBEndKey)?.ToString(),
|
||||
VBStart = item.GetStringFieldValue(Models.Metadata.Display.VBStartKey)?.ToString(),
|
||||
};
|
||||
|
||||
return display;
|
||||
@@ -532,7 +532,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var sound = new Models.Listxml.Sound
|
||||
{
|
||||
Channels = item.GetFieldValue<long?>(Models.Metadata.Sound.ChannelsKey)?.ToString(),
|
||||
Channels = item.GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey)?.ToString(),
|
||||
};
|
||||
|
||||
return sound;
|
||||
@@ -545,12 +545,12 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var input = new Models.Listxml.Input
|
||||
{
|
||||
Service = item.GetFieldValue<bool?>(Models.Metadata.Input.ServiceKey).FromYesNo(),
|
||||
Tilt = item.GetFieldValue<bool?>(Models.Metadata.Input.TiltKey).FromYesNo(),
|
||||
Players = item.GetFieldValue<long?>(Models.Metadata.Input.PlayersKey)?.ToString(),
|
||||
//ControlAttr = item.GetFieldValue<string?>(Models.Metadata.Input.ControlKey),
|
||||
Buttons = item.GetFieldValue<long?>(Models.Metadata.Input.ButtonsKey)?.ToString(),
|
||||
Coins = item.GetFieldValue<long?>(Models.Metadata.Input.CoinsKey)?.ToString(),
|
||||
Service = item.GetBoolFieldValue(Models.Metadata.Input.ServiceKey).FromYesNo(),
|
||||
Tilt = item.GetBoolFieldValue(Models.Metadata.Input.TiltKey).FromYesNo(),
|
||||
Players = item.GetInt64FieldValue(Models.Metadata.Input.PlayersKey)?.ToString(),
|
||||
//ControlAttr = item.GetStringFieldValue(Models.Metadata.Input.ControlKey),
|
||||
Buttons = item.GetInt64FieldValue(Models.Metadata.Input.ButtonsKey)?.ToString(),
|
||||
Coins = item.GetInt64FieldValue(Models.Metadata.Input.CoinsKey)?.ToString(),
|
||||
};
|
||||
|
||||
var controls = new List<Models.Listxml.Control>();
|
||||
@@ -574,17 +574,17 @@ namespace SabreTools.DatFiles.Formats
|
||||
var control = new Models.Listxml.Control
|
||||
{
|
||||
Type = item.GetFieldValue<ControlType>(Models.Metadata.Control.ControlTypeKey).AsStringValue<ControlType>(),
|
||||
Player = item.GetFieldValue<long?>(Models.Metadata.Control.PlayerKey)?.ToString(),
|
||||
Buttons = item.GetFieldValue<long?>(Models.Metadata.Control.ButtonsKey)?.ToString(),
|
||||
ReqButtons = item.GetFieldValue<long?>(Models.Metadata.Control.ReqButtonsKey)?.ToString(),
|
||||
Minimum = item.GetFieldValue<long?>(Models.Metadata.Control.MinimumKey)?.ToString(),
|
||||
Maximum = item.GetFieldValue<long?>(Models.Metadata.Control.MaximumKey)?.ToString(),
|
||||
Sensitivity = item.GetFieldValue<long?>(Models.Metadata.Control.SensitivityKey)?.ToString(),
|
||||
KeyDelta = item.GetFieldValue<long?>(Models.Metadata.Control.KeyDeltaKey)?.ToString(),
|
||||
Reverse = item.GetFieldValue<bool?>(Models.Metadata.Control.ReverseKey).FromYesNo(),
|
||||
Ways = item.GetFieldValue<string?>(Models.Metadata.Control.WaysKey),
|
||||
Ways2 = item.GetFieldValue<string?>(Models.Metadata.Control.Ways2Key),
|
||||
Ways3 = item.GetFieldValue<string?>(Models.Metadata.Control.Ways3Key),
|
||||
Player = item.GetInt64FieldValue(Models.Metadata.Control.PlayerKey)?.ToString(),
|
||||
Buttons = item.GetInt64FieldValue(Models.Metadata.Control.ButtonsKey)?.ToString(),
|
||||
ReqButtons = item.GetInt64FieldValue(Models.Metadata.Control.ReqButtonsKey)?.ToString(),
|
||||
Minimum = item.GetInt64FieldValue(Models.Metadata.Control.MinimumKey)?.ToString(),
|
||||
Maximum = item.GetInt64FieldValue(Models.Metadata.Control.MaximumKey)?.ToString(),
|
||||
Sensitivity = item.GetInt64FieldValue(Models.Metadata.Control.SensitivityKey)?.ToString(),
|
||||
KeyDelta = item.GetInt64FieldValue(Models.Metadata.Control.KeyDeltaKey)?.ToString(),
|
||||
Reverse = item.GetBoolFieldValue(Models.Metadata.Control.ReverseKey).FromYesNo(),
|
||||
Ways = item.GetStringFieldValue(Models.Metadata.Control.WaysKey),
|
||||
Ways2 = item.GetStringFieldValue(Models.Metadata.Control.Ways2Key),
|
||||
Ways3 = item.GetStringFieldValue(Models.Metadata.Control.Ways3Key),
|
||||
};
|
||||
|
||||
return control;
|
||||
@@ -598,8 +598,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var dipswitch = new Models.Listxml.DipSwitch
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Tag = item.GetFieldValue<string?>(Models.Metadata.DipSwitch.TagKey),
|
||||
Mask = item.GetFieldValue<string?>(Models.Metadata.DipSwitch.MaskKey),
|
||||
Tag = item.GetStringFieldValue(Models.Metadata.DipSwitch.TagKey),
|
||||
Mask = item.GetStringFieldValue(Models.Metadata.DipSwitch.MaskKey),
|
||||
};
|
||||
|
||||
if (item.ConditionsSpecified)
|
||||
@@ -607,10 +607,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var conditionItem = item.GetFieldValue<Condition[]?>(Models.Metadata.DipSwitch.ConditionKey)?.FirstOrDefault();
|
||||
var condition = new Models.Listxml.Condition
|
||||
{
|
||||
Tag = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.MaskKey),
|
||||
Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey),
|
||||
Relation = conditionItem?.GetFieldValue<Relation>(Models.Metadata.Condition.RelationKey).AsStringValue<Relation>(),
|
||||
Value = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.ValueKey),
|
||||
Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey),
|
||||
};
|
||||
dipswitch.Condition = condition;
|
||||
}
|
||||
@@ -646,8 +646,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var diplocation = new Models.Listxml.DipLocation
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Number = item.GetFieldValue<long?>(Models.Metadata.DipLocation.NumberKey)?.ToString(),
|
||||
Inverted = item.GetFieldValue<bool?>(Models.Metadata.DipLocation.InvertedKey).FromYesNo(),
|
||||
Number = item.GetInt64FieldValue(Models.Metadata.DipLocation.NumberKey)?.ToString(),
|
||||
Inverted = item.GetBoolFieldValue(Models.Metadata.DipLocation.InvertedKey).FromYesNo(),
|
||||
};
|
||||
|
||||
return diplocation;
|
||||
@@ -661,8 +661,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var dipvalue = new Models.Listxml.DipValue
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Value = item.GetFieldValue<string?>(Models.Metadata.DipValue.ValueKey),
|
||||
Default = item.GetFieldValue<bool?>(Models.Metadata.DipValue.DefaultKey).FromYesNo(),
|
||||
Value = item.GetStringFieldValue(Models.Metadata.DipValue.ValueKey),
|
||||
Default = item.GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey).FromYesNo(),
|
||||
};
|
||||
|
||||
if (item.ConditionsSpecified)
|
||||
@@ -670,10 +670,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var conditionItem = item.GetFieldValue<Condition[]?>(Models.Metadata.DipValue.ConditionKey)?.FirstOrDefault();
|
||||
var condition = new Models.Listxml.Condition
|
||||
{
|
||||
Tag = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.MaskKey),
|
||||
Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey),
|
||||
Relation = conditionItem?.GetFieldValue<Relation>(Models.Metadata.Condition.RelationKey).AsStringValue<Relation>(),
|
||||
Value = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.ValueKey),
|
||||
Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey),
|
||||
};
|
||||
dipvalue.Condition = condition;
|
||||
}
|
||||
@@ -689,8 +689,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var configuration = new Models.Listxml.Configuration
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Tag = item.GetFieldValue<string>(Models.Metadata.Configuration.TagKey),
|
||||
Mask = item.GetFieldValue<string>(Models.Metadata.Configuration.MaskKey),
|
||||
Tag = item.GetStringFieldValue(Models.Metadata.Configuration.TagKey),
|
||||
Mask = item.GetStringFieldValue(Models.Metadata.Configuration.MaskKey),
|
||||
};
|
||||
|
||||
if (item.ConditionsSpecified)
|
||||
@@ -698,10 +698,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var conditionItem = item.GetFieldValue<Condition[]?>(Models.Metadata.Configuration.ConditionKey)?.FirstOrDefault();
|
||||
var condition = new Models.Listxml.Condition
|
||||
{
|
||||
Tag = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.MaskKey),
|
||||
Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey),
|
||||
Relation = conditionItem?.GetFieldValue<Relation>(Models.Metadata.Condition.RelationKey).AsStringValue<Relation>(),
|
||||
Value = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.ValueKey),
|
||||
Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey),
|
||||
};
|
||||
configuration.Condition = condition;
|
||||
}
|
||||
@@ -737,8 +737,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var conflocation = new Models.Listxml.ConfLocation
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Number = item.GetFieldValue<long?>(Models.Metadata.ConfLocation.NumberKey)?.ToString(),
|
||||
Inverted = item.GetFieldValue<bool?>(Models.Metadata.ConfLocation.InvertedKey).FromYesNo(),
|
||||
Number = item.GetInt64FieldValue(Models.Metadata.ConfLocation.NumberKey)?.ToString(),
|
||||
Inverted = item.GetBoolFieldValue(Models.Metadata.ConfLocation.InvertedKey).FromYesNo(),
|
||||
};
|
||||
|
||||
return conflocation;
|
||||
@@ -752,8 +752,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var confsetting = new Models.Listxml.ConfSetting
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Value = item.GetFieldValue<string?>(Models.Metadata.ConfSetting.ValueKey),
|
||||
Default = item.GetFieldValue<bool?>(Models.Metadata.ConfSetting.DefaultKey).FromYesNo(),
|
||||
Value = item.GetStringFieldValue(Models.Metadata.ConfSetting.ValueKey),
|
||||
Default = item.GetBoolFieldValue(Models.Metadata.ConfSetting.DefaultKey).FromYesNo(),
|
||||
};
|
||||
|
||||
if (item.ConditionsSpecified)
|
||||
@@ -761,10 +761,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var conditionItem = item.GetFieldValue<Condition[]?>(Models.Metadata.ConfSetting.ConditionKey)?.FirstOrDefault();
|
||||
var condition = new Models.Listxml.Condition
|
||||
{
|
||||
Tag = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.MaskKey),
|
||||
Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey),
|
||||
Relation = conditionItem?.GetFieldValue<Relation>(Models.Metadata.Condition.RelationKey).AsStringValue<Relation>(),
|
||||
Value = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.ValueKey),
|
||||
Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey),
|
||||
};
|
||||
confsetting.Condition = condition;
|
||||
}
|
||||
@@ -779,7 +779,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var port = new Models.Listxml.Port
|
||||
{
|
||||
Tag = item.GetFieldValue<string>(Models.Metadata.Port.TagKey),
|
||||
Tag = item.GetStringFieldValue(Models.Metadata.Port.TagKey),
|
||||
};
|
||||
|
||||
return port;
|
||||
@@ -793,7 +793,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var adjuster = new Models.Listxml.Adjuster
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Default = item.GetFieldValue<bool?>(Models.Metadata.Adjuster.DefaultKey).FromYesNo(),
|
||||
Default = item.GetBoolFieldValue(Models.Metadata.Adjuster.DefaultKey).FromYesNo(),
|
||||
};
|
||||
|
||||
if (item.ConditionsSpecified)
|
||||
@@ -801,10 +801,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var conditionItem = item.GetFieldValue<Condition[]?>(Models.Metadata.Adjuster.ConditionKey)?.FirstOrDefault();
|
||||
var condition = new Models.Listxml.Condition
|
||||
{
|
||||
Tag = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.MaskKey),
|
||||
Tag = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.TagKey),
|
||||
Mask = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.MaskKey),
|
||||
Relation = conditionItem?.GetFieldValue<Relation>(Models.Metadata.Condition.RelationKey).AsStringValue<Relation>(),
|
||||
Value = conditionItem?.GetFieldValue<string?>(Models.Metadata.Condition.ValueKey),
|
||||
Value = conditionItem?.GetStringFieldValue(Models.Metadata.Condition.ValueKey),
|
||||
};
|
||||
adjuster.Condition = condition;
|
||||
}
|
||||
@@ -822,14 +822,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
Status = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.StatusKey).AsStringValue<SupportStatus>(),
|
||||
Color = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.ColorKey).AsStringValue<SupportStatus>(),
|
||||
Sound = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.SoundKey).AsStringValue<SupportStatus>(),
|
||||
PaletteSize = item.GetFieldValue<long?>(Models.Metadata.Driver.PaletteSizeKey)?.ToString(),
|
||||
PaletteSize = item.GetInt64FieldValue(Models.Metadata.Driver.PaletteSizeKey)?.ToString(),
|
||||
Emulation = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.EmulationKey).AsStringValue<SupportStatus>(),
|
||||
Cocktail = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.CocktailKey).AsStringValue<SupportStatus>(),
|
||||
SaveState = item.GetFieldValue<Supported>(Models.Metadata.Driver.SaveStateKey).AsStringValue<Supported>(useSecond: true),
|
||||
RequiresArtwork = item.GetFieldValue<bool?>(Models.Metadata.Driver.RequiresArtworkKey).FromYesNo(),
|
||||
Unofficial = item.GetFieldValue<bool?>(Models.Metadata.Driver.UnofficialKey).FromYesNo(),
|
||||
NoSoundHardware = item.GetFieldValue<bool?>(Models.Metadata.Driver.NoSoundHardwareKey).FromYesNo(),
|
||||
Incomplete = item.GetFieldValue<bool?>(Models.Metadata.Driver.IncompleteKey).FromYesNo(),
|
||||
RequiresArtwork = item.GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey).FromYesNo(),
|
||||
Unofficial = item.GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey).FromYesNo(),
|
||||
NoSoundHardware = item.GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey).FromYesNo(),
|
||||
Incomplete = item.GetBoolFieldValue(Models.Metadata.Driver.IncompleteKey).FromYesNo(),
|
||||
};
|
||||
|
||||
return driver;
|
||||
@@ -858,10 +858,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var device = new Models.Listxml.Device
|
||||
{
|
||||
Type = item.GetFieldValue<DeviceType>(Models.Metadata.Device.DeviceTypeKey).AsStringValue<DeviceType>(),
|
||||
Tag = item.GetFieldValue<string?>(Models.Metadata.Device.TagKey),
|
||||
FixedImage = item.GetFieldValue<string?>(Models.Metadata.Device.FixedImageKey),
|
||||
Mandatory = item.GetFieldValue<long?>(Models.Metadata.Device.MandatoryKey)?.ToString(),
|
||||
Interface = item.GetFieldValue<string?>(Models.Metadata.Device.InterfaceKey),
|
||||
Tag = item.GetStringFieldValue(Models.Metadata.Device.TagKey),
|
||||
FixedImage = item.GetStringFieldValue(Models.Metadata.Device.FixedImageKey),
|
||||
Mandatory = item.GetInt64FieldValue(Models.Metadata.Device.MandatoryKey)?.ToString(),
|
||||
Interface = item.GetStringFieldValue(Models.Metadata.Device.InterfaceKey),
|
||||
};
|
||||
|
||||
if (item.InstancesSpecified)
|
||||
@@ -870,7 +870,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var instance = new Models.Listxml.Instance
|
||||
{
|
||||
Name = instanceItem?.GetName(),
|
||||
BriefName = instanceItem?.GetFieldValue<string?>(Models.Metadata.Instance.BriefNameKey),
|
||||
BriefName = instanceItem?.GetStringFieldValue(Models.Metadata.Instance.BriefNameKey),
|
||||
};
|
||||
device.Instance = instance;
|
||||
}
|
||||
@@ -907,8 +907,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var slotoption = new Models.Listxml.SlotOption
|
||||
{
|
||||
Name = slotoptionItem.GetName(),
|
||||
DevName = slotoptionItem.GetFieldValue<string?>(Models.Metadata.SlotOption.DevNameKey),
|
||||
Default = slotoptionItem.GetFieldValue<bool?>(Models.Metadata.SlotOption.DefaultKey).FromYesNo(),
|
||||
DevName = slotoptionItem.GetStringFieldValue(Models.Metadata.SlotOption.DevNameKey),
|
||||
Default = slotoptionItem.GetBoolFieldValue(Models.Metadata.SlotOption.DefaultKey).FromYesNo(),
|
||||
};
|
||||
slotoptions.Add(slotoption);
|
||||
}
|
||||
@@ -926,10 +926,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var softwarelist = new Models.Listxml.SoftwareList
|
||||
{
|
||||
Tag = item.GetFieldValue<string?>(Models.Metadata.SoftwareList.TagKey),
|
||||
Tag = item.GetStringFieldValue(Models.Metadata.SoftwareList.TagKey),
|
||||
Name = item.GetName(),
|
||||
Status = item.GetFieldValue<SoftwareListStatus>(Models.Metadata.SoftwareList.StatusKey).AsStringValue<SoftwareListStatus>(),
|
||||
Filter = item.GetFieldValue<string?>(Models.Metadata.SoftwareList.FilterKey),
|
||||
Filter = item.GetStringFieldValue(Models.Metadata.SoftwareList.FilterKey),
|
||||
};
|
||||
|
||||
return softwarelist;
|
||||
@@ -943,8 +943,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var softwarelist = new Models.Listxml.RamOption
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Default = item.GetFieldValue<bool?>(Models.Metadata.RamOption.DefaultKey).FromYesNo(),
|
||||
Content = item.GetFieldValue<string?>(Models.Metadata.RamOption.ContentKey),
|
||||
Default = item.GetBoolFieldValue(Models.Metadata.RamOption.DefaultKey).FromYesNo(),
|
||||
Content = item.GetStringFieldValue(Models.Metadata.RamOption.ContentKey),
|
||||
};
|
||||
|
||||
return softwarelist;
|
||||
|
||||
@@ -37,29 +37,29 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Release release:
|
||||
if (string.IsNullOrEmpty(release.GetName()))
|
||||
missingFields.Add(Models.Metadata.Release.NameKey);
|
||||
if (string.IsNullOrEmpty(release.GetFieldValue<string?>(Models.Metadata.Release.RegionKey)))
|
||||
if (string.IsNullOrEmpty(release.GetStringFieldValue(Models.Metadata.Release.RegionKey)))
|
||||
missingFields.Add(Models.Metadata.Release.RegionKey);
|
||||
break;
|
||||
|
||||
case BiosSet biosset:
|
||||
if (string.IsNullOrEmpty(biosset.GetName()))
|
||||
missingFields.Add(Models.Metadata.BiosSet.NameKey);
|
||||
if (string.IsNullOrEmpty(biosset.GetFieldValue<string?>(Models.Metadata.BiosSet.DescriptionKey)))
|
||||
if (string.IsNullOrEmpty(biosset.GetStringFieldValue(Models.Metadata.BiosSet.DescriptionKey)))
|
||||
missingFields.Add(Models.Metadata.BiosSet.DescriptionKey);
|
||||
break;
|
||||
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetName()))
|
||||
missingFields.Add(Models.Metadata.Rom.NameKey);
|
||||
if (rom.GetFieldValue<long?>(Models.Metadata.Rom.SizeKey) == null || NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) < 0)
|
||||
if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null || rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < 0)
|
||||
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||
}
|
||||
@@ -68,8 +68,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.GetName()))
|
||||
missingFields.Add(Models.Metadata.Disk.NameKey);
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||
}
|
||||
@@ -78,10 +78,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
case Media media:
|
||||
if (string.IsNullOrEmpty(media.GetName()))
|
||||
missingFields.Add(Models.Metadata.Media.NameKey);
|
||||
if (string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.MD5Key))
|
||||
&& string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key))
|
||||
&& string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key))
|
||||
&& string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey)))
|
||||
if (string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.MD5Key))
|
||||
&& string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key))
|
||||
&& string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA256Key))
|
||||
&& string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Media.SHA1Key);
|
||||
}
|
||||
@@ -114,7 +114,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
break;
|
||||
|
||||
case DatItems.Formats.SoftwareList softwarelist:
|
||||
if (string.IsNullOrEmpty(softwarelist.GetFieldValue<string?>(Models.Metadata.SoftwareList.TagKey)))
|
||||
if (string.IsNullOrEmpty(softwarelist.GetStringFieldValue(Models.Metadata.SoftwareList.TagKey)))
|
||||
missingFields.Add(Models.Metadata.SoftwareList.TagKey);
|
||||
if (string.IsNullOrEmpty(softwarelist.GetName()))
|
||||
missingFields.Add(Models.Metadata.SoftwareList.NameKey);
|
||||
@@ -137,7 +137,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
// Only write the doctype if we don't have No-Intro data
|
||||
bool success;
|
||||
if (string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.IdKey)))
|
||||
if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.IdKey)))
|
||||
success = new Serialization.Files.Logiqx().SerializeToFileWithDocType(datafile, outfile);
|
||||
else
|
||||
success = new Serialization.Files.Logiqx().Serialize(datafile, outfile);
|
||||
@@ -168,14 +168,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var datafile = new Models.Logiqx.Datafile
|
||||
{
|
||||
Build = Header.GetFieldValue<string?>(Models.Metadata.Header.BuildKey),
|
||||
Debug = Header.GetFieldValue<bool?>(Models.Metadata.Header.DebugKey).FromYesNo(),
|
||||
Build = Header.GetStringFieldValue(Models.Metadata.Header.BuildKey),
|
||||
Debug = Header.GetBoolFieldValue(Models.Metadata.Header.DebugKey).FromYesNo(),
|
||||
|
||||
Header = CreateHeader(),
|
||||
Game = CreateGames(ignoreblanks)
|
||||
};
|
||||
|
||||
if (!string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.IdKey)))
|
||||
if (!string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.IdKey)))
|
||||
datafile.SchemaLocation = "https://datomatic.no-intro.org/stuff https://datomatic.no-intro.org/stuff/schema_nointro_datfile_v3.xsd";
|
||||
|
||||
return datafile;
|
||||
@@ -192,19 +192,19 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
var header = new Models.Logiqx.Header
|
||||
{
|
||||
Id = Header.GetFieldValue<string?>(Models.Metadata.Header.IdKey),
|
||||
Name = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey),
|
||||
RootDir = Header.GetFieldValue<string?>(Models.Metadata.Header.RootDirKey),
|
||||
Category = Header.GetFieldValue<string?>(Models.Metadata.Header.CategoryKey),
|
||||
Version = Header.GetFieldValue<string?>(Models.Metadata.Header.VersionKey),
|
||||
Date = Header.GetFieldValue<string?>(Models.Metadata.Header.DateKey),
|
||||
Author = Header.GetFieldValue<string?>(Models.Metadata.Header.AuthorKey),
|
||||
Email = Header.GetFieldValue<string?>(Models.Metadata.Header.EmailKey),
|
||||
Homepage = Header.GetFieldValue<string?>(Models.Metadata.Header.HomepageKey),
|
||||
Url = Header.GetFieldValue<string?>(Models.Metadata.Header.UrlKey),
|
||||
Comment = Header.GetFieldValue<string?>(Models.Metadata.Header.CommentKey),
|
||||
Type = Header.GetFieldValue<string?>(Models.Metadata.Header.TypeKey),
|
||||
Id = Header.GetStringFieldValue(Models.Metadata.Header.IdKey),
|
||||
Name = Header.GetStringFieldValue(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey),
|
||||
RootDir = Header.GetStringFieldValue(Models.Metadata.Header.RootDirKey),
|
||||
Category = Header.GetStringFieldValue(Models.Metadata.Header.CategoryKey),
|
||||
Version = Header.GetStringFieldValue(Models.Metadata.Header.VersionKey),
|
||||
Date = Header.GetStringFieldValue(Models.Metadata.Header.DateKey),
|
||||
Author = Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey),
|
||||
Email = Header.GetStringFieldValue(Models.Metadata.Header.EmailKey),
|
||||
Homepage = Header.GetStringFieldValue(Models.Metadata.Header.HomepageKey),
|
||||
Url = Header.GetStringFieldValue(Models.Metadata.Header.UrlKey),
|
||||
Comment = Header.GetStringFieldValue(Models.Metadata.Header.CommentKey),
|
||||
Type = Header.GetStringFieldValue(Models.Metadata.Header.TypeKey),
|
||||
|
||||
ClrMamePro = CreateClrMamePro(),
|
||||
RomCenter = CreateRomCenter(),
|
||||
@@ -222,14 +222,14 @@ namespace SabreTools.DatFiles.Formats
|
||||
if (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey) == MergingFlag.None
|
||||
&& Header.GetFieldValue<NodumpFlag>(Models.Metadata.Header.ForceNodumpKey) == NodumpFlag.None
|
||||
&& Header.GetFieldValue<PackingFlag>(Models.Metadata.Header.ForcePackingKey) == PackingFlag.None
|
||||
&& string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.HeaderKey)))
|
||||
&& string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.HeaderKey)))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var subheader = new Models.Logiqx.ClrMamePro
|
||||
{
|
||||
Header = Header.GetFieldValue<string?>(Models.Metadata.Header.HeaderKey),
|
||||
Header = Header.GetStringFieldValue(Models.Metadata.Header.HeaderKey),
|
||||
};
|
||||
|
||||
if (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey) != MergingFlag.None)
|
||||
@@ -248,11 +248,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
private Models.Logiqx.RomCenter? CreateRomCenter()
|
||||
{
|
||||
// If we don't have subheader values, we can't do anything
|
||||
if (string.IsNullOrEmpty(Header.GetFieldValue<string?>(Models.Metadata.Header.SystemKey))
|
||||
if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.SystemKey))
|
||||
&& Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.BiosModeKey) == MergingFlag.None
|
||||
&& Header.GetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey) == null
|
||||
&& Header.GetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey) == null
|
||||
&& Header.GetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey) == null
|
||||
&& Header.GetBoolFieldValue(Models.Metadata.Header.LockBiosModeKey) == null
|
||||
&& Header.GetBoolFieldValue(Models.Metadata.Header.LockRomModeKey) == null
|
||||
&& Header.GetBoolFieldValue(Models.Metadata.Header.LockSampleModeKey) == null
|
||||
&& Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.RomModeKey) == MergingFlag.None
|
||||
&& Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.SampleModeKey) == MergingFlag.None)
|
||||
{
|
||||
@@ -261,7 +261,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
var subheader = new Models.Logiqx.RomCenter
|
||||
{
|
||||
Plugin = Header.GetFieldValue<string?>(Models.Metadata.Header.PluginKey),
|
||||
Plugin = Header.GetStringFieldValue(Models.Metadata.Header.PluginKey),
|
||||
};
|
||||
|
||||
if (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.RomModeKey) != MergingFlag.None)
|
||||
@@ -271,12 +271,12 @@ namespace SabreTools.DatFiles.Formats
|
||||
if (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.SampleModeKey) != MergingFlag.None)
|
||||
subheader.SampleMode = Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.SampleModeKey).AsStringValue<MergingFlag>(useSecond: true);
|
||||
|
||||
if (Header.GetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey) != null)
|
||||
subheader.LockRomMode = Header.GetFieldValue<bool?>(Models.Metadata.Header.LockRomModeKey).FromYesNo();
|
||||
if (Header.GetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey) != null)
|
||||
subheader.LockBiosMode = Header.GetFieldValue<bool?>(Models.Metadata.Header.LockBiosModeKey).FromYesNo();
|
||||
if (Header.GetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey) != null)
|
||||
subheader.LockSampleMode = Header.GetFieldValue<bool?>(Models.Metadata.Header.LockSampleModeKey).FromYesNo();
|
||||
if (Header.GetBoolFieldValue(Models.Metadata.Header.LockRomModeKey) != null)
|
||||
subheader.LockRomMode = Header.GetBoolFieldValue(Models.Metadata.Header.LockRomModeKey).FromYesNo();
|
||||
if (Header.GetBoolFieldValue(Models.Metadata.Header.LockBiosModeKey) != null)
|
||||
subheader.LockBiosMode = Header.GetBoolFieldValue(Models.Metadata.Header.LockBiosModeKey).FromYesNo();
|
||||
if (Header.GetBoolFieldValue(Models.Metadata.Header.LockSampleModeKey) != null)
|
||||
subheader.LockSampleMode = Header.GetBoolFieldValue(Models.Metadata.Header.LockSampleModeKey).FromYesNo();
|
||||
|
||||
return subheader;
|
||||
}
|
||||
@@ -389,39 +389,39 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
Models.Logiqx.GameBase game = _deprecated ? new Models.Logiqx.Game() : new Models.Logiqx.Machine();
|
||||
|
||||
game.Name = machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey);
|
||||
game.SourceFile = machine.GetFieldValue<string?>(Models.Metadata.Machine.SourceFileKey);
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsBiosKey) == true)
|
||||
game.Name = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey);
|
||||
game.SourceFile = machine.GetStringFieldValue(Models.Metadata.Machine.SourceFileKey);
|
||||
if (machine.GetBoolFieldValue(Models.Metadata.Machine.IsBiosKey) == true)
|
||||
game.IsBios = "yes";
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsDeviceKey) == true)
|
||||
if (machine.GetBoolFieldValue(Models.Metadata.Machine.IsDeviceKey) == true)
|
||||
game.IsDevice = "yes";
|
||||
if (machine.GetFieldValue<bool?>(Models.Metadata.Machine.IsMechanicalKey) == true)
|
||||
if (machine.GetBoolFieldValue(Models.Metadata.Machine.IsMechanicalKey) == true)
|
||||
game.IsMechanical = "yes";
|
||||
game.CloneOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey);
|
||||
game.RomOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.RomOfKey);
|
||||
game.SampleOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.SampleOfKey);
|
||||
game.Board = machine.GetFieldValue<string?>(Models.Metadata.Machine.BoardKey);
|
||||
game.RebuildTo = machine.GetFieldValue<string?>(Models.Metadata.Machine.RebuildToKey);
|
||||
game.Id = machine.GetFieldValue<string?>(Models.Metadata.Machine.IdKey);
|
||||
game.CloneOfId = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfIdKey);
|
||||
game.CloneOf = machine.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey);
|
||||
game.RomOf = machine.GetStringFieldValue(Models.Metadata.Machine.RomOfKey);
|
||||
game.SampleOf = machine.GetStringFieldValue(Models.Metadata.Machine.SampleOfKey);
|
||||
game.Board = machine.GetStringFieldValue(Models.Metadata.Machine.BoardKey);
|
||||
game.RebuildTo = machine.GetStringFieldValue(Models.Metadata.Machine.RebuildToKey);
|
||||
game.Id = machine.GetStringFieldValue(Models.Metadata.Machine.IdKey);
|
||||
game.CloneOfId = machine.GetStringFieldValue(Models.Metadata.Machine.CloneOfIdKey);
|
||||
game.Runnable = machine.GetFieldValue<Runnable>(Models.Metadata.Machine.RunnableKey).AsStringValue<Runnable>();
|
||||
if (machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey) != null)
|
||||
if (machine.GetStringFieldValue(Models.Metadata.Machine.CommentKey) != null)
|
||||
{
|
||||
if (machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey)!.Contains(';'))
|
||||
game.Comment = machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey)!.Split(';');
|
||||
if (machine.GetStringFieldValue(Models.Metadata.Machine.CommentKey)!.Contains(';'))
|
||||
game.Comment = machine.GetStringFieldValue(Models.Metadata.Machine.CommentKey)!.Split(';');
|
||||
else
|
||||
game.Comment = [machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey)!];
|
||||
game.Comment = [machine.GetStringFieldValue(Models.Metadata.Machine.CommentKey)!];
|
||||
}
|
||||
game.Description = machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey);
|
||||
game.Year = machine.GetFieldValue<string?>(Models.Metadata.Machine.YearKey);
|
||||
game.Manufacturer = machine.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey);
|
||||
game.Publisher = machine.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey);
|
||||
if (machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey) != null)
|
||||
game.Description = machine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey);
|
||||
game.Year = machine.GetStringFieldValue(Models.Metadata.Machine.YearKey);
|
||||
game.Manufacturer = machine.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey);
|
||||
game.Publisher = machine.GetStringFieldValue(Models.Metadata.Machine.PublisherKey);
|
||||
if (machine.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) != null)
|
||||
{
|
||||
if (machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey)!.Contains(';'))
|
||||
game.Category = machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey)!.Split(';');
|
||||
if (machine.GetStringFieldValue(Models.Metadata.Machine.CategoryKey)!.Contains(';'))
|
||||
game.Category = machine.GetStringFieldValue(Models.Metadata.Machine.CategoryKey)!.Split(';');
|
||||
else
|
||||
game.Category = [machine.GetFieldValue<string?>(Models.Metadata.Machine.CategoryKey)!];
|
||||
game.Category = [machine.GetStringFieldValue(Models.Metadata.Machine.CategoryKey)!];
|
||||
}
|
||||
game.Trurip = CreateTrurip(machine);
|
||||
|
||||
@@ -450,18 +450,18 @@ namespace SabreTools.DatFiles.Formats
|
||||
var trurip = new Models.Logiqx.Trurip
|
||||
{
|
||||
TitleID = machine.TitleID,
|
||||
Publisher = machine.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey),
|
||||
Publisher = machine.GetStringFieldValue(Models.Metadata.Machine.PublisherKey),
|
||||
Developer = machine.Developer,
|
||||
Year = machine.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Year = machine.GetStringFieldValue(Models.Metadata.Machine.YearKey),
|
||||
Genre = machine.Genre,
|
||||
Subgenre = machine.Subgenre,
|
||||
Ratings = machine.Ratings,
|
||||
Score = machine.Score,
|
||||
Players = machine.GetFieldValue<string?>(Models.Metadata.Machine.PlayersKey),
|
||||
Players = machine.GetStringFieldValue(Models.Metadata.Machine.PlayersKey),
|
||||
Enabled = machine.Enabled,
|
||||
CRC = machine.Crc.FromYesNo(),
|
||||
Source = machine.GetFieldValue<string?>(Models.Metadata.Machine.SourceFileKey),
|
||||
CloneOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
Source = machine.GetStringFieldValue(Models.Metadata.Machine.SourceFileKey),
|
||||
CloneOf = machine.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey),
|
||||
RelatedTo = machine.RelatedTo,
|
||||
};
|
||||
|
||||
@@ -476,10 +476,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var release = new Models.Logiqx.Release
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Region = item.GetFieldValue<string?>(Models.Metadata.Release.RegionKey),
|
||||
Language = item.GetFieldValue<string?>(Models.Metadata.Release.LanguageKey),
|
||||
Date = item.GetFieldValue<string?>(Models.Metadata.Release.DateKey),
|
||||
Default = item.GetFieldValue<bool?>(Models.Metadata.Release.DefaultKey).FromYesNo(),
|
||||
Region = item.GetStringFieldValue(Models.Metadata.Release.RegionKey),
|
||||
Language = item.GetStringFieldValue(Models.Metadata.Release.LanguageKey),
|
||||
Date = item.GetStringFieldValue(Models.Metadata.Release.DateKey),
|
||||
Default = item.GetBoolFieldValue(Models.Metadata.Release.DefaultKey).FromYesNo(),
|
||||
};
|
||||
|
||||
return release;
|
||||
@@ -493,8 +493,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var biosset = new Models.Logiqx.BiosSet
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Default = item.GetFieldValue<bool?>(Models.Metadata.BiosSet.DefaultKey).FromYesNo(),
|
||||
Description = item.GetFieldValue<string?>(Models.Metadata.BiosSet.DescriptionKey),
|
||||
Default = item.GetBoolFieldValue(Models.Metadata.BiosSet.DefaultKey).FromYesNo(),
|
||||
Description = item.GetStringFieldValue(Models.Metadata.BiosSet.DescriptionKey),
|
||||
};
|
||||
|
||||
return biosset;
|
||||
@@ -508,22 +508,22 @@ namespace SabreTools.DatFiles.Formats
|
||||
var rom = new Models.Logiqx.Rom
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Size = item.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
CRC = item.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
MD5 = item.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
SHA256 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key),
|
||||
SHA384 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key),
|
||||
SHA512 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key),
|
||||
SpamSum = item.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey),
|
||||
xxHash364 = item.GetFieldValue<string?>(Models.Metadata.Rom.xxHash364Key),
|
||||
xxHash3128 = item.GetFieldValue<string?>(Models.Metadata.Rom.xxHash3128Key),
|
||||
Merge = item.GetFieldValue<string?>(Models.Metadata.Rom.MergeKey),
|
||||
Serial = item.GetFieldValue<string?>(Models.Metadata.Rom.SerialKey),
|
||||
Header = item.GetFieldValue<string?>(Models.Metadata.Rom.HeaderKey),
|
||||
Date = item.GetFieldValue<string?>(Models.Metadata.Rom.DateKey),
|
||||
Inverted = item.GetFieldValue<bool?>(Models.Metadata.Rom.InvertedKey).FromYesNo(),
|
||||
MIA = item.GetFieldValue<bool?>(Models.Metadata.Rom.MIAKey).FromYesNo(),
|
||||
Size = item.GetStringFieldValue(Models.Metadata.Rom.SizeKey),
|
||||
CRC = item.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
MD5 = item.GetStringFieldValue(Models.Metadata.Rom.MD5Key),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Rom.SHA1Key),
|
||||
SHA256 = item.GetStringFieldValue(Models.Metadata.Rom.SHA256Key),
|
||||
SHA384 = item.GetStringFieldValue(Models.Metadata.Rom.SHA384Key),
|
||||
SHA512 = item.GetStringFieldValue(Models.Metadata.Rom.SHA512Key),
|
||||
SpamSum = item.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey),
|
||||
xxHash364 = item.GetStringFieldValue(Models.Metadata.Rom.xxHash364Key),
|
||||
xxHash3128 = item.GetStringFieldValue(Models.Metadata.Rom.xxHash3128Key),
|
||||
Merge = item.GetStringFieldValue(Models.Metadata.Rom.MergeKey),
|
||||
Serial = item.GetStringFieldValue(Models.Metadata.Rom.SerialKey),
|
||||
Header = item.GetStringFieldValue(Models.Metadata.Rom.HeaderKey),
|
||||
Date = item.GetStringFieldValue(Models.Metadata.Rom.DateKey),
|
||||
Inverted = item.GetBoolFieldValue(Models.Metadata.Rom.InvertedKey).FromYesNo(),
|
||||
MIA = item.GetBoolFieldValue(Models.Metadata.Rom.MIAKey).FromYesNo(),
|
||||
};
|
||||
|
||||
if (item.ItemStatusSpecified)
|
||||
@@ -540,10 +540,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var disk = new Models.Logiqx.Disk
|
||||
{
|
||||
Name = item.GetName(),
|
||||
MD5 = item.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key),
|
||||
Merge = item.GetFieldValue<string?>(Models.Metadata.Disk.MergeKey),
|
||||
Region = item.GetFieldValue<string?>(Models.Metadata.Disk.RegionKey),
|
||||
MD5 = item.GetStringFieldValue(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Disk.SHA1Key),
|
||||
Merge = item.GetStringFieldValue(Models.Metadata.Disk.MergeKey),
|
||||
Region = item.GetStringFieldValue(Models.Metadata.Disk.RegionKey),
|
||||
};
|
||||
|
||||
if (item.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) != ItemStatus.NULL)
|
||||
@@ -560,10 +560,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var media = new Models.Logiqx.Media
|
||||
{
|
||||
Name = item.GetName(),
|
||||
MD5 = item.GetFieldValue<string?>(Models.Metadata.Media.MD5Key),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key),
|
||||
SHA256 = item.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key),
|
||||
SpamSum = item.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey),
|
||||
MD5 = item.GetStringFieldValue(Models.Metadata.Media.MD5Key),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Media.SHA1Key),
|
||||
SHA256 = item.GetStringFieldValue(Models.Metadata.Media.SHA256Key),
|
||||
SpamSum = item.GetStringFieldValue(Models.Metadata.Media.SpamSumKey),
|
||||
};
|
||||
return media;
|
||||
}
|
||||
@@ -615,10 +615,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
Emulation = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.EmulationKey).AsStringValue<SupportStatus>(),
|
||||
Cocktail = item.GetFieldValue<SupportStatus>(Models.Metadata.Driver.CocktailKey).AsStringValue<SupportStatus>(),
|
||||
SaveState = item.GetFieldValue<Supported>(Models.Metadata.Driver.SaveStateKey).AsStringValue<Supported>(useSecond: true),
|
||||
RequiresArtwork = item.GetFieldValue<bool?>(Models.Metadata.Driver.RequiresArtworkKey).FromYesNo(),
|
||||
Unofficial = item.GetFieldValue<bool?>(Models.Metadata.Driver.UnofficialKey).FromYesNo(),
|
||||
NoSoundHardware = item.GetFieldValue<bool?>(Models.Metadata.Driver.NoSoundHardwareKey).FromYesNo(),
|
||||
Incomplete = item.GetFieldValue<bool?>(Models.Metadata.Driver.IncompleteKey).FromYesNo(),
|
||||
RequiresArtwork = item.GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey).FromYesNo(),
|
||||
Unofficial = item.GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey).FromYesNo(),
|
||||
NoSoundHardware = item.GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey).FromYesNo(),
|
||||
Incomplete = item.GetBoolFieldValue(Models.Metadata.Driver.IncompleteKey).FromYesNo(),
|
||||
};
|
||||
|
||||
return driver;
|
||||
@@ -631,9 +631,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var softwarelist = new Models.Logiqx.SoftwareList
|
||||
{
|
||||
Tag = item.GetFieldValue<string?>(Models.Metadata.SoftwareList.TagKey),
|
||||
Tag = item.GetStringFieldValue(Models.Metadata.SoftwareList.TagKey),
|
||||
Name = item.GetName(),
|
||||
Filter = item.GetFieldValue<string?>(Models.Metadata.SoftwareList.FilterKey),
|
||||
Filter = item.GetStringFieldValue(Models.Metadata.SoftwareList.FilterKey),
|
||||
};
|
||||
|
||||
if (item.GetFieldValue<SoftwareListStatus?>(Models.Metadata.SoftwareList.StatusKey) != SoftwareListStatus.None)
|
||||
|
||||
@@ -59,11 +59,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
datItem = ProcessNullifiedItem(datItem);
|
||||
|
||||
// Write out the item if we're using machine names or we're not ignoring
|
||||
if (!Header.GetFieldValue<bool>(DatHeader.UseRomNameKey) || !ShouldIgnore(datItem, ignoreblanks))
|
||||
if (!Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true || !ShouldIgnore(datItem, ignoreblanks))
|
||||
WriteDatItem(sw, datItem, lastgame);
|
||||
|
||||
// Set the new data to compare against
|
||||
lastgame = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey);
|
||||
lastgame = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,10 +92,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
ProcessItemName(datItem, false, forceRomName: false);
|
||||
|
||||
// Romba mode automatically uses item name
|
||||
if (Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.IsActive == true || Header.GetFieldValue<bool>(DatHeader.UseRomNameKey))
|
||||
if (Header.GetFieldValue<DepotInformation?>(DatHeader.OutputDepotKey)?.IsActive == true || Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true)
|
||||
sw.Write($"{datItem.GetName() ?? string.Empty}\n");
|
||||
else if (!Header.GetFieldValue<bool>(DatHeader.UseRomNameKey) && datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) != lastgame)
|
||||
sw.Write($"{datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) ?? string.Empty}\n");
|
||||
else if (!Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true && datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) != lastgame)
|
||||
sw.Write($"{datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty}\n");
|
||||
|
||||
sw.Flush();
|
||||
}
|
||||
|
||||
@@ -34,9 +34,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (rom.GetFieldValue<long?>(Models.Metadata.Rom.SizeKey) == null || NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) < 0)
|
||||
if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null || rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < 0)
|
||||
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)))
|
||||
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||
break;
|
||||
}
|
||||
@@ -98,17 +98,17 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
var configuration = new Models.OfflineList.Configuration
|
||||
{
|
||||
DatName = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey),
|
||||
ImFolder = Header.GetFieldValue<string?>(Models.Metadata.Header.ImFolderKey),
|
||||
DatVersion = Header.GetFieldValue<string?>(Models.Metadata.Header.DatVersionKey),
|
||||
System = Header.GetFieldValue<string?>(Models.Metadata.Header.SystemKey),
|
||||
ScreenshotsWidth = Header.GetFieldValue<string?>(Models.Metadata.Header.ScreenshotsWidthKey),
|
||||
ScreenshotsHeight = Header.GetFieldValue<string?>(Models.Metadata.Header.ScreenshotsHeightKey),
|
||||
DatName = Header.GetStringFieldValue(Models.Metadata.Header.NameKey),
|
||||
ImFolder = Header.GetStringFieldValue(Models.Metadata.Header.ImFolderKey),
|
||||
DatVersion = Header.GetStringFieldValue(Models.Metadata.Header.DatVersionKey),
|
||||
System = Header.GetStringFieldValue(Models.Metadata.Header.SystemKey),
|
||||
ScreenshotsWidth = Header.GetStringFieldValue(Models.Metadata.Header.ScreenshotsWidthKey),
|
||||
ScreenshotsHeight = Header.GetStringFieldValue(Models.Metadata.Header.ScreenshotsHeightKey),
|
||||
Infos = CreateInfos(),
|
||||
CanOpen = CreateCanOpen(),
|
||||
NewDat = CreateNewDat(),
|
||||
Search = CreateSearch(),
|
||||
RomTitle = Header.GetFieldValue<string?>(Models.Metadata.Header.RomTitleKey),
|
||||
RomTitle = Header.GetStringFieldValue(Models.Metadata.Header.RomTitleKey),
|
||||
};
|
||||
|
||||
return configuration;
|
||||
@@ -256,12 +256,12 @@ namespace SabreTools.DatFiles.Formats
|
||||
private Models.OfflineList.CanOpen? CreateCanOpen()
|
||||
{
|
||||
// If we don't have a canopen, we can't do anything
|
||||
if (!Header.CanOpenSpecified || Header.GetFieldValue<string[]?>(Models.Metadata.Header.CanOpenKey) == null)
|
||||
if (!Header.CanOpenSpecified || Header.GetStringArrayFieldValue(Models.Metadata.Header.CanOpenKey) == null)
|
||||
return null;
|
||||
|
||||
var canOpen = new Models.OfflineList.CanOpen
|
||||
{
|
||||
Extension = [.. Header.GetFieldValue<string[]?>(Models.Metadata.Header.CanOpenKey)],
|
||||
Extension = [.. Header.GetStringArrayFieldValue(Models.Metadata.Header.CanOpenKey)],
|
||||
};
|
||||
|
||||
return canOpen;
|
||||
@@ -278,9 +278,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
|
||||
var newDat = new Models.OfflineList.NewDat
|
||||
{
|
||||
DatVersionUrl = Header.GetFieldValue<string?>("DATVERSIONURL"),
|
||||
DatVersionUrl = Header.GetStringFieldValue("DATVERSIONURL"),
|
||||
//DatUrl = Header.GetFieldValue<Models.OfflineList.DatUrl?>("DATURL"); // TODO: Add to internal model
|
||||
ImUrl = Header.GetFieldValue<string?>("IMURL"),
|
||||
ImUrl = Header.GetStringFieldValue("IMURL"),
|
||||
};
|
||||
|
||||
return newDat;
|
||||
@@ -364,18 +364,18 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var game = new Models.OfflineList.Game
|
||||
{
|
||||
ImageNumber = machine.GetFieldValue<string?>(Models.Metadata.Machine.ImageNumberKey),
|
||||
ReleaseNumber = machine.GetFieldValue<string?>(Models.Metadata.Machine.ReleaseNumberKey),
|
||||
Title = machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
SaveType = machine.GetFieldValue<string?>(Models.Metadata.Machine.SaveTypeKey),
|
||||
Publisher = machine.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey),
|
||||
Location = machine.GetFieldValue<string?>(Models.Metadata.Machine.LocationKey),
|
||||
SourceRom = machine.GetFieldValue<string?>(Models.Metadata.Machine.SourceRomKey),
|
||||
Language = machine.GetFieldValue<string?>(Models.Metadata.Machine.LanguageKey),
|
||||
Im1CRC = machine.GetFieldValue<string?>(Models.Metadata.Machine.Im1CRCKey),
|
||||
Im2CRC = machine.GetFieldValue<string?>(Models.Metadata.Machine.Im2CRCKey),
|
||||
Comment = machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey),
|
||||
DuplicateID = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
ImageNumber = machine.GetStringFieldValue(Models.Metadata.Machine.ImageNumberKey),
|
||||
ReleaseNumber = machine.GetStringFieldValue(Models.Metadata.Machine.ReleaseNumberKey),
|
||||
Title = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
SaveType = machine.GetStringFieldValue(Models.Metadata.Machine.SaveTypeKey),
|
||||
Publisher = machine.GetStringFieldValue(Models.Metadata.Machine.PublisherKey),
|
||||
Location = machine.GetStringFieldValue(Models.Metadata.Machine.LocationKey),
|
||||
SourceRom = machine.GetStringFieldValue(Models.Metadata.Machine.SourceRomKey),
|
||||
Language = machine.GetStringFieldValue(Models.Metadata.Machine.LanguageKey),
|
||||
Im1CRC = machine.GetStringFieldValue(Models.Metadata.Machine.Im1CRCKey),
|
||||
Im2CRC = machine.GetStringFieldValue(Models.Metadata.Machine.Im2CRCKey),
|
||||
Comment = machine.GetStringFieldValue(Models.Metadata.Machine.CommentKey),
|
||||
DuplicateID = machine.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey),
|
||||
};
|
||||
|
||||
return game;
|
||||
@@ -388,7 +388,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var romCRC = new Models.OfflineList.FileRomCRC
|
||||
{
|
||||
Content = item.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
Content = item.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
};
|
||||
|
||||
return romCRC;
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
|
||||
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||
break;
|
||||
}
|
||||
@@ -76,7 +76,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var softwaredb = new Models.OpenMSX.SoftwareDb
|
||||
{
|
||||
Timestamp = Header.GetFieldValue<string?>(Models.Metadata.Header.DateKey),
|
||||
Timestamp = Header.GetStringFieldValue(Models.Metadata.Header.DateKey),
|
||||
Software = CreateSoftwares(ignoreblanks)
|
||||
};
|
||||
return softwaredb;
|
||||
@@ -106,12 +106,12 @@ namespace SabreTools.DatFiles.Formats
|
||||
var machine = items[0].GetFieldValue<Machine>(DatItem.MachineKey);
|
||||
var software = new Models.OpenMSX.Software
|
||||
{
|
||||
Title = machine?.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GenMSXID = machine?.GetFieldValue<string?>(Models.Metadata.Machine.GenMSXIDKey),
|
||||
System = machine?.GetFieldValue<string?>(Models.Metadata.Machine.SystemKey),
|
||||
Company = machine?.GetFieldValue<string?>(Models.Metadata.Machine.ManufacturerKey),
|
||||
Year = machine?.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Country = machine?.GetFieldValue<string?>(Models.Metadata.Machine.CountryKey),
|
||||
Title = machine?.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
GenMSXID = machine?.GetStringFieldValue(Models.Metadata.Machine.GenMSXIDKey),
|
||||
System = machine?.GetStringFieldValue(Models.Metadata.Machine.SystemKey),
|
||||
Company = machine?.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey),
|
||||
Year = machine?.GetStringFieldValue(Models.Metadata.Machine.YearKey),
|
||||
Country = machine?.GetStringFieldValue(Models.Metadata.Machine.CountryKey),
|
||||
};
|
||||
|
||||
// Create holder for dumps
|
||||
@@ -165,10 +165,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
_ => new Models.OpenMSX.Rom(),
|
||||
};
|
||||
|
||||
rom.Start = item.GetFieldValue<string?>(Models.Metadata.Rom.OffsetKey);
|
||||
rom.Type = item.GetFieldValue<string?>(Models.Metadata.Rom.OpenMSXType);
|
||||
rom.Hash = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key);
|
||||
rom.Remark = item.GetFieldValue<string?>(Models.Metadata.Rom.RemarkKey);
|
||||
rom.Start = item.GetStringFieldValue(Models.Metadata.Rom.OffsetKey);
|
||||
rom.Type = item.GetStringFieldValue(Models.Metadata.Rom.OpenMSXType);
|
||||
rom.Hash = item.GetStringFieldValue(Models.Metadata.Rom.SHA1Key);
|
||||
rom.Remark = item.GetStringFieldValue(Models.Metadata.Rom.RemarkKey);
|
||||
|
||||
var dump = new Models.OpenMSX.Dump
|
||||
{
|
||||
|
||||
@@ -34,9 +34,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Rom rom:
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)))
|
||||
missingFields.Add(Models.Metadata.Rom.CRCKey);
|
||||
if (rom.GetFieldValue<long?>(Models.Metadata.Rom.SizeKey) == null || NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) < 0)
|
||||
if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null || rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < 0)
|
||||
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||
break;
|
||||
}
|
||||
@@ -93,13 +93,13 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var credits = new Models.RomCenter.Credits
|
||||
{
|
||||
Author = Header.GetFieldValue<string?>(Models.Metadata.Header.AuthorKey),
|
||||
Version = Header.GetFieldValue<string?>(Models.Metadata.Header.VersionKey),
|
||||
Email = Header.GetFieldValue<string?>(Models.Metadata.Header.EmailKey),
|
||||
Homepage = Header.GetFieldValue<string?>(Models.Metadata.Header.HomepageKey),
|
||||
Url = Header.GetFieldValue<string?>(Models.Metadata.Header.UrlKey),
|
||||
Date = Header.GetFieldValue<string?>(Models.Metadata.Header.DateKey),
|
||||
Comment = Header.GetFieldValue<string?>(Models.Metadata.Header.CommentKey),
|
||||
Author = Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey),
|
||||
Version = Header.GetStringFieldValue(Models.Metadata.Header.VersionKey),
|
||||
Email = Header.GetStringFieldValue(Models.Metadata.Header.EmailKey),
|
||||
Homepage = Header.GetStringFieldValue(Models.Metadata.Header.HomepageKey),
|
||||
Url = Header.GetStringFieldValue(Models.Metadata.Header.UrlKey),
|
||||
Date = Header.GetStringFieldValue(Models.Metadata.Header.DateKey),
|
||||
Comment = Header.GetStringFieldValue(Models.Metadata.Header.CommentKey),
|
||||
};
|
||||
return credits;
|
||||
}
|
||||
@@ -111,8 +111,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var dat = new Models.RomCenter.Dat
|
||||
{
|
||||
Version = Header.GetFieldValue<string?>(Models.Metadata.Header.DatVersionKey),
|
||||
Plugin = Header.GetFieldValue<string?>(Models.Metadata.Header.SystemKey),
|
||||
Version = Header.GetStringFieldValue(Models.Metadata.Header.DatVersionKey),
|
||||
Plugin = Header.GetStringFieldValue(Models.Metadata.Header.SystemKey),
|
||||
Split = (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey) == MergingFlag.Split ? "1" : "0"),
|
||||
Merge = (Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey) == MergingFlag.Merged || Header.GetFieldValue<MergingFlag>(Models.Metadata.Header.ForceMergingKey) == MergingFlag.FullMerged ? "1" : "0"),
|
||||
};
|
||||
@@ -126,8 +126,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var emulator = new Models.RomCenter.Emulator
|
||||
{
|
||||
RefName = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey),
|
||||
Version = Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey),
|
||||
RefName = Header.GetStringFieldValue(Models.Metadata.Header.NameKey),
|
||||
Version = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey),
|
||||
};
|
||||
return emulator;
|
||||
}
|
||||
@@ -184,15 +184,15 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var rom = new Models.RomCenter.Rom
|
||||
{
|
||||
ParentName = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
//ParentDescription = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfDescription), // TODO: Add to internal model or find mapping
|
||||
GameName = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
ParentName = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey),
|
||||
//ParentDescription = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.CloneOfDescription), // TODO: Add to internal model or find mapping
|
||||
GameName = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey),
|
||||
RomName = item.GetName(),
|
||||
RomCRC = item.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
RomSize = item.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
RomOf = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.RomOfKey),
|
||||
MergeName = item.GetFieldValue<string?>(Models.Metadata.Rom.MergeKey),
|
||||
RomCRC = item.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
RomSize = item.GetStringFieldValue(Models.Metadata.Rom.SizeKey),
|
||||
RomOf = item.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.RomOfKey),
|
||||
MergeName = item.GetStringFieldValue(Models.Metadata.Rom.MergeKey),
|
||||
};
|
||||
return rom;
|
||||
}
|
||||
|
||||
@@ -395,11 +395,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
DatItem datItem = datItems[index];
|
||||
|
||||
// If we have a different game and we're not at the start of the list, output the end of last item
|
||||
if (lastgame != null && lastgame.ToLowerInvariant() != datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
if (lastgame != null && lastgame.ToLowerInvariant() != datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
SabreJSON.WriteEndGame(jtw);
|
||||
|
||||
// If we have a new game, output the beginning of the new item
|
||||
if (lastgame == null || lastgame.ToLowerInvariant() != datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
if (lastgame == null || lastgame.ToLowerInvariant() != datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
SabreJSON.WriteStartGame(jtw, datItem);
|
||||
|
||||
// Check for a "null" item
|
||||
@@ -410,7 +410,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
WriteDatItem(jtw, datItem);
|
||||
|
||||
// Set the new data to compare against
|
||||
lastgame = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey);
|
||||
lastgame = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -457,8 +457,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
private static void WriteStartGame(JsonTextWriter jtw, DatItem datItem)
|
||||
{
|
||||
// No game should start with a path separator
|
||||
if (!string.IsNullOrEmpty(datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)))
|
||||
datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)!.TrimStart(Path.DirectorySeparatorChar));
|
||||
if (!string.IsNullOrEmpty(datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)))
|
||||
datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)!.TrimStart(Path.DirectorySeparatorChar));
|
||||
|
||||
// Build the state
|
||||
jtw.WriteStartObject();
|
||||
|
||||
@@ -227,11 +227,11 @@ namespace SabreTools.DatFiles.Formats
|
||||
DatItem datItem = datItems[index];
|
||||
|
||||
// If we have a different game and we're not at the start of the list, output the end of last item
|
||||
if (lastgame != null && lastgame.ToLowerInvariant() != datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
if (lastgame != null && lastgame.ToLowerInvariant() != datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
WriteEndGame(xtw);
|
||||
|
||||
// If we have a new game, output the beginning of the new item
|
||||
if (lastgame == null || lastgame.ToLowerInvariant() != datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
if (lastgame == null || lastgame.ToLowerInvariant() != datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)?.ToLowerInvariant())
|
||||
WriteStartGame(xtw, datItem);
|
||||
|
||||
// Check for a "null" item
|
||||
@@ -242,7 +242,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
WriteDatItem(xtw, datItem);
|
||||
|
||||
// Set the new data to compare against
|
||||
lastgame = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey);
|
||||
lastgame = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -292,7 +292,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
private static void WriteStartGame(XmlTextWriter xtw, DatItem datItem)
|
||||
{
|
||||
// No game should start with a path separator
|
||||
datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey)?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty);
|
||||
datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.SetFieldValue<string?>(Models.Metadata.Machine.NameKey, datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)?.TrimStart(Path.DirectorySeparatorChar) ?? string.Empty);
|
||||
|
||||
// Write the machine
|
||||
xtw.WriteStartElement("directory");
|
||||
|
||||
@@ -36,23 +36,23 @@ namespace SabreTools.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Disk.SHA1Key);
|
||||
}
|
||||
break;
|
||||
|
||||
case Rom rom:
|
||||
if (rom.GetFieldValue<long?>(Models.Metadata.Rom.SizeKey) == null || NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) < 0)
|
||||
if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null || rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) < 0)
|
||||
missingFields.Add(Models.Metadata.Rom.SizeKey);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key))
|
||||
&& string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key))
|
||||
&& string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)))
|
||||
{
|
||||
missingFields.Add(Models.Metadata.Rom.SHA1Key);
|
||||
}
|
||||
@@ -159,18 +159,18 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var row = new Models.SeparatedValue.Row
|
||||
{
|
||||
FileName = Header.GetFieldValue<string?>(DatHeader.FileNameKey),
|
||||
InternalName = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey),
|
||||
GameName = disk.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = disk.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
FileName = Header.GetStringFieldValue(DatHeader.FileNameKey),
|
||||
InternalName = Header.GetStringFieldValue(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey),
|
||||
GameName = disk.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = disk.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey),
|
||||
Type = disk.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey).AsStringValue<ItemType>(),
|
||||
RomName = string.Empty,
|
||||
DiskName = disk.GetName(),
|
||||
Size = string.Empty,
|
||||
CRC = string.Empty,
|
||||
MD5 = disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key),
|
||||
MD5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key),
|
||||
SHA256 = string.Empty,
|
||||
SHA384 = string.Empty,
|
||||
SHA512 = string.Empty,
|
||||
@@ -187,22 +187,22 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var row = new Models.SeparatedValue.Row
|
||||
{
|
||||
FileName = Header.GetFieldValue<string?>(DatHeader.FileNameKey),
|
||||
InternalName = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey),
|
||||
GameName = media.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = media.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
FileName = Header.GetStringFieldValue(DatHeader.FileNameKey),
|
||||
InternalName = Header.GetStringFieldValue(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey),
|
||||
GameName = media.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = media.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey),
|
||||
Type = media.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey).AsStringValue<ItemType>(),
|
||||
RomName = string.Empty,
|
||||
DiskName = media.GetName(),
|
||||
Size = string.Empty,
|
||||
CRC = string.Empty,
|
||||
MD5 = media.GetFieldValue<string?>(Models.Metadata.Media.MD5Key),
|
||||
SHA1 = media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key),
|
||||
SHA256 = media.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key),
|
||||
MD5 = media.GetStringFieldValue(Models.Metadata.Media.MD5Key),
|
||||
SHA1 = media.GetStringFieldValue(Models.Metadata.Media.SHA1Key),
|
||||
SHA256 = media.GetStringFieldValue(Models.Metadata.Media.SHA256Key),
|
||||
SHA384 = string.Empty,
|
||||
SHA512 = string.Empty,
|
||||
SpamSum = media.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey),
|
||||
SpamSum = media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey),
|
||||
Status = string.Empty,
|
||||
};
|
||||
return row;
|
||||
@@ -215,22 +215,22 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var row = new Models.SeparatedValue.Row
|
||||
{
|
||||
FileName = Header.GetFieldValue<string?>(DatHeader.FileNameKey),
|
||||
InternalName = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey),
|
||||
GameName = rom.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = rom.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
FileName = Header.GetStringFieldValue(DatHeader.FileNameKey),
|
||||
InternalName = Header.GetStringFieldValue(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey),
|
||||
GameName = rom.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
GameDescription = rom.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey),
|
||||
Type = rom.GetFieldValue<ItemType>(Models.Metadata.DatItem.TypeKey).AsStringValue<ItemType>(),
|
||||
RomName = rom.GetName(),
|
||||
DiskName = string.Empty,
|
||||
Size = rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
CRC = rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
MD5 = rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key),
|
||||
SHA1 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
SHA256 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key),
|
||||
SHA384 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key),
|
||||
SHA512 = rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key),
|
||||
SpamSum = rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey),
|
||||
Size = rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString(),
|
||||
CRC = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
MD5 = rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key),
|
||||
SHA1 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key),
|
||||
SHA256 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key),
|
||||
SHA384 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key),
|
||||
SHA512 = rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key),
|
||||
SpamSum = rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey),
|
||||
Status = rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey).AsStringValue<ItemStatus>(useSecond: false),
|
||||
};
|
||||
return row;
|
||||
|
||||
@@ -43,20 +43,20 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
if (string.IsNullOrEmpty(dipSwitch.GetFieldValue<Part?>(DipSwitch.PartKey)!.GetName()))
|
||||
missingFields.Add(Models.Metadata.Part.NameKey);
|
||||
if (string.IsNullOrEmpty(dipSwitch.GetFieldValue<Part?>(DipSwitch.PartKey)!.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey)))
|
||||
if (string.IsNullOrEmpty(dipSwitch.GetFieldValue<Part?>(DipSwitch.PartKey)!.GetStringFieldValue(Models.Metadata.Part.InterfaceKey)))
|
||||
missingFields.Add(Models.Metadata.Part.InterfaceKey);
|
||||
}
|
||||
if (string.IsNullOrEmpty(dipSwitch.GetName()))
|
||||
missingFields.Add(Models.Metadata.DipSwitch.NameKey);
|
||||
if (string.IsNullOrEmpty(dipSwitch.GetFieldValue<string?>(Models.Metadata.DipSwitch.TagKey)))
|
||||
if (string.IsNullOrEmpty(dipSwitch.GetStringFieldValue(Models.Metadata.DipSwitch.TagKey)))
|
||||
missingFields.Add(Models.Metadata.DipSwitch.TagKey);
|
||||
if (string.IsNullOrEmpty(dipSwitch.GetFieldValue<string?>(Models.Metadata.DipSwitch.MaskKey)))
|
||||
if (string.IsNullOrEmpty(dipSwitch.GetStringFieldValue(Models.Metadata.DipSwitch.MaskKey)))
|
||||
missingFields.Add(Models.Metadata.DipSwitch.MaskKey);
|
||||
if (dipSwitch.ValuesSpecified)
|
||||
{
|
||||
if (dipSwitch.GetFieldValue<DipValue[]?>(Models.Metadata.DipSwitch.DipValueKey)!.Any(dv => string.IsNullOrEmpty(dv.GetName())))
|
||||
missingFields.Add(Models.Metadata.DipValue.NameKey);
|
||||
if (dipSwitch.GetFieldValue<DipValue[]?>(Models.Metadata.DipSwitch.DipValueKey)!.Any(dv => string.IsNullOrEmpty(dv.GetFieldValue<string?>(Models.Metadata.DipValue.ValueKey))))
|
||||
if (dipSwitch.GetFieldValue<DipValue[]?>(Models.Metadata.DipSwitch.DipValueKey)!.Any(dv => string.IsNullOrEmpty(dv.GetStringFieldValue(Models.Metadata.DipValue.ValueKey))))
|
||||
missingFields.Add(Models.Metadata.DipValue.ValueKey);
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<Part?>(Disk.PartKey)!.GetName()))
|
||||
missingFields.Add(Models.Metadata.Part.NameKey);
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<Part?>(Disk.PartKey)!.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey)))
|
||||
if (string.IsNullOrEmpty(disk.GetFieldValue<Part?>(Disk.PartKey)!.GetStringFieldValue(Models.Metadata.Part.InterfaceKey)))
|
||||
missingFields.Add(Models.Metadata.Part.InterfaceKey);
|
||||
}
|
||||
if (!disk.DiskAreaSpecified)
|
||||
@@ -103,7 +103,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<Part?>(Rom.PartKey)!.GetName()))
|
||||
missingFields.Add(Models.Metadata.Part.NameKey);
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<Part?>(Rom.PartKey)!.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey)))
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<Part?>(Rom.PartKey)!.GetStringFieldValue(Models.Metadata.Part.InterfaceKey)))
|
||||
missingFields.Add(Models.Metadata.Part.InterfaceKey);
|
||||
}
|
||||
if (!rom.DataAreaSpecified)
|
||||
@@ -115,7 +115,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.GetFieldValue<DataArea?>(Rom.DataAreaKey)!.GetName()))
|
||||
missingFields.Add(Models.Metadata.DataArea.NameKey);
|
||||
if (rom.GetFieldValue<DataArea?>(Rom.DataAreaKey)!.GetFieldValue<long?>(Models.Metadata.DataArea.SizeKey) == null)
|
||||
if (rom.GetFieldValue<DataArea?>(Rom.DataAreaKey)!.GetInt64FieldValue(Models.Metadata.DataArea.SizeKey) == null)
|
||||
missingFields.Add(Models.Metadata.DataArea.SizeKey);
|
||||
}
|
||||
break;
|
||||
@@ -166,9 +166,9 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var softwarelist = new Models.SoftwareList.SoftwareList
|
||||
{
|
||||
Name = Header.GetFieldValue<string?>(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetFieldValue<string?>(Models.Metadata.Header.DescriptionKey),
|
||||
Notes = Header.GetFieldValue<string?>(Models.Metadata.Header.CommentKey),
|
||||
Name = Header.GetStringFieldValue(Models.Metadata.Header.NameKey),
|
||||
Description = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey),
|
||||
Notes = Header.GetStringFieldValue(Models.Metadata.Header.CommentKey),
|
||||
Software = CreateSoftware(ignoreblanks),
|
||||
};
|
||||
|
||||
@@ -259,13 +259,13 @@ namespace SabreTools.DatFiles.Formats
|
||||
{
|
||||
var software = new Models.SoftwareList.Software
|
||||
{
|
||||
Name = machine.GetFieldValue<string?>(Models.Metadata.Machine.NameKey),
|
||||
CloneOf = machine.GetFieldValue<string?>(Models.Metadata.Machine.CloneOfKey),
|
||||
Name = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey),
|
||||
CloneOf = machine.GetStringFieldValue(Models.Metadata.Machine.CloneOfKey),
|
||||
Supported = machine.GetFieldValue<Supported>(Models.Metadata.Machine.SupportedKey).AsStringValue<Supported>(useSecond: true),
|
||||
Description = machine.GetFieldValue<string?>(Models.Metadata.Machine.DescriptionKey),
|
||||
Year = machine.GetFieldValue<string?>(Models.Metadata.Machine.YearKey),
|
||||
Publisher = machine.GetFieldValue<string?>(Models.Metadata.Machine.PublisherKey),
|
||||
Notes = machine.GetFieldValue<string?>(Models.Metadata.Machine.CommentKey),
|
||||
Description = machine.GetStringFieldValue(Models.Metadata.Machine.DescriptionKey),
|
||||
Year = machine.GetStringFieldValue(Models.Metadata.Machine.YearKey),
|
||||
Publisher = machine.GetStringFieldValue(Models.Metadata.Machine.PublisherKey),
|
||||
Notes = machine.GetStringFieldValue(Models.Metadata.Machine.CommentKey),
|
||||
};
|
||||
|
||||
return software;
|
||||
@@ -279,7 +279,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var info = new Models.SoftwareList.Info
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Value = item.GetFieldValue<string?>(Models.Metadata.Info.ValueKey),
|
||||
Value = item.GetStringFieldValue(Models.Metadata.Info.ValueKey),
|
||||
};
|
||||
return info;
|
||||
}
|
||||
@@ -292,7 +292,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var sharedfeat = new Models.SoftwareList.SharedFeat
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Value = item.GetFieldValue<string?>(Models.Metadata.SharedFeat.ValueKey),
|
||||
Value = item.GetStringFieldValue(Models.Metadata.SharedFeat.ValueKey),
|
||||
};
|
||||
return sharedfeat;
|
||||
}
|
||||
@@ -305,7 +305,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var part = new Models.SoftwareList.Part
|
||||
{
|
||||
Name = item.GetFieldValue<Part?>(Rom.PartKey)?.GetName(),
|
||||
Interface = item.GetFieldValue<Part?>(Rom.PartKey)?.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey),
|
||||
Interface = item.GetFieldValue<Part?>(Rom.PartKey)?.GetStringFieldValue(Models.Metadata.Part.InterfaceKey),
|
||||
Feature = CreateFeatures(item.GetFieldValue<Part?>(Rom.PartKey)?.GetFieldValue<PartFeature[]?>(Models.Metadata.Part.FeatureKey)),
|
||||
DataArea = CreateDataAreas(item),
|
||||
DiskArea = null,
|
||||
@@ -322,7 +322,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var part = new Models.SoftwareList.Part
|
||||
{
|
||||
Name = item.GetFieldValue<Part?>(Disk.PartKey)?.GetName(),
|
||||
Interface = item.GetFieldValue<Part?>(Disk.PartKey)?.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey),
|
||||
Interface = item.GetFieldValue<Part?>(Disk.PartKey)?.GetStringFieldValue(Models.Metadata.Part.InterfaceKey),
|
||||
Feature = CreateFeatures(item.GetFieldValue<Part?>(Disk.PartKey)?.GetFieldValue<PartFeature[]?>(Models.Metadata.Part.FeatureKey)),
|
||||
DataArea = null,
|
||||
DiskArea = CreateDiskAreas(item),
|
||||
@@ -339,7 +339,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var part = new Models.SoftwareList.Part
|
||||
{
|
||||
Name = item.GetFieldValue<Part?>(DipSwitch.PartKey)?.GetName(),
|
||||
Interface = item.GetFieldValue<Part?>(DipSwitch.PartKey)?.GetFieldValue<string?>(Models.Metadata.Part.InterfaceKey),
|
||||
Interface = item.GetFieldValue<Part?>(DipSwitch.PartKey)?.GetStringFieldValue(Models.Metadata.Part.InterfaceKey),
|
||||
Feature = CreateFeatures(item.GetFieldValue<Part?>(DipSwitch.PartKey)?.GetFieldValue<PartFeature[]?>(Models.Metadata.Part.FeatureKey)),
|
||||
DataArea = null,
|
||||
DiskArea = null,
|
||||
@@ -363,7 +363,7 @@ namespace SabreTools.DatFiles.Formats
|
||||
var feature = new Models.SoftwareList.Feature
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Value = item.GetFieldValue<string?>(Models.Metadata.Feature.ValueKey),
|
||||
Value = item.GetStringFieldValue(Models.Metadata.Feature.ValueKey),
|
||||
};
|
||||
features.Add(feature);
|
||||
}
|
||||
@@ -379,8 +379,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var dataArea = new Models.SoftwareList.DataArea
|
||||
{
|
||||
Name = item.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.GetName(),
|
||||
Size = item.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.GetFieldValue<long?>(Models.Metadata.DataArea.SizeKey)?.ToString(),
|
||||
Width = item.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.GetFieldValue<long?>(Models.Metadata.DataArea.WidthKey)?.ToString(),
|
||||
Size = item.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.GetInt64FieldValue(Models.Metadata.DataArea.SizeKey)?.ToString(),
|
||||
Width = item.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.GetInt64FieldValue(Models.Metadata.DataArea.WidthKey)?.ToString(),
|
||||
Endianness = item.GetFieldValue<DataArea?>(Rom.DataAreaKey)?.GetFieldValue<Endianness>(Models.Metadata.DataArea.EndiannessKey).AsStringValue<Endianness>(),
|
||||
Rom = CreateRom(item),
|
||||
};
|
||||
@@ -395,12 +395,12 @@ namespace SabreTools.DatFiles.Formats
|
||||
var rom = new Models.SoftwareList.Rom
|
||||
{
|
||||
Name = item.GetName(),
|
||||
Size = item.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey),
|
||||
Size = item.GetStringFieldValue(Models.Metadata.Rom.SizeKey),
|
||||
Length = null,
|
||||
CRC = item.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key),
|
||||
Offset = item.GetFieldValue<string?>(Models.Metadata.Rom.OffsetKey),
|
||||
Value = item.GetFieldValue<string?>(Models.Metadata.Rom.ValueKey),
|
||||
CRC = item.GetStringFieldValue(Models.Metadata.Rom.CRCKey),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Rom.SHA1Key),
|
||||
Offset = item.GetStringFieldValue(Models.Metadata.Rom.OffsetKey),
|
||||
Value = item.GetStringFieldValue(Models.Metadata.Rom.ValueKey),
|
||||
Status = item.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey).AsStringValue<ItemStatus>(useSecond: false),
|
||||
LoadFlag = item.GetFieldValue<LoadFlag>(Models.Metadata.Rom.LoadFlagKey).AsStringValue<LoadFlag>(),
|
||||
};
|
||||
@@ -427,10 +427,10 @@ namespace SabreTools.DatFiles.Formats
|
||||
var disk = new Models.SoftwareList.Disk
|
||||
{
|
||||
Name = item.GetName(),
|
||||
MD5 = item.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key),
|
||||
MD5 = item.GetStringFieldValue(Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.GetStringFieldValue(Models.Metadata.Disk.SHA1Key),
|
||||
Status = item.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey).AsStringValue<ItemStatus>(useSecond: false),
|
||||
Writeable = item.GetFieldValue<bool?>(Models.Metadata.Disk.WritableKey)?.ToString(),
|
||||
Writeable = item.GetBoolFieldValue(Models.Metadata.Disk.WritableKey)?.ToString(),
|
||||
};
|
||||
return [disk];
|
||||
}
|
||||
@@ -446,8 +446,8 @@ namespace SabreTools.DatFiles.Formats
|
||||
var dipValue = new Models.SoftwareList.DipValue
|
||||
{
|
||||
Name = setting.GetName(),
|
||||
Value = setting.GetFieldValue<string?>(Models.Metadata.DipValue.ValueKey),
|
||||
Default = setting.GetFieldValue<bool?>(Models.Metadata.DipValue.DefaultKey).FromYesNo(),
|
||||
Value = setting.GetStringFieldValue(Models.Metadata.DipValue.ValueKey),
|
||||
Default = setting.GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey).FromYesNo(),
|
||||
};
|
||||
|
||||
dipValues.Add(dipValue);
|
||||
|
||||
@@ -220,7 +220,7 @@ namespace SabreTools.DatFiles
|
||||
TotalCount++;
|
||||
|
||||
// Increment removal count
|
||||
if (item.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||
if (item.GetBoolFieldValue(DatItem.RemoveKey) == true)
|
||||
RemovedCount++;
|
||||
|
||||
// Increment the item count for the type
|
||||
@@ -232,8 +232,8 @@ namespace SabreTools.DatFiles
|
||||
case Disk disk:
|
||||
if (disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) != ItemStatus.Nodump)
|
||||
{
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
}
|
||||
|
||||
AddStatusCount(ItemStatus.BadDump, disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) == ItemStatus.BadDump ? 1 : 0);
|
||||
@@ -242,22 +242,22 @@ namespace SabreTools.DatFiles
|
||||
AddStatusCount(ItemStatus.Verified, disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) == ItemStatus.Verified ? 1 : 0);
|
||||
break;
|
||||
case Media media:
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA256Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
|
||||
break;
|
||||
case Rom rom:
|
||||
if (rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey) != ItemStatus.Nodump)
|
||||
{
|
||||
TotalSize += NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) ?? 0;
|
||||
AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey)) ? 0 : 1);
|
||||
TotalSize += rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) ?? 0;
|
||||
AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)) ? 0 : 1);
|
||||
}
|
||||
|
||||
AddStatusCount(ItemStatus.BadDump, rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey) == ItemStatus.BadDump ? 1 : 0);
|
||||
@@ -400,7 +400,7 @@ namespace SabreTools.DatFiles
|
||||
|
||||
// Filter the list
|
||||
return fi.Where(i => i != null)
|
||||
.Where(i => i.GetFieldValue<bool?>(DatItem.RemoveKey) != true)
|
||||
.Where(i => i.GetBoolFieldValue(DatItem.RemoveKey) != true)
|
||||
.Where(i => i.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
.ToConcurrentList();
|
||||
}
|
||||
@@ -501,7 +501,7 @@ namespace SabreTools.DatFiles
|
||||
TotalCount--;
|
||||
|
||||
// Decrement removal count
|
||||
if (item.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||
if (item.GetBoolFieldValue(DatItem.RemoveKey) == true)
|
||||
RemovedCount--;
|
||||
|
||||
// Decrement the item count for the type
|
||||
@@ -513,8 +513,8 @@ namespace SabreTools.DatFiles
|
||||
case Disk disk:
|
||||
if (disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) != ItemStatus.Nodump)
|
||||
{
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
}
|
||||
|
||||
RemoveStatusCount(ItemStatus.BadDump, disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) == ItemStatus.BadDump ? 1 : 0);
|
||||
@@ -523,22 +523,22 @@ namespace SabreTools.DatFiles
|
||||
RemoveStatusCount(ItemStatus.Verified, disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) == ItemStatus.Verified ? 1 : 0);
|
||||
break;
|
||||
case Media media:
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA256Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
|
||||
break;
|
||||
case Rom rom:
|
||||
if (rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey) != ItemStatus.Nodump)
|
||||
{
|
||||
TotalSize -= NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) ?? 0;
|
||||
RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey)) ? 0 : 1);
|
||||
TotalSize -= rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) ?? 0;
|
||||
RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)) ? 0 : 1);
|
||||
}
|
||||
|
||||
RemoveStatusCount(ItemStatus.BadDump, rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey) == ItemStatus.BadDump ? 1 : 0);
|
||||
@@ -908,7 +908,7 @@ namespace SabreTools.DatFiles
|
||||
foreach (string key in keys)
|
||||
{
|
||||
ConcurrentList<DatItem>? oldItemList = items[key];
|
||||
ConcurrentList<DatItem>? newItemList = oldItemList?.Where(i => i.GetFieldValue<bool>(DatItem.RemoveKey) != true)?.ToConcurrentList();
|
||||
ConcurrentList<DatItem>? newItemList = oldItemList?.Where(i => i.GetBoolFieldValue(DatItem.RemoveKey) != true)?.ToConcurrentList();
|
||||
|
||||
Remove(key);
|
||||
AddRange(key, newItemList);
|
||||
@@ -945,7 +945,7 @@ namespace SabreTools.DatFiles
|
||||
for (int i = 0; i < roms.Count; i++)
|
||||
{
|
||||
DatItem other = roms[i];
|
||||
if (other.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||
if (other.GetBoolFieldValue(DatItem.RemoveKey) == true)
|
||||
continue;
|
||||
|
||||
if (datItem.Equals(other))
|
||||
|
||||
@@ -337,7 +337,7 @@ namespace SabreTools.DatFiles
|
||||
TotalCount++;
|
||||
|
||||
// Increment removal count
|
||||
if (item.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||
if (item.GetBoolFieldValue(DatItem.RemoveKey) == true)
|
||||
RemovedCount++;
|
||||
|
||||
// Increment the item count for the type
|
||||
@@ -349,8 +349,8 @@ namespace SabreTools.DatFiles
|
||||
case Disk disk:
|
||||
if (disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) != ItemStatus.Nodump)
|
||||
{
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
}
|
||||
|
||||
AddStatusCount(ItemStatus.BadDump, disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) == ItemStatus.BadDump ? 1 : 0);
|
||||
@@ -359,22 +359,22 @@ namespace SabreTools.DatFiles
|
||||
AddStatusCount(ItemStatus.Verified, disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) == ItemStatus.Verified ? 1 : 0);
|
||||
break;
|
||||
case Media media:
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA256Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
|
||||
break;
|
||||
case Rom rom:
|
||||
if (rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey) != ItemStatus.Nodump)
|
||||
{
|
||||
TotalSize += NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) ?? 0;
|
||||
AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey)) ? 0 : 1);
|
||||
TotalSize += rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) ?? 0;
|
||||
AddHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)) ? 0 : 1);
|
||||
}
|
||||
|
||||
AddStatusCount(ItemStatus.BadDump, rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey) == ItemStatus.BadDump ? 1 : 0);
|
||||
@@ -531,8 +531,8 @@ namespace SabreTools.DatFiles
|
||||
|
||||
// Filter the list
|
||||
return fi.Where(i => i != null)
|
||||
.Where(i => i.GetFieldValue<bool?>(DatItem.RemoveKey) != true)
|
||||
.Where(i => i.GetFieldValue<Machine>(DatItem.MachineKey)!.GetFieldValue<string?>(Models.Metadata.Machine.NameKey) != null)
|
||||
.Where(i => i.GetBoolFieldValue(DatItem.RemoveKey) != true)
|
||||
.Where(i => i.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) != null)
|
||||
.ToConcurrentList();
|
||||
}
|
||||
}
|
||||
@@ -645,7 +645,7 @@ namespace SabreTools.DatFiles
|
||||
TotalCount--;
|
||||
|
||||
// Decrement removal count
|
||||
if (item.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||
if (item.GetBoolFieldValue(DatItem.RemoveKey) == true)
|
||||
RemovedCount--;
|
||||
|
||||
// Decrement the item count for the type
|
||||
@@ -657,8 +657,8 @@ namespace SabreTools.DatFiles
|
||||
case Disk disk:
|
||||
if (disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) != ItemStatus.Nodump)
|
||||
{
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.GetFieldValue<string?>(Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
}
|
||||
|
||||
RemoveStatusCount(ItemStatus.BadDump, disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) == ItemStatus.BadDump ? 1 : 0);
|
||||
@@ -667,22 +667,22 @@ namespace SabreTools.DatFiles
|
||||
RemoveStatusCount(ItemStatus.Verified, disk.GetFieldValue<ItemStatus>(Models.Metadata.Disk.StatusKey) == ItemStatus.Verified ? 1 : 0);
|
||||
break;
|
||||
case Media media:
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SHA256Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.GetFieldValue<string?>(Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA256Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
|
||||
break;
|
||||
case Rom rom:
|
||||
if (rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey) != ItemStatus.Nodump)
|
||||
{
|
||||
TotalSize -= NumberHelper.ConvertToInt64(rom.GetFieldValue<string?>(Models.Metadata.Rom.SizeKey)) ?? 0;
|
||||
RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA384Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SHA512Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.GetFieldValue<string?>(Models.Metadata.Rom.SpamSumKey)) ? 0 : 1);
|
||||
TotalSize -= rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) ?? 0;
|
||||
RemoveHashCount(HashType.CRC32, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA384, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA512, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)) ? 0 : 1);
|
||||
}
|
||||
|
||||
RemoveStatusCount(ItemStatus.BadDump, rom.GetFieldValue<ItemStatus>(Models.Metadata.Rom.StatusKey) == ItemStatus.BadDump ? 1 : 0);
|
||||
@@ -1080,7 +1080,7 @@ CREATE TABLE IF NOT EXISTS groups (
|
||||
foreach (string key in keys)
|
||||
{
|
||||
ConcurrentList<DatItem>? oldItemList = this[key];
|
||||
ConcurrentList<DatItem>? newItemList = oldItemList?.Where(i => i.GetFieldValue<bool>(DatItem.RemoveKey) != true)?.ToConcurrentList();
|
||||
ConcurrentList<DatItem>? newItemList = oldItemList?.Where(i => i.GetBoolFieldValue(DatItem.RemoveKey) != true)?.ToConcurrentList();
|
||||
|
||||
Remove(key);
|
||||
AddRange(key, newItemList);
|
||||
@@ -1114,7 +1114,7 @@ CREATE TABLE IF NOT EXISTS groups (
|
||||
for (int i = 0; i < roms.Count; i++)
|
||||
{
|
||||
DatItem other = roms[i];
|
||||
if (other.GetFieldValue<bool?>(DatItem.RemoveKey) == true)
|
||||
if (other.GetBoolFieldValue(DatItem.RemoveKey) == true)
|
||||
continue;
|
||||
|
||||
if (datItem.Equals(other))
|
||||
|
||||
Reference in New Issue
Block a user