Create and use more passthrough methods

This commit is contained in:
Matt Nadareski
2024-03-11 15:46:44 -04:00
parent c7b1ce5233
commit eb9075e47e
54 changed files with 1473 additions and 1247 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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),
};
}
}

View File

@@ -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;

View File

@@ -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)

View File

@@ -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();
}

View File

@@ -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;

View File

@@ -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
{

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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");

View File

@@ -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;

View File

@@ -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);