diff --git a/README.MD b/README.MD index b5edf963..5bdad96b 100644 --- a/README.MD +++ b/README.MD @@ -8,7 +8,7 @@ Find the link to the Nuget package [here](https://www.nuget.org/packages/SabreTo ## Releases -For the most recent stable build, download the latest release where: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases) +For the most recent stable build, download the latest release here: [Releases Page](https://github.com/SabreTools/SabreTools.Serialization/releases) For the latest WIP build here: [Rolling Release](https://github.com/SabreTools/SabreTools.Serialization/releases/tag/rolling) diff --git a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs index 22501218..f4bc8b55 100644 --- a/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs +++ b/SabreTools.Data.Extensions.Test/MetadataExtensionsTests.cs @@ -23,12 +23,12 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(5, actual.Count); + Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Null(actual.Name); Assert.Null(actual[Rom.MergeKey]); Assert.Null(actual[Rom.RegionKey]); - Assert.Null(actual[Rom.StatusKey]); + Assert.Null(actual.Status); Assert.Null(actual.Optional); Assert.Null(actual[Rom.MD5Key]); Assert.Null(actual[Rom.SHA1Key]); @@ -42,7 +42,7 @@ namespace SabreTools.Data.Extensions.Test Name = "XXXXXX", [Disk.MergeKey] = "XXXXXX", [Disk.RegionKey] = "XXXXXX", - [Disk.StatusKey] = "XXXXXX", + Status = ItemStatus.Good, Optional = true, [Disk.MD5Key] = "XXXXXX", [Disk.SHA1Key] = "XXXXXX", @@ -51,12 +51,12 @@ namespace SabreTools.Data.Extensions.Test Rom? actual = self.ConvertToRom(); Assert.NotNull(actual); - Assert.Equal(5, actual.Count); + Assert.Equal(4, actual.Count); Assert.Equal(ItemType.Rom, actual.ItemType); Assert.Equal("XXXXXX.chd", actual.Name); Assert.Equal("XXXXXX", actual[Rom.MergeKey]); Assert.Equal("XXXXXX", actual[Rom.RegionKey]); - Assert.Equal("XXXXXX", actual[Rom.StatusKey]); + Assert.Equal(ItemStatus.Good, actual.Status); Assert.Equal(true, actual.Optional); Assert.Equal("XXXXXX", actual[Rom.MD5Key]); Assert.Equal("XXXXXX", actual[Rom.SHA1Key]); @@ -1578,6 +1578,16 @@ namespace SabreTools.Data.Extensions.Test #region String to Enum + [Theory] + [InlineData(null, null)] + [InlineData("plain", Blit.Plain)] + [InlineData("dirty", Blit.Dirty)] + public void AsBlitTest(string? field, Blit? expected) + { + Blit? actual = field.AsBlit(); + Assert.Equal(expected, actual); + } + [Theory] [InlineData(null, null)] [InlineData("cpu", ChipType.CPU)] @@ -1868,6 +1878,16 @@ namespace SabreTools.Data.Extensions.Test #region Enum to String + [Theory] + [InlineData((Blit)int.MaxValue, null)] + [InlineData(Blit.Plain, "plain")] + [InlineData(Blit.Dirty, "dirty")] + public void FromBlitTest(Blit field, string? expected) + { + string? actual = field.AsStringValue(); + Assert.Equal(expected, actual); + } + [Theory] [InlineData((ChipType)int.MaxValue, null)] [InlineData(ChipType.CPU, "cpu")] diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 1be262c0..f1700a2a 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -6,6 +6,8 @@ using SabreTools.Matching; namespace SabreTools.Data.Extensions { + // TODO: Add proper enum for YesNo + // TODO: Combine yes/partial/no enums public static class MetadataExtensions { #region Accessors @@ -155,8 +157,13 @@ namespace SabreTools.Data.Extensions } else if (self is Chip selfChip && clone is Chip cloneChip) { + cloneChip.ChipType = selfChip.ChipType; cloneChip.SoundOnly = selfChip.SoundOnly; } + else if (self is Condition selfCondition && clone is Condition cloneCondition) + { + cloneCondition.Relation = selfCondition.Relation; + } else if (self is ConfLocation selfConfLocation && clone is ConfLocation cloneConfLocation) { cloneConfLocation.Inverted = selfConfLocation.Inverted; @@ -167,8 +174,17 @@ namespace SabreTools.Data.Extensions } else if (self is Control selfControl && clone is Control cloneControl) { + cloneControl.ControlType = selfControl.ControlType; cloneControl.Reverse = selfControl.Reverse; } + else if (self is DataArea selfDataArea && clone is DataArea cloneDataArea) + { + cloneDataArea.Endianness = selfDataArea.Endianness; + } + else if (self is Device selfDevice && clone is Device cloneDevice) + { + cloneDevice.DeviceType = selfDevice.DeviceType; + } else if (self is DipLocation selfDipLocation && clone is DipLocation cloneDipLocation) { cloneDipLocation.Inverted = selfDipLocation.Inverted; @@ -184,26 +200,47 @@ namespace SabreTools.Data.Extensions else if (self is Disk selfDisk && clone is Disk cloneDisk) { cloneDisk.Optional = selfDisk.Optional; + cloneDisk.Status = selfDisk.Status; cloneDisk.Writable = selfDisk.Writable; } else if (self is Display selfDisplay && clone is Display cloneDisplay) { + cloneDisplay.DisplayType = selfDisplay.DisplayType; cloneDisplay.FlipX = selfDisplay.FlipX; } else if (self is Driver selfDriver && clone is Driver cloneDriver) { + cloneDriver.Blit = selfDriver.Blit; + cloneDriver.Cocktail = selfDriver.Cocktail; + cloneDriver.Color = selfDriver.Color; + cloneDriver.Emulation = selfDriver.Emulation; cloneDriver.Incomplete = selfDriver.Incomplete; cloneDriver.NoSoundHardware = selfDriver.NoSoundHardware; cloneDriver.RequiresArtwork = selfDriver.RequiresArtwork; + cloneDriver.SaveState = selfDriver.SaveState; + cloneDriver.Sound = selfDriver.Sound; + cloneDriver.Status = selfDriver.Status; cloneDriver.Unofficial = selfDriver.Unofficial; } + else if (self is Feature selfFeature && clone is Feature cloneFeature) + { + cloneFeature.FeatureType = selfFeature.FeatureType; + cloneFeature.Overall = selfFeature.Overall; + cloneFeature.Status = selfFeature.Status; + } else if (self is Header selfHeader && clone is Header cloneHeader) { + cloneHeader.BiosMode = selfHeader.BiosMode; cloneHeader.Debug = selfHeader.Debug; + cloneHeader.ForceMerging = selfHeader.ForceMerging; + cloneHeader.ForceNodump = selfHeader.ForceNodump; + cloneHeader.ForcePacking = selfHeader.ForcePacking; cloneHeader.ForceZipping = selfHeader.ForceZipping; cloneHeader.LockBiosMode = selfHeader.LockBiosMode; cloneHeader.LockRomMode = selfHeader.LockRomMode; cloneHeader.LockSampleMode = selfHeader.LockSampleMode; + cloneHeader.RomMode = selfHeader.RomMode; + cloneHeader.SampleMode = selfHeader.SampleMode; } else if (self is Input selfInput && clone is Input cloneInput) { @@ -216,6 +253,7 @@ namespace SabreTools.Data.Extensions cloneMachine.IsDevice = selfMachine.IsDevice; cloneMachine.IsMechanical = selfMachine.IsMechanical; cloneMachine.Runnable = selfMachine.Runnable; + cloneMachine.Supported = selfMachine.Supported; } else if (self is RamOption selfRamOption && clone is RamOption cloneRamOption) { @@ -230,14 +268,29 @@ namespace SabreTools.Data.Extensions cloneRom.Dispose = selfRom.Dispose; cloneRom.FileIsAvailable = selfRom.FileIsAvailable; cloneRom.Inverted = selfRom.Inverted; + cloneRom.LoadFlag = selfRom.LoadFlag; cloneRom.MIA = selfRom.MIA; + cloneRom.OpenMSXMediaType = selfRom.OpenMSXMediaType; cloneRom.Optional = selfRom.Optional; cloneRom.SoundOnly = selfRom.SoundOnly; + cloneRom.Status = selfRom.Status; } else if (self is SlotOption selfSlotOption && clone is SlotOption cloneSlotOption) { cloneSlotOption.Default = selfSlotOption.Default; } + else if (self is Software selfSoftware && clone is Software cloneSoftware) + { + cloneSoftware.Supported = selfSoftware.Supported; + } + else if (self is SoftwareList selfSoftwareList && clone is SoftwareList cloneSoftwareList) + { + cloneSoftwareList.Status = selfSoftwareList.Status; + } + else if (self is Video selfVideo && clone is Video cloneVideo) + { + cloneVideo.Screen = selfVideo.Screen; + } // Handle known properties clone.SetName(self.GetName()); @@ -308,7 +361,7 @@ namespace SabreTools.Data.Extensions Name = name, [Rom.MergeKey] = disk.ReadString(Disk.MergeKey), [Rom.RegionKey] = disk.ReadString(Disk.RegionKey), - [Rom.StatusKey] = disk.ReadString(Disk.StatusKey), + Status = disk.Status, Optional = disk.Optional, [Rom.MD5Key] = disk.ReadString(Disk.MD5Key), [Rom.SHA1Key] = disk.ReadString(Disk.SHA1Key), @@ -973,6 +1026,21 @@ namespace SabreTools.Data.Extensions #region String to Enum + /// + /// Get the enum value for an input string, if possible + /// + /// String value to parse/param> + /// Enum value representing the input, null on error + public static Blit? AsBlit(this string? value) + { + return value?.ToLowerInvariant() switch + { + "plain" => Blit.Plain, + "dirty" => Blit.Dirty, + _ => null, + }; + } + /// /// Get the enum value for an input string, if possible /// @@ -1344,6 +1412,21 @@ namespace SabreTools.Data.Extensions #region Enum to String + /// + /// Get the string value for an input enum, if possible + /// + /// Enum value to parse/param> + /// String value representing the input, null on error + public static string? AsStringValue(this Blit value) + { + return value switch + { + Blit.Plain => "plain", + Blit.Dirty => "dirty", + _ => null, + }; + } + /// /// Get the string value for an input enum, if possible /// @@ -1696,6 +1779,7 @@ namespace SabreTools.Data.Extensions SupportStatus.Good => "good", SupportStatus.Imperfect => "imperfect", SupportStatus.Preliminary => "preliminary", + SupportStatus.Test => "test", _ => null, }; } diff --git a/SabreTools.Data.Models/ClrMamePro/Chip.cs b/SabreTools.Data.Models/ClrMamePro/Chip.cs index 5d9fd30b..4c9c603b 100644 --- a/SabreTools.Data.Models/ClrMamePro/Chip.cs +++ b/SabreTools.Data.Models/ClrMamePro/Chip.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// chip @@ -6,7 +8,7 @@ namespace SabreTools.Data.Models.ClrMamePro { /// type, (cpu|audio) [Required] - public string? Type { get; set; } + public ChipType? Type { get; set; } /// name [Required] diff --git a/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs b/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs index b9255253..772d6664 100644 --- a/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs +++ b/SabreTools.Data.Models/ClrMamePro/ClrMamePro.cs @@ -1,3 +1,5 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// clrmamepro @@ -40,12 +42,12 @@ namespace SabreTools.Data.Models.ClrMamePro public string? Type { get; set; } /// forcemerging - public string? ForceMerging { get; set; } + public MergingFlag ForceMerging { get; set; } /// forcezipping, (yes|no) "no" public bool? ForceZipping { get; set; } /// forcepacking - public string? ForcePacking { get; set; } + public PackingFlag ForcePacking { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/Disk.cs b/SabreTools.Data.Models/ClrMamePro/Disk.cs index af2493ba..34d9d4b9 100644 --- a/SabreTools.Data.Models/ClrMamePro/Disk.cs +++ b/SabreTools.Data.Models/ClrMamePro/Disk.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// disk @@ -18,7 +20,7 @@ namespace SabreTools.Data.Models.ClrMamePro public string? Merge { get; set; } /// status - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// flags public string? Flags { get; set; } diff --git a/SabreTools.Data.Models/ClrMamePro/Driver.cs b/SabreTools.Data.Models/ClrMamePro/Driver.cs index cddc19b9..07abe4a2 100644 --- a/SabreTools.Data.Models/ClrMamePro/Driver.cs +++ b/SabreTools.Data.Models/ClrMamePro/Driver.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// driver @@ -6,18 +8,18 @@ namespace SabreTools.Data.Models.ClrMamePro { /// status, (good|imperfect|preliminary) [Required] - public string? Status { get; set; } + public SupportStatus? Status { get; set; } /// color, (good|imperfect|preliminary) - public string? Color { get; set; } + public SupportStatus? Color { get; set; } /// sound, (good|imperfect|preliminary) - public string? Sound { get; set; } + public SupportStatus? Sound { get; set; } /// palettesize, Numeric? public string? PaletteSize { get; set; } /// blit, (plain|dirty) - public string? Blit { get; set; } + public Blit? Blit { get; set; } } } diff --git a/SabreTools.Data.Models/ClrMamePro/Rom.cs b/SabreTools.Data.Models/ClrMamePro/Rom.cs index 6e64c274..b84d1b68 100644 --- a/SabreTools.Data.Models/ClrMamePro/Rom.cs +++ b/SabreTools.Data.Models/ClrMamePro/Rom.cs @@ -1,5 +1,7 @@ #pragma warning disable IDE1006 // Naming Styles +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// rom @@ -26,7 +28,7 @@ namespace SabreTools.Data.Models.ClrMamePro public string? Merge { get; set; } /// status - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// flags public string? Flags { get; set; } diff --git a/SabreTools.Data.Models/ClrMamePro/Video.cs b/SabreTools.Data.Models/ClrMamePro/Video.cs index e8c801ca..2fd3fe5a 100644 --- a/SabreTools.Data.Models/ClrMamePro/Video.cs +++ b/SabreTools.Data.Models/ClrMamePro/Video.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.ClrMamePro { /// video @@ -6,7 +8,7 @@ namespace SabreTools.Data.Models.ClrMamePro { /// screen, (raster|vector) [Required] - public string? Screen { get; set; } + public DisplayType? Screen { get; set; } /// orientation, (vertical|horizontal) [Required] diff --git a/SabreTools.Data.Models/Listxml/Chip.cs b/SabreTools.Data.Models/Listxml/Chip.cs index c0d48393..1b19195b 100644 --- a/SabreTools.Data.Models/Listxml/Chip.cs +++ b/SabreTools.Data.Models/Listxml/Chip.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -16,7 +17,7 @@ namespace SabreTools.Data.Models.Listxml /// (cpu|audio) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public ChipType? Type { get; set; } /// Only present in older versions [XmlAttribute("soundonly")] diff --git a/SabreTools.Data.Models/Listxml/Condition.cs b/SabreTools.Data.Models/Listxml/Condition.cs index 73f4908b..5e4858a4 100644 --- a/SabreTools.Data.Models/Listxml/Condition.cs +++ b/SabreTools.Data.Models/Listxml/Condition.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -17,7 +18,7 @@ namespace SabreTools.Data.Models.Listxml /// (eq|ne|gt|le|lt|ge) [Required] [XmlAttribute("relation")] - public string? Relation { get; set; } + public Relation? Relation { get; set; } [Required] [XmlAttribute("value")] diff --git a/SabreTools.Data.Models/Listxml/Control.cs b/SabreTools.Data.Models/Listxml/Control.cs index 3deb7c4e..24d2c29e 100644 --- a/SabreTools.Data.Models/Listxml/Control.cs +++ b/SabreTools.Data.Models/Listxml/Control.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -9,7 +10,7 @@ namespace SabreTools.Data.Models.Listxml /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public ControlType? Type { get; set; } /// Numeric [XmlAttribute("player")] diff --git a/SabreTools.Data.Models/Listxml/Device.cs b/SabreTools.Data.Models/Listxml/Device.cs index a6790474..45a26277 100644 --- a/SabreTools.Data.Models/Listxml/Device.cs +++ b/SabreTools.Data.Models/Listxml/Device.cs @@ -1,14 +1,16 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { [XmlRoot("device")] public class Device { + /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public DeviceType? Type { get; set; } [XmlAttribute("tag")] public string? Tag { get; set; } diff --git a/SabreTools.Data.Models/Listxml/Disk.cs b/SabreTools.Data.Models/Listxml/Disk.cs index 79908639..b5bf0d57 100644 --- a/SabreTools.Data.Models/Listxml/Disk.cs +++ b/SabreTools.Data.Models/Listxml/Disk.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -33,7 +34,7 @@ namespace SabreTools.Data.Models.Listxml /// (baddump|nodump|good) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// (yes|no) "no" [XmlAttribute("optional")] diff --git a/SabreTools.Data.Models/Listxml/Display.cs b/SabreTools.Data.Models/Listxml/Display.cs index 420e5892..5f873dcd 100644 --- a/SabreTools.Data.Models/Listxml/Display.cs +++ b/SabreTools.Data.Models/Listxml/Display.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -12,7 +13,7 @@ namespace SabreTools.Data.Models.Listxml /// (raster|vector|lcd|svg|unknown) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public DisplayType? Type { get; set; } /// (0|90|180|270) [XmlAttribute("rotate")] diff --git a/SabreTools.Data.Models/Listxml/Driver.cs b/SabreTools.Data.Models/Listxml/Driver.cs index 98f55f50..c03b7baf 100644 --- a/SabreTools.Data.Models/Listxml/Driver.cs +++ b/SabreTools.Data.Models/Listxml/Driver.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -9,15 +10,15 @@ namespace SabreTools.Data.Models.Listxml /// (good|imperfect|preliminary), (good|preliminary|test) in older versions [Required] [XmlAttribute("status")] - public string? Status { get; set; } + public SupportStatus? Status { get; set; } /// (good|imperfect|preliminary), Only present in older versions [XmlAttribute("color")] - public string? Color { get; set; } + public SupportStatus? Color { get; set; } /// (good|imperfect|preliminary), Only present in older versions [XmlAttribute("sound")] - public string? Sound { get; set; } + public SupportStatus? Sound { get; set; } /// Only present in older versions [XmlAttribute("palettesize")] @@ -26,17 +27,17 @@ namespace SabreTools.Data.Models.Listxml /// (good|imperfect|preliminary) [Required] [XmlAttribute("emulation")] - public string? Emulation { get; set; } + public SupportStatus? Emulation { get; set; } /// (good|imperfect|preliminary) [Required] [XmlAttribute("cocktail")] - public string? Cocktail { get; set; } + public SupportStatus? Cocktail { get; set; } /// (supported|unsupported) [Required] [XmlAttribute("savestate")] - public string? SaveState { get; set; } + public Supported? SaveState { get; set; } /// (yes|no) "no" [XmlAttribute("requiresartwork")] diff --git a/SabreTools.Data.Models/Listxml/Feature.cs b/SabreTools.Data.Models/Listxml/Feature.cs index b4897e4c..b1a29119 100644 --- a/SabreTools.Data.Models/Listxml/Feature.cs +++ b/SabreTools.Data.Models/Listxml/Feature.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -9,14 +10,14 @@ namespace SabreTools.Data.Models.Listxml /// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan) [Required] [XmlAttribute("type")] - public string? Type { get; set; } + public FeatureType? Type { get; set; } /// (unemulated|imperfect) [XmlAttribute("status")] - public string? Status { get; set; } + public FeatureStatus? Status { get; set; } /// (unemulated|imperfect) [XmlAttribute("overall")] - public string? Overall { get; set; } + public FeatureStatus? Overall { get; set; } } } diff --git a/SabreTools.Data.Models/Listxml/Rom.cs b/SabreTools.Data.Models/Listxml/Rom.cs index 6448731f..a2f60acc 100644 --- a/SabreTools.Data.Models/Listxml/Rom.cs +++ b/SabreTools.Data.Models/Listxml/Rom.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -36,7 +37,7 @@ namespace SabreTools.Data.Models.Listxml /// (baddump|nodump|good) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// (yes|no) "no" [XmlAttribute("optional")] diff --git a/SabreTools.Data.Models/Listxml/SoftwareList.cs b/SabreTools.Data.Models/Listxml/SoftwareList.cs index 31f7ed3c..b440b12d 100644 --- a/SabreTools.Data.Models/Listxml/SoftwareList.cs +++ b/SabreTools.Data.Models/Listxml/SoftwareList.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -17,7 +18,7 @@ namespace SabreTools.Data.Models.Listxml /// (original|compatible) [Required] [XmlAttribute("status")] - public string? Status { get; set; } + public SoftwareListStatus? Status { get; set; } [XmlAttribute("filter")] public string? Filter { get; set; } diff --git a/SabreTools.Data.Models/Listxml/Video.cs b/SabreTools.Data.Models/Listxml/Video.cs index 7568ea9f..8db62b97 100644 --- a/SabreTools.Data.Models/Listxml/Video.cs +++ b/SabreTools.Data.Models/Listxml/Video.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Listxml { @@ -9,7 +10,7 @@ namespace SabreTools.Data.Models.Listxml /// (raster|vector) [Required] [XmlAttribute("screen")] - public string? Screen { get; set; } + public DisplayType? Screen { get; set; } /// (vertical|horizontal) [Required] diff --git a/SabreTools.Data.Models/Logiqx/ClrMamePro.cs b/SabreTools.Data.Models/Logiqx/ClrMamePro.cs index f66596a6..ba9bf306 100644 --- a/SabreTools.Data.Models/Logiqx/ClrMamePro.cs +++ b/SabreTools.Data.Models/Logiqx/ClrMamePro.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -11,14 +12,14 @@ namespace SabreTools.Data.Models.Logiqx /// (none|split|merged|nonmerged|fullmerged|device|full) "split" [XmlAttribute("forcemerging")] - public string? ForceMerging { get; set; } + public MergingFlag ForceMerging { get; set; } /// (obsolete|required|ignore) "obsolete" [XmlAttribute("forcenodump")] - public string? ForceNodump { get; set; } + public NodumpFlag ForceNodump { get; set; } /// (zip|unzip) "zip" [XmlAttribute("forcepacking")] - public string? ForcePacking { get; set; } + public PackingFlag ForcePacking { get; set; } } } diff --git a/SabreTools.Data.Models/Logiqx/Disk.cs b/SabreTools.Data.Models/Logiqx/Disk.cs index c36ef5d1..2b080f8d 100644 --- a/SabreTools.Data.Models/Logiqx/Disk.cs +++ b/SabreTools.Data.Models/Logiqx/Disk.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -21,7 +22,7 @@ namespace SabreTools.Data.Models.Logiqx /// (baddump|nodump|good|verified) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// MAME extension [XmlAttribute("region")] diff --git a/SabreTools.Data.Models/Logiqx/Driver.cs b/SabreTools.Data.Models/Logiqx/Driver.cs index 72991aea..bb1f752c 100644 --- a/SabreTools.Data.Models/Logiqx/Driver.cs +++ b/SabreTools.Data.Models/Logiqx/Driver.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -9,22 +10,22 @@ namespace SabreTools.Data.Models.Logiqx /// (good|imperfect|preliminary) [Required] [XmlAttribute("status")] - public string? Status { get; set; } + public SupportStatus? Status { get; set; } /// (good|imperfect|preliminary) [Required] [XmlAttribute("emulation")] - public string? Emulation { get; set; } + public SupportStatus? Emulation { get; set; } /// (good|imperfect|preliminary) [Required] [XmlAttribute("cocktail")] - public string? Cocktail { get; set; } + public SupportStatus? Cocktail { get; set; } /// (supported|unsupported) [Required] [XmlAttribute("savestate")] - public string? SaveState { get; set; } + public Supported? SaveState { get; set; } /// (yes|no) "no" [XmlAttribute("requiresartwork")] diff --git a/SabreTools.Data.Models/Logiqx/Rom.cs b/SabreTools.Data.Models/Logiqx/Rom.cs index be687492..ea05a3a8 100644 --- a/SabreTools.Data.Models/Logiqx/Rom.cs +++ b/SabreTools.Data.Models/Logiqx/Rom.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; #pragma warning disable IDE1006 // Naming Styles namespace SabreTools.Data.Models.Logiqx @@ -77,7 +78,7 @@ namespace SabreTools.Data.Models.Logiqx /// (baddump|nodump|good|verified) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// No-Intro extension [XmlAttribute("serial")] diff --git a/SabreTools.Data.Models/Logiqx/RomCenter.cs b/SabreTools.Data.Models/Logiqx/RomCenter.cs index 2840f518..84e4554b 100644 --- a/SabreTools.Data.Models/Logiqx/RomCenter.cs +++ b/SabreTools.Data.Models/Logiqx/RomCenter.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -11,15 +12,15 @@ namespace SabreTools.Data.Models.Logiqx /// (none|split|merged|unmerged|fullmerged|device|full) "split" [XmlAttribute("rommode")] - public string? RomMode { get; set; } + public MergingFlag RomMode { get; set; } /// (none|split|merged|unmerged|fullmerged|device|full) "split" [XmlAttribute("biosmode")] - public string? BiosMode { get; set; } + public MergingFlag BiosMode { get; set; } /// (none|split|merged|unmerged|fullmerged|device|full) "merged" [XmlAttribute("samplemode")] - public string? SampleMode { get; set; } + public MergingFlag SampleMode { get; set; } /// (yes|no) "no" [XmlAttribute("lockrommode")] diff --git a/SabreTools.Data.Models/Logiqx/SoftwareList.cs b/SabreTools.Data.Models/Logiqx/SoftwareList.cs index fb06ff48..69d23183 100644 --- a/SabreTools.Data.Models/Logiqx/SoftwareList.cs +++ b/SabreTools.Data.Models/Logiqx/SoftwareList.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.Logiqx { @@ -17,7 +18,7 @@ namespace SabreTools.Data.Models.Logiqx /// (original|compatible) [Required] [XmlAttribute("status")] - public string? Status { get; set; } + public SoftwareListStatus? Status { get; set; } [XmlAttribute("filter")] public string? Filter { get; set; } diff --git a/SabreTools.Data.Models/Metadata/Chip.cs b/SabreTools.Data.Models/Metadata/Chip.cs index 79d6699e..155ed6d3 100644 --- a/SabreTools.Data.Models/Metadata/Chip.cs +++ b/SabreTools.Data.Models/Metadata/Chip.cs @@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (cpu|audio) + public ChipType? ChipType { get; set; } + public string? Name { get; set; } /// (yes|no) "no" @@ -26,9 +29,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string TagKey = "tag"; - /// (cpu|audio) - public const string ChipTypeKey = "type"; - #endregion public Chip() => ItemType = ItemType.Chip; diff --git a/SabreTools.Data.Models/Metadata/Condition.cs b/SabreTools.Data.Models/Metadata/Condition.cs index d2a257cc..8875796b 100644 --- a/SabreTools.Data.Models/Metadata/Condition.cs +++ b/SabreTools.Data.Models/Metadata/Condition.cs @@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("condition"), XmlRoot("condition")] public class Condition : DatItem { + #region Properties + + /// (eq|ne|gt|le|lt|ge) + public Relation? Relation { get; set; } + + #endregion + #region Keys /// string @@ -14,9 +21,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MaskKey = "mask"; - /// (eq|ne|gt|le|lt|ge) - public const string RelationKey = "relation"; - /// string public const string TagKey = "tag"; diff --git a/SabreTools.Data.Models/Metadata/Control.cs b/SabreTools.Data.Models/Metadata/Control.cs index 28222d70..98c0fd58 100644 --- a/SabreTools.Data.Models/Metadata/Control.cs +++ b/SabreTools.Data.Models/Metadata/Control.cs @@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling) + public ControlType? ControlType { get; set; } + /// (yes|no) "no" public bool? Reverse { get; set; } @@ -36,9 +39,6 @@ namespace SabreTools.Data.Models.Metadata /// long public const string SensitivityKey = "sensitivity"; - /// (joy|stick|paddle|pedal|lightgun|positional|dial|trackball|mouse|only_buttons|keypad|keyboard|mahjong|hanafuda|gambling) - public const string ControlTypeKey = "type"; - /// string, possibly long public const string WaysKey = "ways"; diff --git a/SabreTools.Data.Models/Metadata/DataArea.cs b/SabreTools.Data.Models/Metadata/DataArea.cs index 5bc474cf..07fe7cc1 100644 --- a/SabreTools.Data.Models/Metadata/DataArea.cs +++ b/SabreTools.Data.Models/Metadata/DataArea.cs @@ -8,15 +8,15 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (big|little) "little" + public Endianness? Endianness { get; set; } + public string? Name { get; set; } #endregion #region Keys - /// (big|little) "little" - public const string EndiannessKey = "endianness"; - /// Rom[] [NoFilter] public const string RomKey = "rom"; @@ -25,6 +25,7 @@ namespace SabreTools.Data.Models.Metadata public const string SizeKey = "size"; /// (8|16|32|64) "8" + /// TODO: Convert to enum public const string WidthKey = "width"; #endregion diff --git a/SabreTools.Data.Models/Metadata/Device.cs b/SabreTools.Data.Models/Metadata/Device.cs index 17b2076c..3d17f455 100644 --- a/SabreTools.Data.Models/Metadata/Device.cs +++ b/SabreTools.Data.Models/Metadata/Device.cs @@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("device"), XmlRoot("device")] public class Device : DatItem { + #region Properties + + /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile) + public DeviceType? DeviceType { get; set; } + + #endregion + #region Keys /// Extension[] @@ -23,14 +30,12 @@ namespace SabreTools.Data.Models.Metadata public const string InterfaceKey = "interface"; /// (0|1) "0" + /// TODO: Convert to bool? public const string MandatoryKey = "mandatory"; /// string public const string TagKey = "tag"; - /// (unknown|cartridge|floppydisk|harddisk|cylinder|cassette|punchcard|punchtape|printout|serial|parallel|snapshot|quickload|memcard|cdrom|magtape|romimage|midiin|midiout|picture|vidfile) - public const string DeviceTypeKey = "type"; - #endregion public Device() => ItemType = ItemType.Device; diff --git a/SabreTools.Data.Models/Metadata/Disk.cs b/SabreTools.Data.Models/Metadata/Disk.cs index 17510762..b1c77800 100644 --- a/SabreTools.Data.Models/Metadata/Disk.cs +++ b/SabreTools.Data.Models/Metadata/Disk.cs @@ -13,6 +13,9 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? Optional { get; set; } + /// (baddump|nodump|good|verified) "good" + public ItemStatus? Status { get; set; } + /// (yes|no) "no" public bool? Writable { get; set; } @@ -38,9 +41,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string SHA1Key = "sha1"; - /// (baddump|nodump|good|verified) "good" - public const string StatusKey = "status"; - #endregion public Disk() => ItemType = ItemType.Disk; diff --git a/SabreTools.Data.Models/Metadata/Display.cs b/SabreTools.Data.Models/Metadata/Display.cs index e81b6ceb..71dee49e 100644 --- a/SabreTools.Data.Models/Metadata/Display.cs +++ b/SabreTools.Data.Models/Metadata/Display.cs @@ -8,6 +8,9 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (raster|vector|lcd|svg|unknown) + public DisplayType? DisplayType { get; set; } + /// (yes|no) "no" public bool? FlipX { get; set; } @@ -34,14 +37,12 @@ namespace SabreTools.Data.Models.Metadata public const string RefreshKey = "refresh"; /// (0|90|180|270) + /// TODO: Convert to enum public const string RotateKey = "rotate"; /// string public const string TagKey = "tag"; - /// (raster|vector|lcd|svg|unknown) - public const string DisplayTypeKey = "type"; - /// long public const string VBEndKey = "vbend"; diff --git a/SabreTools.Data.Models/Metadata/Driver.cs b/SabreTools.Data.Models/Metadata/Driver.cs index 4060acd5..8c2353e7 100644 --- a/SabreTools.Data.Models/Metadata/Driver.cs +++ b/SabreTools.Data.Models/Metadata/Driver.cs @@ -8,6 +8,18 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (plain|dirty) + public Blit? Blit { get; set; } + + /// (good|imperfect|preliminary) + public SupportStatus? Cocktail { get; set; } + + /// (good|imperfect|preliminary) + public SupportStatus? Color { get; set; } + + /// (good|imperfect|preliminary) + public SupportStatus? Emulation { get; set; } + /// (yes|no) "no" public bool? Incomplete { get; set; } @@ -17,6 +29,15 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? RequiresArtwork { get; set; } + /// (supported|unsupported) + public Supported? SaveState { get; set; } + + /// (good|imperfect|preliminary) + public SupportStatus? Sound { get; set; } + + /// (good|imperfect|preliminary|test) + public SupportStatus? Status { get; set; } + /// (yes|no) "no" public bool? Unofficial { get; set; } @@ -24,30 +45,9 @@ namespace SabreTools.Data.Models.Metadata #region Keys - /// (plain|dirty) - public const string BlitKey = "blit"; - - /// (good|imperfect|preliminary) - public const string CocktailKey = "cocktail"; - - /// (good|imperfect|preliminary) - public const string ColorKey = "color"; - - /// (good|imperfect|preliminary) - public const string EmulationKey = "emulation"; - /// string, possibly long public const string PaletteSizeKey = "palettesize"; - /// (supported|unsupported) - public const string SaveStateKey = "savestate"; - - /// (good|imperfect|preliminary) - public const string SoundKey = "sound"; - - /// (good|imperfect|preliminary|test) - public const string StatusKey = "status"; - #endregion public Driver() => ItemType = ItemType.Driver; diff --git a/SabreTools.Data.Models/Metadata/Enums.cs b/SabreTools.Data.Models/Metadata/Enums.cs index cca49b14..35382d95 100644 --- a/SabreTools.Data.Models/Metadata/Enums.cs +++ b/SabreTools.Data.Models/Metadata/Enums.cs @@ -1,5 +1,17 @@ namespace SabreTools.Data.Models.Metadata { + /// + /// Determine the blit type + /// + public enum Blit + { + /// "plain" + Plain, + + /// "dirty" + Dirty, + } + /// /// Determine the chip type /// @@ -541,5 +553,8 @@ namespace SabreTools.Data.Models.Metadata /// "preliminary" Preliminary, + + /// "test" + Test, } } diff --git a/SabreTools.Data.Models/Metadata/Feature.cs b/SabreTools.Data.Models/Metadata/Feature.cs index 2195c262..0193ad78 100644 --- a/SabreTools.Data.Models/Metadata/Feature.cs +++ b/SabreTools.Data.Models/Metadata/Feature.cs @@ -8,21 +8,21 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan) + public FeatureType? FeatureType { get; set; } + public string? Name { get; set; } + /// (unemulated|imperfect) + public FeatureStatus? Overall { get; set; } + + /// (unemulated|imperfect) + public FeatureStatus? Status { get; set; } + #endregion #region Keys - /// (unemulated|imperfect) - public const string OverallKey = "overall"; - - /// (unemulated|imperfect) - public const string StatusKey = "status"; - - /// (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan) - public const string FeatureTypeKey = "type"; - /// string public const string ValueKey = "value"; diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs index f4e98ea4..b1a6ca6a 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -8,9 +8,21 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" + public MergingFlag BiosMode { get; set; } + /// (yes|no) "no" public bool? Debug { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" + public MergingFlag ForceMerging { get; set; } + + /// (obsolete|required|ignore) "obsolete" + public NodumpFlag ForceNodump { get; set; } + + /// (zip|unzip) "zip" + public PackingFlag ForcePacking { get; set; } + /// (yes|no) "yes" public bool? ForceZipping { get; set; } @@ -25,6 +37,12 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" + public MergingFlag RomMode { get; set; } + + /// (none|split|merged|nonmerged|fullmerged|device|full) "split" + public MergingFlag SampleMode { get; set; } + #endregion #region Keys @@ -32,9 +50,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string AuthorKey = "author"; - /// (none|split|merged|nonmerged|fullmerged|device|full) "split" - public const string BiosModeKey = "biosmode"; - /// string public const string BuildKey = "build"; @@ -64,15 +79,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string EmulatorVersionKey = "emulatorversion"; - /// (none|split|merged|nonmerged|fullmerged|device|full) "split" - public const string ForceMergingKey = "forcemerging"; - - /// (obsolete|required|ignore) "obsolete" - public const string ForceNodumpKey = "forcenodump"; - - /// (zip|unzip) "zip" - public const string ForcePackingKey = "forcepacking"; - /// string, string[] public const string HeaderKey = "header"; @@ -112,18 +118,12 @@ namespace SabreTools.Data.Models.Metadata /// string public const string RefNameKey = "refname"; - /// (none|split|merged|nonmerged|fullmerged|device|full) "split" - public const string RomModeKey = "rommode"; - /// string public const string RomTitleKey = "romTitle"; /// string public const string RootDirKey = "rootdir"; - /// (none|split|merged|nonmerged|fullmerged|device|full) "split" - public const string SampleModeKey = "samplemode"; - /// string public const string SchemaLocationKey = "schemaLocation"; diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index ab98564c..2bdb8872 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -22,6 +22,9 @@ namespace SabreTools.Data.Models.Metadata /// (yes|partial|no) "no" public Runnable? Runnable { get; set; } + /// (yes|partial|no) "yes" + public Supported? Supported { get; set; } + #endregion #region Keys @@ -253,9 +256,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string StatusKey = "status"; - /// (yes|partial|no) "yes" - public const string SupportedKey = "supported"; - /// string public const string SystemKey = "system"; diff --git a/SabreTools.Data.Models/Metadata/Rom.cs b/SabreTools.Data.Models/Metadata/Rom.cs index 39195aac..d021dcc6 100644 --- a/SabreTools.Data.Models/Metadata/Rom.cs +++ b/SabreTools.Data.Models/Metadata/Rom.cs @@ -17,17 +17,26 @@ namespace SabreTools.Data.Models.Metadata /// (yes|no) "no" public bool? Inverted { get; set; } + /// (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore) + public LoadFlag? LoadFlag { get; set; } + /// (yes|no) "no" public bool? MIA { get; set; } public string? Name { get; set; } + /// string; OpenMSX.RomBase + public OpenMSXSubType? OpenMSXMediaType { get; set; } + /// (yes|no) "no" public bool? Optional { get; set; } /// (yes|no) "no" public bool? SoundOnly { get; set; } + /// (baddump|nodump|good|verified) "good" + public ItemStatus? Status { get; set; } + #endregion #region Keys @@ -128,9 +137,6 @@ namespace SabreTools.Data.Models.Metadata /// string, possibly long; Also in ArchiveDotOrg.File public const string LengthKey = "length"; - /// (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore) - public const string LoadFlagKey = "loadflag"; - /// string; ArchiveDotOrg.File public const string MatrixNumberKey = "matrix_number"; @@ -143,9 +149,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string MD5Key = "md5"; - /// string; OpenMSX.RomBase - public const string OpenMSXMediaType = "mediatype"; - /// string public const string MergeKey = "merge"; @@ -230,9 +233,6 @@ namespace SabreTools.Data.Models.Metadata /// string, possibly long; OpenMSX.RomBase public const string StartKey = "start"; - /// (baddump|nodump|good|verified) "good" - public const string StatusKey = "status"; - /// string; ArchiveDotOrg.File public const string SummationKey = "summation"; diff --git a/SabreTools.Data.Models/Metadata/Software.cs b/SabreTools.Data.Models/Metadata/Software.cs index 18e67e4d..6819bc82 100644 --- a/SabreTools.Data.Models/Metadata/Software.cs +++ b/SabreTools.Data.Models/Metadata/Software.cs @@ -10,6 +10,9 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + /// (yes|partial|no) "yes" + public Supported? Supported { get; set; } + #endregion #region Keys @@ -38,9 +41,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string SharedFeatKey = "sharedfeat"; - /// (yes|partial|no) "yes" - public const string SupportedKey = "supported"; - /// string public const string YearKey = "year"; diff --git a/SabreTools.Data.Models/Metadata/SoftwareList.cs b/SabreTools.Data.Models/Metadata/SoftwareList.cs index 8b51bb32..9486f3d4 100644 --- a/SabreTools.Data.Models/Metadata/SoftwareList.cs +++ b/SabreTools.Data.Models/Metadata/SoftwareList.cs @@ -10,6 +10,9 @@ namespace SabreTools.Data.Models.Metadata public string? Name { get; set; } + /// (original|compatible) + public SoftwareListStatus? Status { get; set; } + #endregion #region Keys @@ -27,9 +30,6 @@ namespace SabreTools.Data.Models.Metadata [NoFilter] public const string SoftwareKey = "software"; - /// (original|compatible) - public const string StatusKey = "status"; - /// string public const string TagKey = "tag"; diff --git a/SabreTools.Data.Models/Metadata/Video.cs b/SabreTools.Data.Models/Metadata/Video.cs index 406cb218..39754186 100644 --- a/SabreTools.Data.Models/Metadata/Video.cs +++ b/SabreTools.Data.Models/Metadata/Video.cs @@ -6,6 +6,13 @@ namespace SabreTools.Data.Models.Metadata [JsonObject("video"), XmlRoot("video")] public class Video : DatItem { + #region Properties + + /// (raster|vector) + public DisplayType? Screen { get; set; } + + #endregion + #region Keys /// long @@ -23,9 +30,6 @@ namespace SabreTools.Data.Models.Metadata /// double; Originally "freq" public const string RefreshKey = "refresh"; - /// (raster|vector) - public const string ScreenKey = "screen"; - /// long; Originally "x" public const string WidthKey = "width"; diff --git a/SabreTools.Data.Models/SeparatedValue/Row.cs b/SabreTools.Data.Models/SeparatedValue/Row.cs index 15f42fca..5fed32c0 100644 --- a/SabreTools.Data.Models/SeparatedValue/Row.cs +++ b/SabreTools.Data.Models/SeparatedValue/Row.cs @@ -1,4 +1,6 @@ +using SabreTools.Data.Models.Metadata; + namespace SabreTools.Data.Models.SeparatedValue { /// @@ -57,6 +59,6 @@ namespace SabreTools.Data.Models.SeparatedValue public string? SpamSum { get; set; } /// Status, Nodump - public string? Status { get; set; } + public ItemStatus? Status { get; set; } } } diff --git a/SabreTools.Data.Models/SoftwareList/DataArea.cs b/SabreTools.Data.Models/SoftwareList/DataArea.cs index 2ce98c0a..dfe7dfee 100644 --- a/SabreTools.Data.Models/SoftwareList/DataArea.cs +++ b/SabreTools.Data.Models/SoftwareList/DataArea.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.SoftwareList { @@ -20,7 +21,7 @@ namespace SabreTools.Data.Models.SoftwareList /// (big|little) "little" [XmlAttribute("endianness")] - public string? Endianness { get; set; } + public Endianness? Endianness { get; set; } [XmlElement("rom")] public Rom[]? Rom { get; set; } diff --git a/SabreTools.Data.Models/SoftwareList/Disk.cs b/SabreTools.Data.Models/SoftwareList/Disk.cs index 9fddd1cb..642c8ab5 100644 --- a/SabreTools.Data.Models/SoftwareList/Disk.cs +++ b/SabreTools.Data.Models/SoftwareList/Disk.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.SoftwareList { @@ -18,7 +19,7 @@ namespace SabreTools.Data.Models.SoftwareList /// (baddump|nodump|good) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// (yes|no) "no" [XmlAttribute("writable")] diff --git a/SabreTools.Data.Models/SoftwareList/Rom.cs b/SabreTools.Data.Models/SoftwareList/Rom.cs index 7044ebcf..265f8127 100644 --- a/SabreTools.Data.Models/SoftwareList/Rom.cs +++ b/SabreTools.Data.Models/SoftwareList/Rom.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.SoftwareList { @@ -31,10 +32,10 @@ namespace SabreTools.Data.Models.SoftwareList /// (baddump|nodump|good) "good" [XmlAttribute("status")] - public string? Status { get; set; } + public ItemStatus? Status { get; set; } /// (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore) [XmlAttribute("loadflag")] - public string? LoadFlag { get; set; } + public LoadFlag? LoadFlag { get; set; } } } diff --git a/SabreTools.Data.Models/SoftwareList/Software.cs b/SabreTools.Data.Models/SoftwareList/Software.cs index d7baaf09..74acbd35 100644 --- a/SabreTools.Data.Models/SoftwareList/Software.cs +++ b/SabreTools.Data.Models/SoftwareList/Software.cs @@ -1,5 +1,6 @@ using System.Xml; using System.Xml.Serialization; +using SabreTools.Data.Models.Metadata; namespace SabreTools.Data.Models.SoftwareList { @@ -15,7 +16,7 @@ namespace SabreTools.Data.Models.SoftwareList /// (yes|partial|no) "yes" [XmlAttribute("supported")] - public string? Supported { get; set; } + public Supported? Supported { get; set; } [Required] [XmlElement("description")] diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 9bdc43cd..dcdc1daf 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -108,9 +108,9 @@ namespace SabreTools.Metadata.DatFiles.Test ValidateDriver(driver); // All other fields are tested separately - Rom? dump = Array.Find(datItems, item => item is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType) is not null) as Rom; + Rom? dump = Array.Find(datItems, item => item is Rom rom && rom.OpenMSXMediaType is not null) as Rom; Assert.NotNull(dump); - Assert.Equal("rom", dump.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); + Assert.Equal(Data.Models.Metadata.OpenMSXSubType.Rom, dump.OpenMSXMediaType); Feature? feature = Array.Find(datItems, item => item is Feature) as Feature; ValidateFeature(feature); @@ -158,7 +158,7 @@ namespace SabreTools.Metadata.DatFiles.Test Release? release = Array.Find(datItems, item => item is Release) as Release; ValidateRelease(release); - Rom? rom = Array.Find(datItems, item => item is Rom rom && !rom.DataAreaSpecified && !rom.PartSpecified && rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType) is null) as Rom; + Rom? rom = Array.Find(datItems, item => item is Rom rom && !rom.DataAreaSpecified && !rom.PartSpecified && rom.OpenMSXMediaType is null) as Rom; ValidateRom(rom); Sample? sample = Array.Find(datItems, item => item is Sample) as Sample; @@ -202,7 +202,7 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Header { [Data.Models.Metadata.Header.AuthorKey] = "author", - [Data.Models.Metadata.Header.BiosModeKey] = "merged", + BiosMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.BuildKey] = "build", [Data.Models.Metadata.Header.CanOpenKey] = canOpen, [Data.Models.Metadata.Header.CategoryKey] = "category", @@ -213,9 +213,9 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Header.DescriptionKey] = "description", [Data.Models.Metadata.Header.EmailKey] = "email", [Data.Models.Metadata.Header.EmulatorVersionKey] = "emulatorversion", - [Data.Models.Metadata.Header.ForceMergingKey] = "merged", - [Data.Models.Metadata.Header.ForceNodumpKey] = "required", - [Data.Models.Metadata.Header.ForcePackingKey] = "zip", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, + ForceNodump = Data.Models.Metadata.NodumpFlag.Required, + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, ForceZipping = true, [Data.Models.Metadata.Header.HeaderKey] = "header", [Data.Models.Metadata.Header.HomepageKey] = "homepage", @@ -232,10 +232,10 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Header.NotesKey] = "notes", [Data.Models.Metadata.Header.PluginKey] = "plugin", [Data.Models.Metadata.Header.RefNameKey] = "refname", - [Data.Models.Metadata.Header.RomModeKey] = "merged", + RomMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.RomTitleKey] = "romtitle", [Data.Models.Metadata.Header.RootDirKey] = "rootdir", - [Data.Models.Metadata.Header.SampleModeKey] = "merged", + SampleMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation", [Data.Models.Metadata.Header.ScreenshotsHeightKey] = "screenshotsheight", [Data.Models.Metadata.Header.ScreenshotsWidthKey] = "screenshotsWidth", @@ -323,7 +323,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Machine.SourceFileKey] = "sourcefile", [Data.Models.Metadata.Machine.SourceRomKey] = "sourcerom", [Data.Models.Metadata.Machine.StatusKey] = "status", - [Data.Models.Metadata.Machine.SupportedKey] = "yes", + Supported = Data.Models.Metadata.Supported.Yes, [Data.Models.Metadata.Machine.SystemKey] = "system", [Data.Models.Metadata.Machine.TagsKey] = "tags", [Data.Models.Metadata.Machine.TruripKey] = CreateMetadataTrurip(), @@ -409,7 +409,7 @@ namespace SabreTools.Metadata.DatFiles.Test Name = "name", SoundOnly = true, [Data.Models.Metadata.Chip.TagKey] = "tag", - [Data.Models.Metadata.Chip.ChipTypeKey] = "cpu", + ChipType = Data.Models.Metadata.ChipType.CPU, }; } @@ -432,7 +432,7 @@ namespace SabreTools.Metadata.DatFiles.Test { [Data.Models.Metadata.Condition.ValueKey] = "value", [Data.Models.Metadata.Condition.MaskKey] = "mask", - [Data.Models.Metadata.Condition.RelationKey] = "eq", + Relation = Data.Models.Metadata.Relation.Equal, [Data.Models.Metadata.Condition.TagKey] = "tag", }; } @@ -470,7 +470,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Control.ReqButtonsKey] = 12345L, Reverse = true, [Data.Models.Metadata.Control.SensitivityKey] = 12345L, - [Data.Models.Metadata.Control.ControlTypeKey] = "lightgun", + ControlType = Data.Models.Metadata.ControlType.Lightgun, [Data.Models.Metadata.Control.WaysKey] = "ways", [Data.Models.Metadata.Control.Ways2Key] = "ways2", [Data.Models.Metadata.Control.Ways3Key] = "ways3", @@ -487,7 +487,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Device.InterfaceKey] = "interface", [Data.Models.Metadata.Device.MandatoryKey] = 1L, [Data.Models.Metadata.Device.TagKey] = "tag", - [Data.Models.Metadata.Device.DeviceTypeKey] = "punchtape", + DeviceType = Data.Models.Metadata.DeviceType.PunchTape, }; } @@ -539,7 +539,7 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.DataArea { - [Data.Models.Metadata.DataArea.EndiannessKey] = "big", + Endianness = Data.Models.Metadata.Endianness.Big, Name = "name", [Data.Models.Metadata.DataArea.RomKey] = new Data.Models.Metadata.Rom[] { [] }, [Data.Models.Metadata.DataArea.SizeKey] = 12345L, @@ -585,7 +585,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Display.RefreshKey] = 12345L, [Data.Models.Metadata.Display.RotateKey] = 90, [Data.Models.Metadata.Display.TagKey] = "tag", - [Data.Models.Metadata.Display.DisplayTypeKey] = "vector", + DisplayType = Data.Models.Metadata.DisplayType.Vector, [Data.Models.Metadata.Display.VBEndKey] = 12345L, [Data.Models.Metadata.Display.VBStartKey] = 12345L, [Data.Models.Metadata.Display.VTotalKey] = 12345L, @@ -597,17 +597,17 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Driver { - [Data.Models.Metadata.Driver.BlitKey] = "plain", - [Data.Models.Metadata.Driver.CocktailKey] = "good", - [Data.Models.Metadata.Driver.ColorKey] = "good", - [Data.Models.Metadata.Driver.EmulationKey] = "good", + Blit = Data.Models.Metadata.Blit.Plain, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Emulation = Data.Models.Metadata.SupportStatus.Good, Incomplete = true, NoSoundHardware = true, [Data.Models.Metadata.Driver.PaletteSizeKey] = "pallettesize", RequiresArtwork = true, - [Data.Models.Metadata.Driver.SaveStateKey] = "supported", - [Data.Models.Metadata.Driver.SoundKey] = "good", - [Data.Models.Metadata.Driver.StatusKey] = "good", + SaveState = Data.Models.Metadata.Supported.Yes, + Sound = Data.Models.Metadata.SupportStatus.Good, + Status = Data.Models.Metadata.SupportStatus.Good, Unofficial = true, }; } @@ -640,9 +640,9 @@ namespace SabreTools.Metadata.DatFiles.Test return new Data.Models.Metadata.Feature { Name = "name", - [Data.Models.Metadata.Feature.OverallKey] = "imperfect", - [Data.Models.Metadata.Feature.StatusKey] = "imperfect", - [Data.Models.Metadata.Feature.FeatureTypeKey] = "protection", + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + FeatureType = Data.Models.Metadata.FeatureType.Protection, [Data.Models.Metadata.Feature.ValueKey] = "value", }; } @@ -805,7 +805,7 @@ namespace SabreTools.Metadata.DatFiles.Test Inverted = true, [Data.Models.Metadata.Rom.LastModifiedTimeKey] = "mtime", [Data.Models.Metadata.Rom.LengthKey] = "length", - [Data.Models.Metadata.Rom.LoadFlagKey] = "load16_byte", + LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte, [Data.Models.Metadata.Rom.MatrixNumberKey] = "matrix_number", [Data.Models.Metadata.Rom.MD2Key] = HashType.MD2.ZeroString, [Data.Models.Metadata.Rom.MD4Key] = HashType.MD4.ZeroString, @@ -843,7 +843,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Rom.SourceKey] = "source", [Data.Models.Metadata.Rom.SpamSumKey] = HashType.SpamSum.ZeroString, [Data.Models.Metadata.Rom.StartKey] = "start", - [Data.Models.Metadata.Rom.StatusKey] = "good", + Status = Data.Models.Metadata.ItemStatus.Good, [Data.Models.Metadata.Rom.SummationKey] = "summation", [Data.Models.Metadata.Rom.TitleKey] = "title", [Data.Models.Metadata.Rom.TrackKey] = "track", @@ -938,7 +938,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Software.PartKey] = new Data.Models.Metadata.Part[] { CreateMetadataPart() }, [Data.Models.Metadata.Software.PublisherKey] = "publisher", [Data.Models.Metadata.Software.SharedFeatKey] = new Data.Models.Metadata.SharedFeat[] { CreateMetadataSharedFeat() }, - [Data.Models.Metadata.Software.SupportedKey] = true, + Supported = Data.Models.Metadata.Supported.Yes, [Data.Models.Metadata.Software.YearKey] = "year", }; } @@ -952,7 +952,7 @@ namespace SabreTools.Metadata.DatFiles.Test Name = "name", [Data.Models.Metadata.SoftwareList.NotesKey] = "notes", [Data.Models.Metadata.SoftwareList.SoftwareKey] = new Data.Models.Metadata.Software[] { CreateMetadataSoftware() }, - [Data.Models.Metadata.SoftwareList.StatusKey] = "original", + Status = Data.Models.Metadata.SoftwareListStatus.Original, [Data.Models.Metadata.SoftwareList.TagKey] = "tag", }; } @@ -1026,7 +1026,7 @@ namespace SabreTools.Metadata.DatFiles.Test [Data.Models.Metadata.Video.HeightKey] = 12345L, [Data.Models.Metadata.Video.OrientationKey] = "vertical", [Data.Models.Metadata.Video.RefreshKey] = 12345L, - [Data.Models.Metadata.Video.ScreenKey] = "vector", + Screen = Data.Models.Metadata.DisplayType.Vector, [Data.Models.Metadata.Video.WidthKey] = 12345L, }; } @@ -1038,7 +1038,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateHeader(DatHeader datHeader) { Assert.Equal("author", datHeader.ReadString(Data.Models.Metadata.Header.AuthorKey)); - Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.BiosModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.BiosMode); Assert.Equal("build", datHeader.ReadString(Data.Models.Metadata.Header.BuildKey)); Assert.Equal("ext", datHeader.ReadString(Data.Models.Metadata.Header.CanOpenKey)); Assert.Equal("category", datHeader.ReadString(Data.Models.Metadata.Header.CategoryKey)); @@ -1049,9 +1049,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("description", datHeader.ReadString(Data.Models.Metadata.Header.DescriptionKey)); Assert.Equal("email", datHeader.ReadString(Data.Models.Metadata.Header.EmailKey)); Assert.Equal("emulatorversion", datHeader.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); - Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.ForceMergingKey)); - Assert.Equal("required", datHeader.ReadString(Data.Models.Metadata.Header.ForceNodumpKey)); - Assert.Equal("zip", datHeader.ReadString(Data.Models.Metadata.Header.ForcePackingKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, datHeader.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, datHeader.ForcePacking); Assert.True(datHeader.ForceZipping); Assert.Equal("header", datHeader.ReadString(Data.Models.Metadata.Header.HeaderKey)); Assert.Equal("homepage", datHeader.ReadString(Data.Models.Metadata.Header.HomepageKey)); @@ -1068,10 +1068,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("notes", datHeader.ReadString(Data.Models.Metadata.Header.NotesKey)); Assert.Equal("plugin", datHeader.ReadString(Data.Models.Metadata.Header.PluginKey)); Assert.Equal("refname", datHeader.ReadString(Data.Models.Metadata.Header.RefNameKey)); - Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.RomModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.RomMode); Assert.Equal("romtitle", datHeader.ReadString(Data.Models.Metadata.Header.RomTitleKey)); Assert.Equal("rootdir", datHeader.ReadString(Data.Models.Metadata.Header.RootDirKey)); - Assert.Equal("merged", datHeader.ReadString(Data.Models.Metadata.Header.SampleModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.SampleMode); Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); Assert.Equal("screenshotsWidth", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); @@ -1131,7 +1131,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey)); Assert.Equal("sourcerom", machine.ReadString(Data.Models.Metadata.Machine.SourceRomKey)); Assert.Equal("status", machine.ReadString(Data.Models.Metadata.Machine.StatusKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.SupportedKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported); Assert.Equal("system", machine.ReadString(Data.Models.Metadata.Machine.SystemKey)); Assert.Equal("tags", machine.ReadString(Data.Models.Metadata.Machine.TagsKey)); Assert.Equal("year", machine.ReadString(Data.Models.Metadata.Machine.YearKey)); @@ -1179,7 +1179,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("name", chip.GetName()); Assert.True(chip.SoundOnly); Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); - Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey)); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType); } private static void ValidateCondition(Condition? condition) @@ -1187,7 +1187,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(condition); Assert.Equal("value", condition.ReadString(Data.Models.Metadata.Condition.ValueKey)); Assert.Equal("mask", condition.ReadString(Data.Models.Metadata.Condition.MaskKey)); - Assert.Equal("eq", condition.ReadString(Data.Models.Metadata.Condition.RelationKey)); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("tag", condition.ReadString(Data.Models.Metadata.Condition.TagKey)); } @@ -1242,7 +1242,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey)); Assert.True(control.Reverse); Assert.Equal(12345L, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey)); - Assert.Equal("lightgun", control.ReadString(Data.Models.Metadata.Control.ControlTypeKey)); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.ControlType); Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey)); Assert.Equal("ways2", control.ReadString(Data.Models.Metadata.Control.Ways2Key)); Assert.Equal("ways3", control.ReadString(Data.Models.Metadata.Control.Ways3Key)); @@ -1251,7 +1251,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDataArea(DataArea? dataArea) { Assert.NotNull(dataArea); - Assert.Equal("big", dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey)); + Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness); Assert.Equal("name", dataArea.GetName()); Assert.Equal(12345L, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey)); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); @@ -1264,7 +1264,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); Assert.Equal(1, device.ReadLong(Data.Models.Metadata.Device.MandatoryKey)); Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey)); - Assert.Equal("punchtape", device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey)); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); Extension[]? extensions = device.Read(Data.Models.Metadata.Device.ExtensionKey); Assert.NotNull(extensions); @@ -1359,7 +1359,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.ReadString(Data.Models.Metadata.Display.TagKey)); - Assert.Equal("vector", display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey)); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBEndKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VBStartKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.VTotalKey)); @@ -1369,17 +1369,17 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateDriver(Driver? driver) { Assert.NotNull(driver); - Assert.Equal("plain", driver.ReadString(Data.Models.Metadata.Driver.BlitKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.CocktailKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.ColorKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.EmulationKey)); + Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); Assert.True(driver.Incomplete); Assert.True(driver.NoSoundHardware); Assert.Equal("pallettesize", driver.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey)); Assert.True(driver.RequiresArtwork); - Assert.Equal("supported", driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.SoundKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.StatusKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); Assert.True(driver.Unofficial); } @@ -1393,9 +1393,9 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(feature); Assert.Equal("name", feature.GetName()); - Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.OverallKey)); - Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.StatusKey)); - Assert.Equal("protection", feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey)); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.FeatureType); Assert.Equal("value", feature.ReadString(Data.Models.Metadata.Feature.ValueKey)); } @@ -1449,9 +1449,9 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(partFeature); Assert.Equal("name", partFeature.GetName()); - Assert.Equal("imperfect", partFeature.ReadString(Data.Models.Metadata.Feature.OverallKey)); - Assert.Equal("imperfect", partFeature.ReadString(Data.Models.Metadata.Feature.StatusKey)); - Assert.Equal("protection", partFeature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey)); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, partFeature.Status); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, partFeature.FeatureType); Assert.Equal("value", partFeature.ReadString(Data.Models.Metadata.Feature.ValueKey)); Part? part = partFeature.Read(PartFeature.PartKey); @@ -1525,12 +1525,12 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(rom.Inverted); Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey)); Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey)); - Assert.Equal("load16_byte", rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey)); + Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); Assert.Equal("matrix_number", rom.ReadString(Data.Models.Metadata.Rom.MatrixNumberKey)); Assert.Equal(HashType.MD2.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); Assert.Equal(HashType.MD4.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test + Assert.Null(rom.OpenMSXMediaType); // Omit due to other test Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.True(rom.MIA); Assert.Equal("name", rom.GetName()); @@ -1563,7 +1563,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey)); - Assert.Equal("good", rom.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("summation", rom.ReadString(Data.Models.Metadata.Rom.SummationKey)); Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey)); Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey)); @@ -1628,7 +1628,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("name", softwareList.GetName()); Assert.Equal("notes", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NotesKey)); // TODO: Figure out why Data.Models.Metadata.SoftwareList.SoftwareKey doesn't get processed - Assert.Equal("original", softwareList.ReadString(Data.Models.Metadata.SoftwareList.StatusKey)); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status); Assert.Equal("tag", softwareList.ReadString(Data.Models.Metadata.SoftwareList.TagKey)); } @@ -1663,7 +1663,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(display); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectXKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Video.AspectYKey)); - Assert.Equal("vector", display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey)); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.HeightKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); Assert.Equal(12345L, display.ReadLong(Data.Models.Metadata.Display.WidthKey)); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index bb8b379e..2bfb50e0 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -374,7 +374,7 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(header); Assert.Equal("author", header.ReadString(Data.Models.Metadata.Header.AuthorKey)); - Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.BiosModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.BiosMode); Assert.Equal("build", header.ReadString(Data.Models.Metadata.Header.BuildKey)); Assert.NotNull(header.Read(Data.Models.Metadata.Header.CanOpenKey)); Assert.Equal("category", header.ReadString(Data.Models.Metadata.Header.CategoryKey)); @@ -385,9 +385,9 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("description", header.ReadString(Data.Models.Metadata.Header.DescriptionKey)); Assert.Equal("email", header.ReadString(Data.Models.Metadata.Header.EmailKey)); Assert.Equal("emulatorversion", header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); - Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.ForceMergingKey)); - Assert.Equal("required", header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey)); - Assert.Equal("zip", header.ReadString(Data.Models.Metadata.Header.ForcePackingKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, header.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, header.ForcePacking); Assert.True(header.ForceZipping); Assert.Equal("header", header.ReadString(Data.Models.Metadata.Header.HeaderKey)); Assert.Equal("homepage", header.ReadString(Data.Models.Metadata.Header.HomepageKey)); @@ -404,10 +404,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("notes", header.ReadString(Data.Models.Metadata.Header.NotesKey)); Assert.Equal("plugin", header.ReadString(Data.Models.Metadata.Header.PluginKey)); Assert.Equal("refname", header.ReadString(Data.Models.Metadata.Header.RefNameKey)); - Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.RomModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.RomMode); Assert.Equal("romtitle", header.ReadString(Data.Models.Metadata.Header.RomTitleKey)); Assert.Equal("rootdir", header.ReadString(Data.Models.Metadata.Header.RootDirKey)); - Assert.Equal("merged", header.ReadString(Data.Models.Metadata.Header.SampleModeKey)); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.SampleMode); Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); Assert.Equal("screenshotsheight", header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); Assert.Equal("screenshotsWidth", header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); @@ -466,7 +466,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("sourcefile", machine.ReadString(Data.Models.Metadata.Machine.SourceFileKey)); Assert.Equal("sourcerom", machine.ReadString(Data.Models.Metadata.Machine.SourceRomKey)); Assert.Equal("status", machine.ReadString(Data.Models.Metadata.Machine.StatusKey)); - Assert.Equal("yes", machine.ReadString(Data.Models.Metadata.Machine.SupportedKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported); Assert.Equal("system", machine.ReadString(Data.Models.Metadata.Machine.SystemKey)); Assert.Equal("tags", machine.ReadString(Data.Models.Metadata.Machine.TagsKey)); Assert.Equal("year", machine.ReadString(Data.Models.Metadata.Machine.YearKey)); @@ -686,7 +686,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("name", chip.Name); Assert.True(chip.SoundOnly); Assert.Equal("tag", chip.ReadString(Data.Models.Metadata.Chip.TagKey)); - Assert.Equal("cpu", chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey)); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.ChipType); } private static void ValidateMetadataCondition(Data.Models.Metadata.Condition? condition) @@ -694,7 +694,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(condition); Assert.Equal("value", condition.ReadString(Data.Models.Metadata.Condition.ValueKey)); Assert.Equal("mask", condition.ReadString(Data.Models.Metadata.Condition.MaskKey)); - Assert.Equal("eq", condition.ReadString(Data.Models.Metadata.Condition.RelationKey)); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("tag", condition.ReadString(Data.Models.Metadata.Condition.TagKey)); } @@ -749,7 +749,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.ReqButtonsKey)); Assert.True(control.Reverse); Assert.Equal(12345, control.ReadLong(Data.Models.Metadata.Control.SensitivityKey)); - Assert.Equal("lightgun", control.ReadString(Data.Models.Metadata.Control.ControlTypeKey)); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.ControlType); Assert.Equal("ways", control.ReadString(Data.Models.Metadata.Control.WaysKey)); Assert.Equal("ways2", control.ReadString(Data.Models.Metadata.Control.Ways2Key)); Assert.Equal("ways3", control.ReadString(Data.Models.Metadata.Control.Ways3Key)); @@ -758,7 +758,7 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDataArea(Data.Models.Metadata.DataArea? dataArea) { Assert.NotNull(dataArea); - Assert.Equal("big", dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey)); + Assert.Equal(Data.Models.Metadata.Endianness.Big, dataArea.Endianness); Assert.Equal("name", dataArea.Name); Assert.Equal(12345, dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey)); Assert.Equal(64, dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey)); @@ -776,7 +776,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("interface", device.ReadString(Data.Models.Metadata.Device.InterfaceKey)); Assert.Equal(1, device.ReadLong(Data.Models.Metadata.Device.MandatoryKey)); Assert.Equal("tag", device.ReadString(Data.Models.Metadata.Device.TagKey)); - Assert.Equal("punchtape", device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey)); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.DeviceType); Data.Models.Metadata.Extension[]? extensions = device.ReadArray(Data.Models.Metadata.Device.ExtensionKey); Assert.NotNull(extensions); @@ -876,7 +876,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.RefreshKey)); Assert.Equal(90, display.ReadLong(Data.Models.Metadata.Display.RotateKey)); Assert.Equal("tag", display.ReadString(Data.Models.Metadata.Display.TagKey)); - Assert.Equal("vector", display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey)); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBEndKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VBStartKey)); Assert.Equal(12345, display.ReadLong(Data.Models.Metadata.Display.VTotalKey)); @@ -886,17 +886,17 @@ namespace SabreTools.Metadata.DatFiles.Test private static void ValidateMetadataDriver(Data.Models.Metadata.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("plain", driver.ReadString(Data.Models.Metadata.Driver.BlitKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.CocktailKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.ColorKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.EmulationKey)); + Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); Assert.True(driver.Incomplete); Assert.True(driver.NoSoundHardware); Assert.Equal("pallettesize", driver.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey)); Assert.True(driver.RequiresArtwork); - Assert.Equal("supported", driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.SoundKey)); - Assert.Equal("good", driver.ReadString(Data.Models.Metadata.Driver.StatusKey)); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); Assert.True(driver.Unofficial); } @@ -910,9 +910,9 @@ namespace SabreTools.Metadata.DatFiles.Test { Assert.NotNull(feature); Assert.Equal("name", feature.Name); - Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.OverallKey)); - Assert.Equal("imperfect", feature.ReadString(Data.Models.Metadata.Feature.StatusKey)); - Assert.Equal("protection", feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey)); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.FeatureType); Assert.Equal("value", feature.ReadString(Data.Models.Metadata.Feature.ValueKey)); } @@ -1070,12 +1070,12 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(rom.Inverted); Assert.Equal("mtime", rom.ReadString(Data.Models.Metadata.Rom.LastModifiedTimeKey)); Assert.Equal("length", rom.ReadString(Data.Models.Metadata.Rom.LengthKey)); - Assert.Equal("load16_byte", rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey)); + Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); Assert.Equal("matrix_number", rom.ReadString(Data.Models.Metadata.Rom.MatrixNumberKey)); Assert.Equal(HashType.MD2.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD2Key)); Assert.Equal(HashType.MD4.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD4Key)); Assert.Equal(HashType.MD5.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.MD5Key)); - Assert.Null(rom.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType)); // Omit due to other test + Assert.Null(rom.OpenMSXMediaType); // Omit due to other test Assert.Equal("merge", rom.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.True(rom.MIA); Assert.Equal("name", rom.Name); @@ -1108,7 +1108,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("source", rom.ReadString(Data.Models.Metadata.Rom.SourceKey)); Assert.Equal(HashType.SpamSum.ZeroString, rom.ReadString(Data.Models.Metadata.Rom.SpamSumKey)); Assert.Equal("start", rom.ReadString(Data.Models.Metadata.Rom.StartKey)); - Assert.Equal("good", rom.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("summation", rom.ReadString(Data.Models.Metadata.Rom.SummationKey)); Assert.Equal("title", rom.ReadString(Data.Models.Metadata.Rom.TitleKey)); Assert.Equal("track", rom.ReadString(Data.Models.Metadata.Rom.TrackKey)); @@ -1191,7 +1191,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("filter", softwareList.ReadString(Data.Models.Metadata.SoftwareList.FilterKey)); Assert.Equal("name", softwareList.Name); Assert.Equal("notes", softwareList.ReadString(Data.Models.Metadata.SoftwareList.NotesKey)); - Assert.Equal("original", softwareList.ReadString(Data.Models.Metadata.SoftwareList.StatusKey)); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status); Assert.Equal("tag", softwareList.ReadString(Data.Models.Metadata.SoftwareList.TagKey)); // TODO: Figure out why Data.Models.Metadata.SoftwareList.SoftwareKey doesn't get processed @@ -1259,7 +1259,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.HeightKey)); Assert.Equal("vertical", video.ReadString(Data.Models.Metadata.Video.OrientationKey)); Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.RefreshKey)); - Assert.Equal("vector", video.ReadString(Data.Models.Metadata.Video.ScreenKey)); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal(12345, video.ReadLong(Data.Models.Metadata.Video.WidthKey)); } diff --git a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs index f5cef637..cfb8ead3 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatStatisticsTests.cs @@ -1,6 +1,4 @@ -using SabreTools.Data.Extensions; using SabreTools.Hashing; -using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using Xunit; using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus; @@ -255,7 +253,7 @@ namespace SabreTools.Metadata.DatFiles.Test { var disk = new Disk(); - disk.Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Good.AsStringValue()); + disk.Status = ItemStatus.Good; disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); @@ -301,7 +299,7 @@ namespace SabreTools.Metadata.DatFiles.Test { var rom = new Rom(); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Good.AsStringValue()); + rom.Status = ItemStatus.Good; rom.Write(Data.Models.Metadata.Rom.SizeKey, 1); rom.Write(Data.Models.Metadata.Rom.CRC16Key, HashType.CRC16.ZeroString); rom.Write(Data.Models.Metadata.Rom.CRCKey, HashType.CRC32.ZeroString); diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs index 5981ecc4..2e64dcb6 100644 --- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs @@ -185,7 +185,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Chip.ChipTypeKey, + nameof(Data.Models.Metadata.Chip.ChipType), nameof(Data.Models.Metadata.Chip.Name), ])); } @@ -200,7 +200,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Display.DisplayTypeKey, + nameof(Data.Models.Metadata.Display.DisplayType), Data.Models.Metadata.Display.RotateKey, ])); } @@ -258,8 +258,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Driver.StatusKey, - Data.Models.Metadata.Driver.EmulationKey, + nameof(Data.Models.Metadata.Driver.Status), + nameof(Data.Models.Metadata.Driver.Emulation), ])); } @@ -865,7 +865,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ nameof(Data.Models.Metadata.Chip.Name), - Data.Models.Metadata.Chip.ChipTypeKey, + nameof(Data.Models.Metadata.Chip.ChipType), ])); } @@ -879,7 +879,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Display.DisplayTypeKey, + nameof(Data.Models.Metadata.Display.DisplayType), Data.Models.Metadata.Display.RefreshKey, ])); } @@ -980,10 +980,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Driver.StatusKey, - Data.Models.Metadata.Driver.EmulationKey, - Data.Models.Metadata.Driver.CocktailKey, - Data.Models.Metadata.Driver.SaveStateKey, + nameof(Data.Models.Metadata.Driver.Status), + nameof(Data.Models.Metadata.Driver.Emulation), + nameof(Data.Models.Metadata.Driver.Cocktail), + nameof(Data.Models.Metadata.Driver.SaveState), ])); } @@ -997,7 +997,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Feature.FeatureTypeKey, + nameof(Data.Models.Metadata.Feature.FeatureType), ])); } @@ -1011,7 +1011,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Device.DeviceTypeKey, + nameof(Data.Models.Metadata.Device.DeviceType), ])); } @@ -1041,7 +1041,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ Data.Models.Metadata.SoftwareList.TagKey, nameof(Data.Models.Metadata.SoftwareList.Name), - Data.Models.Metadata.SoftwareList.StatusKey, + nameof(Data.Models.Metadata.SoftwareList.Status), ])); } @@ -1210,10 +1210,10 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.NotNull(actual); Assert.True(actual.SequenceEqual([ - Data.Models.Metadata.Driver.StatusKey, - Data.Models.Metadata.Driver.EmulationKey, - Data.Models.Metadata.Driver.CocktailKey, - Data.Models.Metadata.Driver.SaveStateKey, + nameof(Data.Models.Metadata.Driver.Status), + nameof(Data.Models.Metadata.Driver.Emulation), + nameof(Data.Models.Metadata.Driver.Cocktail), + nameof(Data.Models.Metadata.Driver.SaveState), ])); } @@ -1229,7 +1229,7 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.True(actual.SequenceEqual([ Data.Models.Metadata.SoftwareList.TagKey, nameof(Data.Models.Metadata.SoftwareList.Name), - Data.Models.Metadata.SoftwareList.StatusKey, + nameof(Data.Models.Metadata.SoftwareList.Status), ])); } diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs index 03f630f9..a0881d41 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryDBTests.cs @@ -26,8 +26,9 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(disk, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Disk); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Disk.StatusKey)); + Disk? actualDisk = actual as Disk; + Assert.NotNull(actualDisk); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualDisk.Status); } [Fact] @@ -45,8 +46,9 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(disk, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Disk); - Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Disk.StatusKey)); + Disk? actualDisk = actual as Disk; + Assert.NotNull(actualDisk); + Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualDisk.Status); } [Fact] @@ -144,10 +146,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] @@ -166,10 +169,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status); } [Fact] @@ -188,10 +192,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Null(actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] @@ -209,10 +214,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, machineIndex, sourceIndex, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")).Value; - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(0, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] diff --git a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs index 6b6bbd25..5df8f9c2 100644 --- a/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.Metadata.DatFiles.Test/ItemDictionaryTests.cs @@ -26,8 +26,9 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(disk, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Disk); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Disk.StatusKey)); + Disk? actualDisk = actual as Disk; + Assert.NotNull(actualDisk); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualDisk.Status); } [Fact] @@ -45,8 +46,9 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(disk, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Disk); - Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Disk.StatusKey)); + Disk? actualDisk = actual as Disk; + Assert.NotNull(actualDisk); + Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualDisk.Status); } [Fact] @@ -66,7 +68,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Assert.True(actual is File); - //Assert.Equal("none", actual.GetStringFieldValue(File.StatusKey)); + //Assert.Equal(ItemStatus.None, actual.GetStringFieldValue(File.StatusKey)); } [Fact] @@ -85,7 +87,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Assert.True(actual is File); - //Assert.Equal("nodump", actual.GetStringFieldValue(File.StatusKey)); + //Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actual.GetStringFieldValue(File.StatusKey)); } [Fact] @@ -105,7 +107,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Assert.True(actual is Media); - //Assert.Equal("none", actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey)); + //Assert.Equal(ItemStatus.None, actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey)); } [Fact] @@ -124,7 +126,7 @@ namespace SabreTools.Metadata.DatFiles.Test DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); Assert.True(actual is Media); - //Assert.Equal("nodump", actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey)); + //Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actual.GetStringFieldValue(Data.Models.Metadata.Media.StatusKey)); } [Fact] @@ -144,10 +146,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] @@ -166,10 +169,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(12345, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Null(actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("nodump", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Nodump, actualRom.Status); } [Fact] @@ -188,10 +192,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Null(actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal("deadbeef", actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] @@ -209,10 +214,11 @@ namespace SabreTools.Metadata.DatFiles.Test _ = dict.AddItem(rom, statsOnly: false); DatItem actual = Assert.Single(dict.GetItemsForBucket("default")); - Assert.True(actual is Rom); + Rom? actualRom = actual as Rom; + Assert.NotNull(actualRom); Assert.Equal(0, actual.ReadLong(Data.Models.Metadata.Rom.SizeKey)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); - Assert.Equal("none", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.None, actualRom.Status); } [Fact] diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index cf262850..25c241ac 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using SabreTools.Metadata.Filter; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; -using SabreTools.Data.Extensions; using MergingFlag = SabreTools.Data.Models.Metadata.MergingFlag; using NodumpFlag = SabreTools.Data.Models.Metadata.NodumpFlag; using PackingFlag = SabreTools.Data.Models.Metadata.PackingFlag; @@ -93,8 +92,8 @@ namespace SabreTools.Metadata.DatFiles // Selectively set all possible fields -- TODO: Figure out how to make this less manual if (Header.ReadString(Data.Models.Metadata.Header.AuthorKey) is null) Header.Write(Data.Models.Metadata.Header.AuthorKey, header.ReadString(Data.Models.Metadata.Header.AuthorKey)); - if (Header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag() == MergingFlag.None) - Header.Write(Data.Models.Metadata.Header.BiosModeKey, header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag().AsStringValue()); + if (Header.BiosMode == MergingFlag.None) + Header.BiosMode = header.BiosMode; if (Header.ReadString(Data.Models.Metadata.Header.BuildKey) is null) Header.Write(Data.Models.Metadata.Header.BuildKey, header.ReadString(Data.Models.Metadata.Header.BuildKey)); if (Header.ReadString(Data.Models.Metadata.Header.CategoryKey) is null) @@ -113,12 +112,12 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.EmailKey, header.ReadString(Data.Models.Metadata.Header.EmailKey)); if (Header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey) is null) Header.Write(Data.Models.Metadata.Header.EmulatorVersionKey, header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey)); - if (Header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag() == MergingFlag.None) - Header.Write(Data.Models.Metadata.Header.ForceMergingKey, header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag().AsStringValue()); - if (Header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag() == NodumpFlag.None) - Header.Write(Data.Models.Metadata.Header.ForceNodumpKey, header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag().AsStringValue()); - if (Header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None) - Header.Write(Data.Models.Metadata.Header.ForcePackingKey, header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag().AsStringValue()); + if (Header.ForceMerging == MergingFlag.None) + Header.ForceMerging = header.ForceMerging; + if (Header.ForceNodump == NodumpFlag.None) + Header.ForceNodump = header.ForceNodump; + if (Header.ForcePacking == PackingFlag.None) + Header.ForcePacking = header.ForcePacking; if (Header.ForceZipping is null) Header.ForceZipping = header.ForceZipping; if (Header.ReadString(Data.Models.Metadata.Header.HeaderKey) is null) @@ -145,14 +144,14 @@ namespace SabreTools.Metadata.DatFiles Header.Write(Data.Models.Metadata.Header.PluginKey, header.ReadString(Data.Models.Metadata.Header.PluginKey)); if (Header.ReadString(Data.Models.Metadata.Header.RefNameKey) is null) Header.Write(Data.Models.Metadata.Header.RefNameKey, header.ReadString(Data.Models.Metadata.Header.RefNameKey)); - if (Header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag() == MergingFlag.None) - Header.Write(Data.Models.Metadata.Header.RomModeKey, header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag().AsStringValue()); + if (Header.RomMode == MergingFlag.None) + Header.RomMode = header.RomMode; if (Header.ReadString(Data.Models.Metadata.Header.RomTitleKey) is null) Header.Write(Data.Models.Metadata.Header.RomTitleKey, header.ReadString(Data.Models.Metadata.Header.RomTitleKey)); if (Header.ReadString(Data.Models.Metadata.Header.RootDirKey) is null) Header.Write(Data.Models.Metadata.Header.RootDirKey, header.ReadString(Data.Models.Metadata.Header.RootDirKey)); - if (Header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag() == MergingFlag.None) - Header.Write(Data.Models.Metadata.Header.SampleModeKey, header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag().AsStringValue()); + if (Header.SampleMode == MergingFlag.None) + Header.SampleMode = header.SampleMode; if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null) Header.Write(Data.Models.Metadata.Header.SchemaLocationKey, header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey) is null) @@ -613,10 +612,10 @@ namespace SabreTools.Metadata.DatFiles long? size = romItem.ReadLong(Data.Models.Metadata.Rom.SizeKey); // If the rom is a continue or ignore - string? loadFlag = rom.ReadString(Data.Models.Metadata.Rom.LoadFlagKey); + Data.Models.Metadata.LoadFlag? loadFlag = rom.LoadFlag; if (loadFlag is not null - && (loadFlag.Equals("continue", StringComparison.OrdinalIgnoreCase) - || loadFlag.Equals("ignore", StringComparison.OrdinalIgnoreCase))) + && (loadFlag == Data.Models.Metadata.LoadFlag.Continue + || loadFlag == Data.Models.Metadata.LoadFlag.Ignore)) { var lastRom = addRoms[addRoms.Count - 1]; long? lastSize = lastRom.ReadLong(Data.Models.Metadata.Rom.SizeKey); diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 27ebcece..723739b0 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -358,7 +358,7 @@ namespace SabreTools.Metadata.DatFiles else { aggregateDataArea = []; - aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey); + aggregateDataArea.Endianness = dataArea.Endianness; aggregateDataArea.Name = dataArea.Name; aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey); aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey); @@ -784,7 +784,7 @@ namespace SabreTools.Metadata.DatFiles else { aggregateDataArea = []; - aggregateDataArea[Data.Models.Metadata.DataArea.EndiannessKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey); + aggregateDataArea.Endianness = dataArea.Endianness; aggregateDataArea.Name = dataArea.Name; aggregateDataArea[Data.Models.Metadata.DataArea.SizeKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.SizeKey); aggregateDataArea[Data.Models.Metadata.DataArea.WidthKey] = dataArea.ReadString(Data.Models.Metadata.DataArea.WidthKey); @@ -937,7 +937,7 @@ namespace SabreTools.Metadata.DatFiles [Data.Models.Metadata.Video.AspectYKey] = displayItem.ReadLong(Data.Models.Metadata.Video.AspectYKey).ToString(), [Data.Models.Metadata.Video.HeightKey] = displayItem.ReadLong(Data.Models.Metadata.Display.HeightKey).ToString(), [Data.Models.Metadata.Video.RefreshKey] = displayItem.ReadDouble(Data.Models.Metadata.Display.RefreshKey).ToString(), - [Data.Models.Metadata.Video.ScreenKey] = displayItem.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType()?.AsStringValue(), + Screen = displayItem.DisplayType, [Data.Models.Metadata.Video.WidthKey] = displayItem.ReadLong(Data.Models.Metadata.Display.WidthKey).ToString() }; @@ -977,7 +977,7 @@ namespace SabreTools.Metadata.DatFiles var romItem = item.GetInternalClone(); // Create a Dump for every Rom that has a subtype - switch (romItem.ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType).AsOpenMSXSubType()) + switch (romItem.OpenMSXMediaType) { case OpenMSXSubType.Rom: var dumpRom = new Data.Models.Metadata.Dump(); diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 430fab85..da81e620 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -37,6 +37,12 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Name = value; } + public MergingFlag BiosMode + { + get => _internal.BiosMode; + set => _internal.BiosMode = value; + } + [JsonIgnore] public bool CanOpenSpecified { @@ -53,6 +59,24 @@ namespace SabreTools.Metadata.DatFiles set => _internal.Debug = value; } + public MergingFlag ForceMerging + { + get => _internal.ForceMerging; + set => _internal.ForceMerging = value; + } + + public NodumpFlag ForceNodump + { + get => _internal.ForceNodump; + set => _internal.ForceNodump = value; + } + + public PackingFlag ForcePacking + { + get => _internal.ForcePacking; + set => _internal.ForcePacking = value; + } + public bool? ForceZipping { get => _internal.ForceZipping; @@ -104,6 +128,18 @@ namespace SabreTools.Metadata.DatFiles } } + public MergingFlag RomMode + { + get => _internal.RomMode; + set => _internal.RomMode = value; + } + + public MergingFlag SampleMode + { + get => _internal.SampleMode; + set => _internal.SampleMode = value; + } + [JsonIgnore] public bool SearchSpecified { @@ -152,20 +188,6 @@ namespace SabreTools.Metadata.DatFiles { var header = (_internal.Clone() as Data.Models.Metadata.Header)!; - // Remove fields with default values - if (header.ReadString(Data.Models.Metadata.Header.ForceMergingKey).AsMergingFlag() == MergingFlag.None) - header.Remove(Data.Models.Metadata.Header.ForceMergingKey); - if (header.ReadString(Data.Models.Metadata.Header.ForceNodumpKey).AsNodumpFlag() == NodumpFlag.None) - header.Remove(Data.Models.Metadata.Header.ForceNodumpKey); - if (header.ReadString(Data.Models.Metadata.Header.ForcePackingKey).AsPackingFlag() == PackingFlag.None) - header.Remove(Data.Models.Metadata.Header.ForcePackingKey); - if (header.ReadString(Data.Models.Metadata.Header.BiosModeKey).AsMergingFlag() == MergingFlag.None) - header.Remove(Data.Models.Metadata.Header.BiosModeKey); - if (header.ReadString(Data.Models.Metadata.Header.RomModeKey).AsMergingFlag() == MergingFlag.None) - header.Remove(Data.Models.Metadata.Header.RomModeKey); - if (header.ReadString(Data.Models.Metadata.Header.SampleModeKey).AsMergingFlag() == MergingFlag.None) - header.Remove(Data.Models.Metadata.Header.SampleModeKey); - // Convert subheader values if (CanOpenSpecified) header[Data.Models.Metadata.Header.CanOpenKey] = new Data.Models.OfflineList.CanOpen { Extension = ReadStringArray(Data.Models.Metadata.Header.CanOpenKey) }; diff --git a/SabreTools.Metadata.DatFiles/DatStatistics.cs b/SabreTools.Metadata.DatFiles/DatStatistics.cs index ec010b03..496ea3ec 100644 --- a/SabreTools.Metadata.DatFiles/DatStatistics.cs +++ b/SabreTools.Metadata.DatFiles/DatStatistics.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using SabreTools.Data.Extensions; using SabreTools.Hashing; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; @@ -408,7 +407,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to add info from private void AddItemStatistics(Disk disk) { - ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus(); + ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); @@ -427,7 +426,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to add info from private void AddItemStatistics(Data.Models.Metadata.Disk disk) { - ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus(); + ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); @@ -483,7 +482,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to add info from private void AddItemStatistics(Rom rom) { - ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); + ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; @@ -514,7 +513,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to add info from private void AddItemStatistics(Data.Models.Metadata.Rom rom) { - ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); + ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { TotalSize += rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; @@ -599,7 +598,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to remove info for private void RemoveItemStatistics(Disk disk) { - ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus(); + ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); @@ -618,7 +617,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to remove info for private void RemoveItemStatistics(Data.Models.Metadata.Disk disk) { - ItemStatus? status = disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus(); + ItemStatus? status = disk.Status; if (status != ItemStatus.Nodump) { RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1); @@ -674,7 +673,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to remove info for private void RemoveItemStatistics(Rom rom) { - ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); + ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; @@ -705,7 +704,7 @@ namespace SabreTools.Metadata.DatFiles /// Item to remove info for private void RemoveItemStatistics(Data.Models.Metadata.Rom rom) { - ItemStatus? status = rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); + ItemStatus? status = rom.Status; if (status != ItemStatus.Nodump) { TotalSize -= rom.ReadLong(Data.Models.Metadata.Rom.SizeKey) ?? 0; diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs index 7c644f29..1da9a687 100644 --- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs @@ -1,6 +1,5 @@ -using System; +using System; using System.Collections.Generic; -using SabreTools.Data.Extensions; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using SabreTools.Metadata.Filter; @@ -134,15 +133,15 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Chip chip: - if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null) - missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey); + if (chip.ChipType is null) + missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType)); if (string.IsNullOrEmpty(chip.GetName())) missingFields.Add(nameof(Data.Models.Metadata.Chip.Name)); break; case Display display: - if (display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType() is null) - missingFields.Add(Data.Models.Metadata.Display.DisplayTypeKey); + if (display.DisplayType is null) + missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType)); if (display.ReadLong(Data.Models.Metadata.Display.RotateKey) is null) missingFields.Add(Data.Models.Metadata.Display.RotateKey); break; @@ -165,10 +164,10 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Driver driver: - if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.StatusKey); - if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.EmulationKey); + if (driver.Status is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Status)); + if (driver.Emulation is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation)); break; default: diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs index 76b6a78b..57f61836 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using SabreTools.Data.Extensions; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; using SabreTools.Metadata.Filter; @@ -304,13 +303,13 @@ namespace SabreTools.Metadata.DatFiles.Formats case Chip chip: if (string.IsNullOrEmpty(chip.GetName())) missingFields.Add(nameof(Data.Models.Metadata.Chip.Name)); - if (chip.ReadString(Data.Models.Metadata.Chip.ChipTypeKey).AsChipType() is null) - missingFields.Add(Data.Models.Metadata.Chip.ChipTypeKey); + if (chip.ChipType is null) + missingFields.Add(nameof(Data.Models.Metadata.Chip.ChipType)); break; case Display display: - if (display.ReadString(Data.Models.Metadata.Display.DisplayTypeKey).AsDisplayType() is null) - missingFields.Add(Data.Models.Metadata.Display.DisplayTypeKey); + if (display.DisplayType is null) + missingFields.Add(nameof(Data.Models.Metadata.Display.DisplayType)); if (display.ReadDouble(Data.Models.Metadata.Display.RefreshKey) is null) missingFields.Add(Data.Models.Metadata.Display.RefreshKey); break; @@ -350,24 +349,24 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Driver driver: - if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.StatusKey); - if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.EmulationKey); - if (driver.ReadString(Data.Models.Metadata.Driver.CocktailKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.CocktailKey); - if (driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.SaveStateKey); + if (driver.Status is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Status)); + if (driver.Emulation is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation)); + if (driver.Cocktail is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Cocktail)); + if (driver.SaveState is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.SaveState)); break; case Feature feature: - if (feature.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey).AsFeatureType() is null) - missingFields.Add(Data.Models.Metadata.Feature.FeatureTypeKey); + if (feature.FeatureType is null) + missingFields.Add(nameof(Data.Models.Metadata.Feature.FeatureType)); break; case Device device: - if (device.ReadString(Data.Models.Metadata.Device.DeviceTypeKey).AsDeviceType() is null) - missingFields.Add(Data.Models.Metadata.Device.DeviceTypeKey); + if (device.DeviceType is null) + missingFields.Add(nameof(Data.Models.Metadata.Device.DeviceType)); break; case Slot slot: @@ -380,8 +379,8 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey); if (string.IsNullOrEmpty(softwarelist.GetName())) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); - if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null) - missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey); + if (softwarelist.Status == null) + missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status)); break; case RamOption ramoption: diff --git a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs index 48c8b7f5..6282e4b3 100644 --- a/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs +++ b/SabreTools.Metadata.DatFiles/Formats/Logiqx.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using SabreTools.Data.Extensions; using SabreTools.Metadata.DatItems; using SabreTools.Metadata.DatItems.Formats; @@ -344,14 +343,14 @@ namespace SabreTools.Metadata.DatFiles.Formats break; case Driver driver: - if (driver.ReadString(Data.Models.Metadata.Driver.StatusKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.StatusKey); - if (driver.ReadString(Data.Models.Metadata.Driver.EmulationKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.EmulationKey); - if (driver.ReadString(Data.Models.Metadata.Driver.CocktailKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.CocktailKey); - if (driver.ReadString(Data.Models.Metadata.Driver.SaveStateKey).AsSupportStatus() is null) - missingFields.Add(Data.Models.Metadata.Driver.SaveStateKey); + if (driver.Status is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Status)); + if (driver.Emulation is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Emulation)); + if (driver.Cocktail is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.Cocktail)); + if (driver.SaveState is null) + missingFields.Add(nameof(Data.Models.Metadata.Driver.SaveState)); break; case DatItems.Formats.SoftwareList softwarelist: @@ -359,8 +358,8 @@ namespace SabreTools.Metadata.DatFiles.Formats missingFields.Add(Data.Models.Metadata.SoftwareList.TagKey); if (string.IsNullOrEmpty(softwarelist.GetName())) missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Name)); - if (softwarelist.ReadString(Data.Models.Metadata.SoftwareList.StatusKey).AsSoftwareListStatus() == null) - missingFields.Add(Data.Models.Metadata.SoftwareList.StatusKey); + if (softwarelist.Status == null) + missingFields.Add(nameof(Data.Models.Metadata.SoftwareList.Status)); break; default: diff --git a/SabreTools.Metadata.DatFiles/ItemDictionary.cs b/SabreTools.Metadata.DatFiles/ItemDictionary.cs index 4ab04d2e..2f023446 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionary.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionary.cs @@ -14,7 +14,6 @@ using SabreTools.Hashing; using SabreTools.Logging; using SabreTools.Text.Compare; using SabreTools.Text.Extensions; -using SabreTools.Data.Extensions; using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus; namespace SabreTools.Metadata.DatFiles @@ -99,12 +98,12 @@ namespace SabreTools.Metadata.DatFiles if (item is Disk disk) { // If the file has aboslutely no hashes, skip and log - if (disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() != ItemStatus.Nodump + if (disk.Status != ItemStatus.Nodump && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) { _logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump"); - disk.Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Nodump.AsStringValue()); + disk.Status = ItemStatus.Nodump; } item = disk; @@ -167,19 +166,19 @@ namespace SabreTools.Metadata.DatFiles } // If the file has no size and it's not the above case, skip and log - else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump && (size == 0 || size is null)) + else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null)) { //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue()); + rom.Status = ItemStatus.Nodump; } // If the file has a size but aboslutely no hashes, skip and log - else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump + else if (rom.Status != ItemStatus.Nodump && size is not null && size > 0 && !rom.HasHashes()) { //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue()); + rom.Status = ItemStatus.Nodump; } item = rom; @@ -497,13 +496,13 @@ namespace SabreTools.Metadata.DatFiles continue; // If it's a nodump, add and skip - if (datItem is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() == ItemStatus.Nodump) + if (datItem is Rom rom && rom.Status == ItemStatus.Nodump) { output.Add(datItem); nodumpCount++; continue; } - else if (datItem is Disk disk && disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() == ItemStatus.Nodump) + else if (datItem is Disk disk && disk.Status == ItemStatus.Nodump) { output.Add(datItem); nodumpCount++; diff --git a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs index 91813283..83080589 100644 --- a/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs +++ b/SabreTools.Metadata.DatFiles/ItemDictionaryDB.cs @@ -16,7 +16,6 @@ using SabreTools.Hashing; using SabreTools.Logging; using SabreTools.Text.Compare; using SabreTools.Text.Extensions; -using SabreTools.Data.Extensions; using ItemStatus = SabreTools.Data.Models.Metadata.ItemStatus; /* @@ -188,12 +187,12 @@ namespace SabreTools.Metadata.DatFiles if (item is Disk disk) { // If the file has aboslutely no hashes, skip and log - if (disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() != ItemStatus.Nodump + if (disk.Status != ItemStatus.Nodump && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) && string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key))) { _logger.Verbose($"Incomplete entry for '{disk.GetName()}' will be output as nodump"); - disk.Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.Nodump.AsStringValue()); + disk.Status = ItemStatus.Nodump; } item = disk; @@ -256,19 +255,19 @@ namespace SabreTools.Metadata.DatFiles } // If the file has no size and it's not the above case, skip and log - else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump && (size == 0 || size is null)) + else if (rom.Status != ItemStatus.Nodump && (size == 0 || size is null)) { //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue()); + rom.Status = ItemStatus.Nodump; } // If the file has a size but aboslutely no hashes, skip and log - else if (rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() != ItemStatus.Nodump + else if (rom.Status != ItemStatus.Nodump && size is not null && size > 0 && !rom.HasHashes()) { //logger.Verbose($"{Header.GetStringFieldValue(DatHeader.FileNameKey)}: Incomplete entry for '{rom.GetName()}' will be output as nodump"); - rom.Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.Nodump.AsStringValue()); + rom.Status = ItemStatus.Nodump; } item = rom; @@ -873,13 +872,13 @@ namespace SabreTools.Metadata.DatFiles continue; // If it's a nodump, add and skip - if (datItem is Rom rom && rom.ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus() == ItemStatus.Nodump) + if (datItem is Rom rom && rom.Status == ItemStatus.Nodump) { output.Add(new KeyValuePair(itemIndex, datItem)); nodumpCount++; continue; } - else if (datItem is Disk disk && disk.ReadString(Data.Models.Metadata.Disk.StatusKey).AsItemStatus() == ItemStatus.Nodump) + else if (datItem is Disk disk && disk.Status == ItemStatus.Nodump) { output.Add(new KeyValuePair(itemIndex, datItem)); nodumpCount++; diff --git a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs index 643d5ca9..ba31f655 100644 --- a/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs +++ b/SabreTools.Metadata.DatItems.Test/Formats/DiskTests.cs @@ -26,7 +26,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test disk.Write(Disk.DiskAreaKey, diskArea); disk.Write(Data.Models.Metadata.Disk.MergeKey, "XXXXXX"); disk.Write(Data.Models.Metadata.Disk.RegionKey, "XXXXXX"); - disk.Write(Data.Models.Metadata.Disk.StatusKey, "good"); + disk.Status = Data.Models.Metadata.ItemStatus.Good; disk.Optional = true; disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString); disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString); @@ -41,7 +41,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test Assert.Equal("XXXXXX.chd", actual.GetName()); Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.MergeKey)); Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.RegionKey)); - Assert.Equal("good", actual.ReadString(Data.Models.Metadata.Rom.StatusKey)); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, actual.Status); Assert.Equal(true, actual.Optional); Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key)); Assert.Equal(HashType.SHA1.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.SHA1Key)); diff --git a/SabreTools.Metadata.DatItems/Formats/Chip.cs b/SabreTools.Metadata.DatItems/Formats/Chip.cs index 753d295f..4546ef29 100644 --- a/SabreTools.Metadata.DatItems/Formats/Chip.cs +++ b/SabreTools.Metadata.DatItems/Formats/Chip.cs @@ -12,7 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields - [JsonIgnore] + public Data.Models.Metadata.ChipType? ChipType + { + get => (_internal as Data.Models.Metadata.Chip)?.ChipType; + set => (_internal as Data.Models.Metadata.Chip)?.ChipType = value; + } + public bool? SoundOnly { get => (_internal as Data.Models.Metadata.Chip)?.SoundOnly; @@ -25,13 +30,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Chip() : base() { } - public Chip(Data.Models.Metadata.Chip item) : base(item) - { - // Process flag values - string? chipType = ReadString(Data.Models.Metadata.Chip.ChipTypeKey); - if (chipType is not null) - Write(Data.Models.Metadata.Chip.ChipTypeKey, chipType.AsChipType()?.AsStringValue()); - } + public Chip(Data.Models.Metadata.Chip item) : base(item) { } public Chip(Data.Models.Metadata.Chip item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/Condition.cs b/SabreTools.Metadata.DatItems/Formats/Condition.cs index 93157cc2..d0d0da55 100644 --- a/SabreTools.Metadata.DatItems/Formats/Condition.cs +++ b/SabreTools.Metadata.DatItems/Formats/Condition.cs @@ -10,17 +10,21 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("condition"), XmlRoot("condition")] public sealed class Condition : DatItem { + #region Fields + + public Data.Models.Metadata.Relation? Relation + { + get => (_internal as Data.Models.Metadata.Condition)?.Relation; + set => (_internal as Data.Models.Metadata.Condition)?.Relation = value; + } + + #endregion + #region Constructors public Condition() : base() { } - public Condition(Data.Models.Metadata.Condition item) : base(item) - { - // Process flag values - string? condition = ReadString(Data.Models.Metadata.Condition.RelationKey); - if (condition is not null) - Write(Data.Models.Metadata.Condition.RelationKey, condition.AsRelation()?.AsStringValue()); - } + public Condition(Data.Models.Metadata.Condition item) : base(item) { } public Condition(Data.Models.Metadata.Condition item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/Control.cs b/SabreTools.Metadata.DatItems/Formats/Control.cs index 1c9c611f..b4eb740e 100644 --- a/SabreTools.Metadata.DatItems/Formats/Control.cs +++ b/SabreTools.Metadata.DatItems/Formats/Control.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Data.Models.Metadata.ControlType? ControlType + { + get => (_internal as Data.Models.Metadata.Control)?.ControlType; + set => (_internal as Data.Models.Metadata.Control)?.ControlType = value; + } + public bool? Reverse { get => (_internal as Data.Models.Metadata.Control)?.Reverse; @@ -54,10 +60,6 @@ namespace SabreTools.Metadata.DatItems.Formats long? sensitivity = ReadLong(Data.Models.Metadata.Control.SensitivityKey); if (sensitivity is not null) Write(Data.Models.Metadata.Control.SensitivityKey, sensitivity.ToString()); - - string? controlType = ReadString(Data.Models.Metadata.Control.ControlTypeKey); - if (controlType is not null) - Write(Data.Models.Metadata.Control.ControlTypeKey, controlType.AsControlType()?.AsStringValue()); } public Control(Data.Models.Metadata.Control item, Machine machine, Source source) : this(item) diff --git a/SabreTools.Metadata.DatItems/Formats/DataArea.cs b/SabreTools.Metadata.DatItems/Formats/DataArea.cs index 1dd9191e..ef25cc90 100644 --- a/SabreTools.Metadata.DatItems/Formats/DataArea.cs +++ b/SabreTools.Metadata.DatItems/Formats/DataArea.cs @@ -11,6 +11,16 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("dataarea"), XmlRoot("dataarea")] public sealed class DataArea : DatItem { + #region Fields + + public Data.Models.Metadata.Endianness? Endianness + { + get => (_internal as Data.Models.Metadata.DataArea)?.Endianness; + set => (_internal as Data.Models.Metadata.DataArea)?.Endianness = value; + } + + #endregion + #region Constructors public DataArea() : base() { } @@ -18,10 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats public DataArea(Data.Models.Metadata.DataArea item) : base(item) { // Process flag values - string? endianness = ReadString(Data.Models.Metadata.DataArea.EndiannessKey); - if (endianness is not null) - Write(Data.Models.Metadata.DataArea.EndiannessKey, endianness.AsEndianness()?.AsStringValue()); - long? size = ReadLong(Data.Models.Metadata.DataArea.SizeKey); if (size is not null) Write(Data.Models.Metadata.DataArea.SizeKey, size.ToString()); diff --git a/SabreTools.Metadata.DatItems/Formats/Device.cs b/SabreTools.Metadata.DatItems/Formats/Device.cs index 3c95b8d8..57ce5981 100644 --- a/SabreTools.Metadata.DatItems/Formats/Device.cs +++ b/SabreTools.Metadata.DatItems/Formats/Device.cs @@ -13,6 +13,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Data.Models.Metadata.DeviceType? DeviceType + { + get => (_internal as Data.Models.Metadata.Device)?.DeviceType; + set => (_internal as Data.Models.Metadata.Device)?.DeviceType = value; + } + [JsonIgnore] public bool InstancesSpecified { @@ -46,10 +52,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (mandatory is not null) Write(Data.Models.Metadata.Device.MandatoryKey, mandatory.FromYesNo()); - string? deviceType = ReadString(Data.Models.Metadata.Device.DeviceTypeKey); - if (deviceType is not null) - Write(Data.Models.Metadata.Device.DeviceTypeKey, deviceType.AsDeviceType()?.AsStringValue()); - // Handle subitems var instance = item.Read(Data.Models.Metadata.Device.InstanceKey); if (instance is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/Disk.cs b/SabreTools.Metadata.DatItems/Formats/Disk.cs index b3510c18..7a2e3d81 100644 --- a/SabreTools.Metadata.DatItems/Formats/Disk.cs +++ b/SabreTools.Metadata.DatItems/Formats/Disk.cs @@ -1,4 +1,4 @@ -using System.Xml.Serialization; +using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; using SabreTools.Data.Models.Metadata; @@ -56,6 +56,12 @@ namespace SabreTools.Metadata.DatItems.Formats } } + public ItemStatus? Status + { + get => (_internal as Data.Models.Metadata.Disk)?.Status; + set => (_internal as Data.Models.Metadata.Disk)?.Status = value; + } + public bool? Writable { get => (_internal as Data.Models.Metadata.Disk)?.Writable; @@ -69,18 +75,13 @@ namespace SabreTools.Metadata.DatItems.Formats public Disk() : base() { Write(DupeTypeKey, 0x00); - Write(Data.Models.Metadata.Disk.StatusKey, ItemStatus.None.AsStringValue()); + Status = ItemStatus.None; } public Disk(Data.Models.Metadata.Disk item) : base(item) { Write(DupeTypeKey, 0x00); - // Process flag values - string? status = ReadString(Data.Models.Metadata.Disk.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Disk.StatusKey, status.AsItemStatus()?.AsStringValue()); - // Process hash values string? md5 = ReadString(Data.Models.Metadata.Disk.MD5Key); if (md5 is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/Display.cs b/SabreTools.Metadata.DatItems/Formats/Display.cs index c3462fa7..3cf87591 100644 --- a/SabreTools.Metadata.DatItems/Formats/Display.cs +++ b/SabreTools.Metadata.DatItems/Formats/Display.cs @@ -13,6 +13,12 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Data.Models.Metadata.DisplayType? DisplayType + { + get => (_internal as Data.Models.Metadata.Display)?.DisplayType; + set => (_internal as Data.Models.Metadata.Display)?.DisplayType = value; + } + public bool? FlipX { get => (_internal as Data.Models.Metadata.Display)?.FlipX; @@ -56,10 +62,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (rotate is not null) Write(Data.Models.Metadata.Display.RotateKey, rotate.ToString()); - string? displayType = ReadString(Data.Models.Metadata.Display.DisplayTypeKey); - if (displayType is not null) - Write(Data.Models.Metadata.Display.DisplayTypeKey, displayType.AsDisplayType()?.AsStringValue()); - long? vbEnd = ReadLong(Data.Models.Metadata.Display.VBEndKey); if (vbEnd is not null) Write(Data.Models.Metadata.Display.VBEndKey, vbEnd.ToString()); @@ -88,7 +90,7 @@ namespace SabreTools.Metadata.DatItems.Formats // TODO: Convert this block to more traditional set of if/then Write(Data.Models.Metadata.Video.AspectXKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectXKey))); Write(Data.Models.Metadata.Video.AspectYKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.AspectYKey))); - Write(Data.Models.Metadata.Display.DisplayTypeKey, item.ReadString(Data.Models.Metadata.Video.ScreenKey).AsDisplayType()?.AsStringValue()); + DisplayType = item.Screen; Write(Data.Models.Metadata.Display.HeightKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.HeightKey))); Write(Data.Models.Metadata.Display.RefreshKey, NumberHelper.ConvertToDouble(item.ReadString(Data.Models.Metadata.Video.RefreshKey))); Write(Data.Models.Metadata.Display.WidthKey, NumberHelper.ConvertToInt64(item.ReadString(Data.Models.Metadata.Video.WidthKey))); @@ -123,10 +125,6 @@ namespace SabreTools.Metadata.DatItems.Formats if (refresh is not null) Write(Data.Models.Metadata.Display.RefreshKey, refresh.ToString()); - string? screen = ReadString(Data.Models.Metadata.Video.ScreenKey); - if (screen is not null) - Write(Data.Models.Metadata.Display.DisplayTypeKey, screen.AsDisplayType()?.AsStringValue()); - long? width = ReadLong(Data.Models.Metadata.Video.WidthKey); if (width is not null) Write(Data.Models.Metadata.Display.WidthKey, width.ToString()); diff --git a/SabreTools.Metadata.DatItems/Formats/Driver.cs b/SabreTools.Metadata.DatItems/Formats/Driver.cs index 7d538da3..1756da86 100644 --- a/SabreTools.Metadata.DatItems/Formats/Driver.cs +++ b/SabreTools.Metadata.DatItems/Formats/Driver.cs @@ -12,6 +12,30 @@ namespace SabreTools.Metadata.DatItems.Formats { #region Fields + public Data.Models.Metadata.Blit? Blit + { + get => (_internal as Data.Models.Metadata.Driver)?.Blit; + set => (_internal as Data.Models.Metadata.Driver)?.Blit = value; + } + + public Data.Models.Metadata.SupportStatus? Cocktail + { + get => (_internal as Data.Models.Metadata.Driver)?.Cocktail; + set => (_internal as Data.Models.Metadata.Driver)?.Cocktail = value; + } + + public Data.Models.Metadata.SupportStatus? Color + { + get => (_internal as Data.Models.Metadata.Driver)?.Color; + set => (_internal as Data.Models.Metadata.Driver)?.Color = value; + } + + public Data.Models.Metadata.SupportStatus? Emulation + { + get => (_internal as Data.Models.Metadata.Driver)?.Emulation; + set => (_internal as Data.Models.Metadata.Driver)?.Emulation = value; + } + public bool? Incomplete { get => (_internal as Data.Models.Metadata.Driver)?.Incomplete; @@ -30,6 +54,24 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Driver)?.RequiresArtwork = value; } + public Data.Models.Metadata.Supported? SaveState + { + get => (_internal as Data.Models.Metadata.Driver)?.SaveState; + set => (_internal as Data.Models.Metadata.Driver)?.SaveState = value; + } + + public Data.Models.Metadata.SupportStatus? Sound + { + get => (_internal as Data.Models.Metadata.Driver)?.Sound; + set => (_internal as Data.Models.Metadata.Driver)?.Sound = value; + } + + public Data.Models.Metadata.SupportStatus? Status + { + get => (_internal as Data.Models.Metadata.Driver)?.Status; + set => (_internal as Data.Models.Metadata.Driver)?.Status = value; + } + public bool? Unofficial { get => (_internal as Data.Models.Metadata.Driver)?.Unofficial; @@ -45,33 +87,9 @@ namespace SabreTools.Metadata.DatItems.Formats public Driver(Data.Models.Metadata.Driver item) : base(item) { // Process flag values - string? cocktail = ReadString(Data.Models.Metadata.Driver.CocktailKey); - if (cocktail is not null) - Write(Data.Models.Metadata.Driver.CocktailKey, cocktail.AsSupportStatus()?.AsStringValue()); - - string? color = ReadString(Data.Models.Metadata.Driver.ColorKey); - if (color is not null) - Write(Data.Models.Metadata.Driver.ColorKey, color.AsSupportStatus()?.AsStringValue()); - - string? emulation = ReadString(Data.Models.Metadata.Driver.EmulationKey); - if (emulation is not null) - Write(Data.Models.Metadata.Driver.EmulationKey, emulation.AsSupportStatus()?.AsStringValue()); - long? paletteSize = ReadLong(Data.Models.Metadata.Driver.PaletteSizeKey); if (paletteSize is not null) Write(Data.Models.Metadata.Driver.PaletteSizeKey, paletteSize.ToString()); - - string? saveState = ReadString(Data.Models.Metadata.Driver.SaveStateKey); - if (saveState is not null) - Write(Data.Models.Metadata.Driver.SaveStateKey, saveState.AsSupported()?.AsStringValue(useSecond: true)); - - string? sound = ReadString(Data.Models.Metadata.Driver.SoundKey); - if (sound is not null) - Write(Data.Models.Metadata.Driver.SoundKey, sound.AsSupportStatus()?.AsStringValue()); - - string? status = ReadString(Data.Models.Metadata.Driver.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Driver.StatusKey, status.AsSupportStatus()?.AsStringValue()); } public Driver(Data.Models.Metadata.Driver item, Machine machine, Source source) : this(item) diff --git a/SabreTools.Metadata.DatItems/Formats/Feature.cs b/SabreTools.Metadata.DatItems/Formats/Feature.cs index dea27133..7f8cf288 100644 --- a/SabreTools.Metadata.DatItems/Formats/Feature.cs +++ b/SabreTools.Metadata.DatItems/Formats/Feature.cs @@ -10,25 +10,33 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("feature"), XmlRoot("feature")] public sealed class Feature : DatItem { + #region Fields + + public Data.Models.Metadata.FeatureType? FeatureType + { + get => (_internal as Data.Models.Metadata.Feature)?.FeatureType; + set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value; + } + + public Data.Models.Metadata.FeatureStatus? Overall + { + get => (_internal as Data.Models.Metadata.Feature)?.Overall; + set => (_internal as Data.Models.Metadata.Feature)?.Overall = value; + } + + public Data.Models.Metadata.FeatureStatus? Status + { + get => (_internal as Data.Models.Metadata.Feature)?.Status; + set => (_internal as Data.Models.Metadata.Feature)?.Status = value; + } + + #endregion + #region Constructors public Feature() : base() { } - public Feature(Data.Models.Metadata.Feature item) : base(item) - { - // Process flag values - string? overall = ReadString(Data.Models.Metadata.Feature.OverallKey); - if (overall is not null) - Write(Data.Models.Metadata.Feature.OverallKey, overall.AsFeatureStatus()?.AsStringValue()); - - string? status = ReadString(Data.Models.Metadata.Feature.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Feature.StatusKey, status.AsFeatureStatus()?.AsStringValue()); - - string? featureType = ReadString(Data.Models.Metadata.Feature.FeatureTypeKey); - if (featureType is not null) - Write(Data.Models.Metadata.Feature.FeatureTypeKey, featureType.AsFeatureType()?.AsStringValue()); - } + public Feature(Data.Models.Metadata.Feature item) : base(item) { } public Feature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs index a2be2f3c..efe4f9f0 100644 --- a/SabreTools.Metadata.DatItems/Formats/PartFeature.cs +++ b/SabreTools.Metadata.DatItems/Formats/PartFeature.cs @@ -21,6 +21,24 @@ namespace SabreTools.Metadata.DatItems.Formats #region Fields + public Data.Models.Metadata.FeatureType? FeatureType + { + get => (_internal as Data.Models.Metadata.Feature)?.FeatureType; + set => (_internal as Data.Models.Metadata.Feature)?.FeatureType = value; + } + + public Data.Models.Metadata.FeatureStatus? Overall + { + get => (_internal as Data.Models.Metadata.Feature)?.Overall; + set => (_internal as Data.Models.Metadata.Feature)?.Overall = value; + } + + public Data.Models.Metadata.FeatureStatus? Status + { + get => (_internal as Data.Models.Metadata.Feature)?.Status; + set => (_internal as Data.Models.Metadata.Feature)?.Status = value; + } + /// /> /// This needs to be set to PartFeature because internally it uses Feature public override Data.Models.Metadata.ItemType ItemType => Data.Models.Metadata.ItemType.PartFeature; @@ -31,21 +49,7 @@ namespace SabreTools.Metadata.DatItems.Formats public PartFeature() : base() { } - public PartFeature(Data.Models.Metadata.Feature item) : base(item) - { - // Process flag values - string? overall = ReadString(Data.Models.Metadata.Feature.OverallKey); - if (overall is not null) - Write(Data.Models.Metadata.Feature.OverallKey, overall.AsFeatureStatus()?.AsStringValue()); - - string? status = ReadString(Data.Models.Metadata.Feature.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Feature.StatusKey, status.AsFeatureStatus()?.AsStringValue()); - - string? featureType = ReadString(Data.Models.Metadata.Feature.FeatureTypeKey); - if (featureType is not null) - Write(Data.Models.Metadata.Feature.FeatureTypeKey, featureType.AsFeatureType()?.AsStringValue()); - } + public PartFeature(Data.Models.Metadata.Feature item) : base(item) { } public PartFeature(Data.Models.Metadata.Feature item, Machine machine, Source source) : this(item) { diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index f3670a55..c791986d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -38,7 +38,7 @@ namespace SabreTools.Metadata.DatItems.Formats && (!string.IsNullOrEmpty(dataArea.GetName()) || dataArea.ReadLong(Data.Models.Metadata.DataArea.SizeKey) is not null || dataArea.ReadLong(Data.Models.Metadata.DataArea.WidthKey) is not null - || dataArea.ReadString(Data.Models.Metadata.DataArea.EndiannessKey).AsEndianness() is not null); + || dataArea.Endianness is not null); } } @@ -60,14 +60,10 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.Inverted = value; } - [JsonIgnore] - public bool ItemStatusSpecified + public LoadFlag? LoadFlag { - get - { - var status = ReadString(Data.Models.Metadata.Rom.StatusKey).AsItemStatus(); - return status is not null && status != ItemStatus.None; - } + get => (_internal as Data.Models.Metadata.Rom)?.LoadFlag; + set => (_internal as Data.Models.Metadata.Rom)?.LoadFlag = value; } public bool? MIA @@ -76,6 +72,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.MIA = value; } + public OpenMSXSubType? OpenMSXMediaType + { + get => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType; + set => (_internal as Data.Models.Metadata.Rom)?.OpenMSXMediaType = value; + } + public bool? Optional { get => (_internal as Data.Models.Metadata.Rom)?.Optional; @@ -110,6 +112,12 @@ namespace SabreTools.Metadata.DatItems.Formats set => (_internal as Data.Models.Metadata.Rom)?.SoundOnly = value; } + public ItemStatus? Status + { + get => (_internal as Data.Models.Metadata.Rom)?.Status; + set => (_internal as Data.Models.Metadata.Rom)?.Status = value; + } + #endregion #region Constructors @@ -117,7 +125,7 @@ namespace SabreTools.Metadata.DatItems.Formats public Rom() : base() { Write(DupeTypeKey, 0x00); - Write(Data.Models.Metadata.Rom.StatusKey, ItemStatus.None.AsStringValue()); + Status = ItemStatus.None; } public Rom(Dump item, Machine machine, Source source, int index) @@ -150,7 +158,7 @@ namespace SabreTools.Metadata.DatItems.Formats SetName(name); Write(Data.Models.Metadata.Rom.OffsetKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); - Write(Data.Models.Metadata.Rom.OpenMSXMediaType, subType?.AsStringValue()); + OpenMSXMediaType = subType; Write(Data.Models.Metadata.Rom.OpenMSXType, rom.ReadString(Data.Models.Metadata.Rom.OpenMSXType) ?? rom.ItemType.ToString()); Write(Data.Models.Metadata.Rom.RemarkKey, rom.ReadString(Data.Models.Metadata.Rom.RemarkKey)); Write(Data.Models.Metadata.Rom.SHA1Key, rom.ReadString(Data.Models.Metadata.Rom.SHA1Key)); @@ -229,19 +237,6 @@ namespace SabreTools.Metadata.DatItems.Formats { Write(DupeTypeKey, 0x00); - // Process flag values - string? loadFlag = ReadString(Data.Models.Metadata.Rom.LoadFlagKey); - if (loadFlag is not null) - Write(Data.Models.Metadata.Rom.LoadFlagKey, loadFlag.AsLoadFlag()?.AsStringValue()); - - string? openMSXMediaType = ReadString(Data.Models.Metadata.Rom.OpenMSXMediaType); - if (openMSXMediaType is not null) - Write(Data.Models.Metadata.Rom.OpenMSXMediaType, openMSXMediaType.AsOpenMSXSubType()?.AsStringValue()); - - string? status = ReadString(Data.Models.Metadata.Rom.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.Rom.StatusKey, status.AsItemStatus()?.AsStringValue()); - // Process hash values long? size = ReadLong(Data.Models.Metadata.Rom.SizeKey); if (size is not null) diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs index c6516287..ac3bedbe 100644 --- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs +++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs @@ -10,17 +10,22 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("softwarelist"), XmlRoot("softwarelist")] public sealed class SoftwareList : DatItem { + #region Fields + + public Data.Models.Metadata.SoftwareListStatus? Status + { + get => (_internal as Data.Models.Metadata.SoftwareList)?.Status; + set => (_internal as Data.Models.Metadata.SoftwareList)?.Status = value; + } + + #endregion + #region Constructors public SoftwareList() : base() { } public SoftwareList(Data.Models.Metadata.SoftwareList item) : base(item) { - // Process flag values - string? status = ReadString(Data.Models.Metadata.SoftwareList.StatusKey); - if (status is not null) - Write(Data.Models.Metadata.SoftwareList.StatusKey, status.AsSoftwareListStatus()?.AsStringValue()); - // Handle subitems // TODO: Handle the Software subitem } diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 8f032c47..115a492b 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -39,6 +39,12 @@ namespace SabreTools.Metadata.DatItems set => _internal.Runnable = value; } + public Data.Models.Metadata.Supported? Supported + { + get => _internal.Supported; + set => _internal.Supported = value; + } + #endregion #region Constructors @@ -91,10 +97,6 @@ namespace SabreTools.Metadata.DatItems if (im2Crc is not null) Write(Data.Models.Metadata.Machine.Im2CRCKey, TextHelper.NormalizeCRC32(im2Crc)); - string? supported = ReadString(Data.Models.Metadata.Machine.SupportedKey); - if (supported is not null) - Write(Data.Models.Metadata.Machine.SupportedKey, supported.AsSupported()?.AsStringValue()); - // Handle Trurip object, if it exists var truripItem = machine.Read(Data.Models.Metadata.Machine.TruripKey); if (truripItem is not null) diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 958c73dc..0c799bbc 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -356,10 +356,17 @@ namespace SabreTools.Metadata.Filter checkValue = item.Default.FromYesNo(); return true; + case Chip item when Key.FieldName == "type": + checkValue = item.ChipType?.AsStringValue(); + return true; case Chip item when Key.FieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; + case Condition item when Key.FieldName == "relation": + checkValue = item.Relation?.AsStringValue(); + return true; + case ConfLocation item when Key.FieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; @@ -368,10 +375,21 @@ namespace SabreTools.Metadata.Filter checkValue = item.Default.FromYesNo(); return true; + case Control item when Key.FieldName == "type": + checkValue = item.ControlType?.AsStringValue(); + return true; case Control item when Key.FieldName == "reverse": checkValue = item.Reverse.FromYesNo(); return true; + case DataArea item when Key.FieldName == "endianness": + checkValue = item.Endianness?.AsStringValue(); + return true; + + case Device item when Key.FieldName == "type": + checkValue = item.DeviceType?.AsStringValue(); + return true; + case DipLocation item when Key.FieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; @@ -391,6 +409,9 @@ namespace SabreTools.Metadata.Filter case Disk item when Key.FieldName == "optional": checkValue = item.Optional.FromYesNo(); return true; + case Disk item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; case Disk item when Key.FieldName == "writable": checkValue = item.Writable.FromYesNo(); return true; @@ -398,7 +419,22 @@ namespace SabreTools.Metadata.Filter case Display item when Key.FieldName == "flipx": checkValue = item.FlipX.FromYesNo(); return true; + case Display item when Key.FieldName == "type": + checkValue = item.DisplayType?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "blit": + checkValue = item.Blit?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "cocktail": + checkValue = item.Cocktail?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "color": + checkValue = item.Color?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "emulation": + checkValue = item.Emulation?.AsStringValue(); + return true; case Driver item when Key.FieldName == "incomplete": checkValue = item.Incomplete.FromYesNo(); return true; @@ -408,13 +444,44 @@ namespace SabreTools.Metadata.Filter case Driver item when Key.FieldName == "requiresartwork": checkValue = item.RequiresArtwork.FromYesNo(); return true; + case Driver item when Key.FieldName == "savestate": + checkValue = item.SaveState?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "sound": + checkValue = item.Sound?.AsStringValue(); + return true; + case Driver item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; case Driver item when Key.FieldName == "unofficial": checkValue = item.Unofficial.FromYesNo(); return true; + case Feature item when Key.FieldName == "overall": + checkValue = item.Overall?.AsStringValue(); + return true; + case Feature item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; + case Feature item when Key.FieldName == "type": + checkValue = item.FeatureType?.AsStringValue(); + return true; + + case Header item when Key.FieldName == "biosmode": + checkValue = item.BiosMode.AsStringValue(); + return true; case Header item when Key.FieldName == "debug": checkValue = item.Debug.FromYesNo(); return true; + case Header item when Key.FieldName == "forcemerging": + checkValue = item.ForceMerging.AsStringValue(); + return true; + case Header item when Key.FieldName == "forcenodump": + checkValue = item.ForceNodump.AsStringValue(); + return true; + case Header item when Key.FieldName == "forcepacking": + checkValue = item.ForcePacking.AsStringValue(); + return true; case Header item when Key.FieldName == "forcezipping": checkValue = item.ForceZipping.FromYesNo(); return true; @@ -427,6 +494,12 @@ namespace SabreTools.Metadata.Filter case Header item when Key.FieldName == "locksamplemode": checkValue = item.LockSampleMode.FromYesNo(); return true; + case Header item when Key.FieldName == "rommode": + checkValue = item.RomMode.AsStringValue(); + return true; + case Header item when Key.FieldName == "samplemode": + checkValue = item.SampleMode.AsStringValue(); + return true; case Input item when Key.FieldName == "service": checkValue = item.Service.FromYesNo(); @@ -447,6 +520,9 @@ namespace SabreTools.Metadata.Filter case Machine item when Key.FieldName == "runnable": checkValue = item.Runnable?.AsStringValue(); return true; + case Machine item when Key.FieldName == "supported": + checkValue = item.Supported?.AsStringValue(); + return true; case RamOption item when Key.FieldName == "default": checkValue = item.Default.FromYesNo(); @@ -465,6 +541,12 @@ namespace SabreTools.Metadata.Filter case Rom item when Key.FieldName == "inverted": checkValue = item.Inverted.FromYesNo(); return true; + case Rom item when Key.FieldName == "loadflag": + checkValue = item.LoadFlag?.AsStringValue(); + return true; + case Rom item when Key.FieldName == "mediatype": + checkValue = item.OpenMSXMediaType?.AsStringValue(); + return true; case Rom item when Key.FieldName == "mia": checkValue = item.MIA.FromYesNo(); return true; @@ -474,11 +556,26 @@ namespace SabreTools.Metadata.Filter case Rom item when Key.FieldName == "soundonly": checkValue = item.SoundOnly.FromYesNo(); return true; + case Rom item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; case SlotOption item when Key.FieldName == "default": checkValue = item.Default.FromYesNo(); return true; + case Software item when Key.FieldName == "supported": + checkValue = item.Supported?.AsStringValue(); + return true; + + case SoftwareList item when Key.FieldName == "status": + checkValue = item.Status?.AsStringValue(); + return true; + + case Video item when Key.FieldName == "screen": + checkValue = item.Screen?.AsStringValue(); + return true; + // Fallthrough to Dictionary-based checking default: break; } diff --git a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs index e6905167..5cd18192 100644 --- a/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs +++ b/SabreTools.Metadata.Test/DictionaryBaseExtensionsTests.cs @@ -22,14 +22,14 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Disk { - [Disk.StatusKey] = "nodump", + Status = ItemStatus.Nodump, Name = "XXXXXX", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = string.Empty, }; DictionaryBase other = new Disk { - [Disk.StatusKey] = "NODUMP", + Status = ItemStatus.Nodump, Name = "XXXXXX", [Disk.MD5Key] = string.Empty, [Disk.SHA1Key] = string.Empty, @@ -268,7 +268,7 @@ namespace SabreTools.Metadata.Test { DictionaryBase self = new Rom { - [Rom.StatusKey] = "nodump", + Status = ItemStatus.Nodump, Name = "XXXXXX", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, @@ -287,7 +287,7 @@ namespace SabreTools.Metadata.Test }; DictionaryBase other = new Rom { - [Rom.StatusKey] = "NODUMP", + Status = ItemStatus.Nodump, Name = "XXXXXX", [Rom.SizeKey] = 12345, [Rom.CRC16Key] = string.Empty, diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 04466666..f8b0a28e 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -176,15 +176,15 @@ namespace SabreTools.Metadata /// private static bool EqualsImpl(this Disk self, Disk other) { - string? selfStatus = self.ReadString(Disk.StatusKey); - string? otherStatus = other.ReadString(Disk.StatusKey); + ItemStatus? selfStatus = self.Status; + ItemStatus? otherStatus = other.Status; string? selfName = self.Name; string? otherName = other.Name; // If all hashes are empty but they're both nodump and the names match, then they're dupes - if (string.Equals(selfStatus, "nodump", StringComparison.OrdinalIgnoreCase) - && string.Equals(otherStatus, "nodump", StringComparison.OrdinalIgnoreCase) + if (selfStatus == ItemStatus.Nodump + && otherStatus == ItemStatus.Nodump && string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase) && !self.HasHashes() && !other.HasHashes()) @@ -218,8 +218,8 @@ namespace SabreTools.Metadata /// private static bool EqualsImpl(this Rom self, Rom other) { - string? selfStatus = self.ReadString(Rom.StatusKey); - string? otherStatus = other.ReadString(Rom.StatusKey); + ItemStatus? selfStatus = self.Status; + ItemStatus? otherStatus = other.Status; string? selfName = self.Name; string? otherName = other.Name; @@ -228,8 +228,8 @@ namespace SabreTools.Metadata long? otherSize = other.ReadLong(Rom.SizeKey); // If all hashes are empty but they're both nodump and the names match, then they're dupes - if (string.Equals(selfStatus, "nodump", StringComparison.OrdinalIgnoreCase) - && string.Equals(otherStatus, "nodump", StringComparison.OrdinalIgnoreCase) + if (selfStatus == ItemStatus.Nodump + && otherStatus == ItemStatus.Nodump && string.Equals(selfName, otherName, StringComparison.OrdinalIgnoreCase) && !self.HasHashes() && !other.HasHashes()) diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs index ba602350..7949b0c6 100644 --- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs @@ -73,9 +73,9 @@ namespace SabreTools.Serialization.CrossModel.Test Comment = "XXXXXX", Header = "XXXXXX", Type = "XXXXXX", - ForceMerging = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, ForceZipping = true, - ForcePacking = "XXXXXX", + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, }; var release = new Data.Models.ClrMamePro.Release @@ -108,7 +108,7 @@ namespace SabreTools.Serialization.CrossModel.Test RIPEMD160 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Flags = "XXXXXX", Date = "XXXXXX", SHA256 = "XXXXXX", @@ -131,7 +131,7 @@ namespace SabreTools.Serialization.CrossModel.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Flags = "XXXXXX", }; @@ -156,7 +156,7 @@ namespace SabreTools.Serialization.CrossModel.Test var chip = new Data.Models.ClrMamePro.Chip { - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, Name = "XXXXXX", Flags = "XXXXXX", Clock = "XXXXXX", @@ -164,7 +164,7 @@ namespace SabreTools.Serialization.CrossModel.Test var video = new Data.Models.ClrMamePro.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", X = "XXXXXX", Y = "XXXXXX", @@ -197,11 +197,11 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.ClrMamePro.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Blit = "XXXXXX", + Blit = Data.Models.Metadata.Blit.Plain, }; // TODO: This omits Set, should that have a separate case? @@ -262,9 +262,9 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", cmp.Comment); Assert.Equal("XXXXXX", cmp.Header); Assert.Equal("XXXXXX", cmp.Type); - Assert.Equal("XXXXXX", cmp.ForceMerging); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging); Assert.Equal(true, cmp.ForceZipping); - Assert.Equal("XXXXXX", cmp.ForcePacking); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking); } /// @@ -371,7 +371,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.RIPEMD160); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("XXXXXX", rom.Flags); Assert.Equal("XXXXXX", rom.Date); Assert.Equal("XXXXXX", rom.SHA256); @@ -398,7 +398,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal("XXXXXX", disk.Flags); } @@ -439,7 +439,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Flags); Assert.Equal("XXXXXX", chip.Clock); @@ -451,7 +451,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.X); Assert.Equal("XXXXXX", video.Y); @@ -504,11 +504,11 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.ClrMamePro.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Blit); + Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit); } /// diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs index 624dc8fb..fdfca515 100644 --- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs @@ -80,7 +80,7 @@ namespace SabreTools.Serialization.CrossModel.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -95,7 +95,7 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -121,7 +121,7 @@ namespace SabreTools.Serialization.CrossModel.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -138,7 +138,7 @@ namespace SabreTools.Serialization.CrossModel.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -154,7 +154,7 @@ namespace SabreTools.Serialization.CrossModel.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -183,7 +183,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -257,13 +257,13 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -272,9 +272,9 @@ namespace SabreTools.Serialization.CrossModel.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -290,7 +290,7 @@ namespace SabreTools.Serialization.CrossModel.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -316,7 +316,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -492,7 +492,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -511,7 +511,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -541,7 +541,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -553,7 +553,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -616,7 +616,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -658,7 +658,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -767,13 +767,13 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -786,9 +786,9 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -797,7 +797,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -860,7 +860,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs index c4c50094..d375ac28 100644 --- a/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/LogiqxTests.cs @@ -76,17 +76,17 @@ namespace SabreTools.Serialization.CrossModel.Test var clrmamepro = new Data.Models.Logiqx.ClrMamePro { Header = "XXXXXX", - ForceMerging = "XXXXXX", - ForceNodump = "XXXXXX", - ForcePacking = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, + ForceNodump = Data.Models.Metadata.NodumpFlag.Required, + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, }; var romcenter = new Data.Models.Logiqx.RomCenter { Plugin = "XXXXXX", - RomMode = "XXXXXX", - BiosMode = "XXXXXX", - SampleMode = "XXXXXX", + RomMode = Data.Models.Metadata.MergingFlag.Merged, + BiosMode = Data.Models.Metadata.MergingFlag.Merged, + SampleMode = Data.Models.Metadata.MergingFlag.Merged, LockRomMode = true, LockBiosMode = true, LockSampleMode = true, @@ -165,7 +165,7 @@ namespace SabreTools.Serialization.CrossModel.Test xxHash364 = "XXXXXX", xxHash3128 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Serial = "XXXXXX", Header = "XXXXXX", Date = "XXXXXX", @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Region = "XXXXXX", }; @@ -209,10 +209,10 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.Logiqx.Driver { - Status = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -223,7 +223,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -314,9 +314,9 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(cmp); Assert.Equal("XXXXXX", cmp.Header); - Assert.Equal("XXXXXX", cmp.ForceMerging); - Assert.Equal("XXXXXX", cmp.ForceNodump); - Assert.Equal("XXXXXX", cmp.ForcePacking); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, cmp.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking); } /// @@ -326,9 +326,9 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(rc); Assert.Equal("XXXXXX", rc.Plugin); - Assert.Equal("XXXXXX", rc.RomMode); - Assert.Equal("XXXXXX", rc.BiosMode); - Assert.Equal("XXXXXX", rc.SampleMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.RomMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.BiosMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.SampleMode); Assert.Equal(true, rc.LockRomMode); Assert.Equal(true, rc.LockBiosMode); Assert.Equal(true, rc.LockSampleMode); @@ -481,7 +481,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.xxHash364); Assert.Equal("XXXXXX", rom.xxHash3128); Assert.Equal("XXXXXX", rom.Merge); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("XXXXXX", rom.Serial); Assert.Equal("XXXXXX", rom.Header); Assert.Equal("XXXXXX", rom.Date); @@ -499,7 +499,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal("XXXXXX", disk.Region); } @@ -549,10 +549,10 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Logiqx.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -567,7 +567,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } } diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs index 8d2be43f..16e28c35 100644 --- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs +++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -91,7 +91,7 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -109,7 +109,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -117,7 +117,7 @@ namespace SabreTools.Serialization.CrossModel.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -134,7 +134,7 @@ namespace SabreTools.Serialization.CrossModel.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -150,7 +150,7 @@ namespace SabreTools.Serialization.CrossModel.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -253,13 +253,13 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -268,9 +268,9 @@ namespace SabreTools.Serialization.CrossModel.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.CrossModel.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -312,7 +312,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -486,7 +486,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -505,7 +505,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -535,7 +535,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -568,7 +568,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -610,7 +610,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -652,7 +652,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -761,13 +761,13 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -780,9 +780,9 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -791,7 +791,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -854,7 +854,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs index 1088d26f..96911cf5 100644 --- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -91,7 +91,7 @@ namespace SabreTools.Serialization.CrossModel.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -109,7 +109,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -117,7 +117,7 @@ namespace SabreTools.Serialization.CrossModel.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -134,7 +134,7 @@ namespace SabreTools.Serialization.CrossModel.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -150,7 +150,7 @@ namespace SabreTools.Serialization.CrossModel.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -253,13 +253,13 @@ namespace SabreTools.Serialization.CrossModel.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -268,9 +268,9 @@ namespace SabreTools.Serialization.CrossModel.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -286,7 +286,7 @@ namespace SabreTools.Serialization.CrossModel.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -312,7 +312,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -486,7 +486,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -505,7 +505,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -535,7 +535,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -568,7 +568,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -610,7 +610,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -652,7 +652,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -761,13 +761,13 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -780,9 +780,9 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -791,7 +791,7 @@ namespace SabreTools.Serialization.CrossModel.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -854,7 +854,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs index 0725f0e3..8b1da955 100644 --- a/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SeparatedValueTests.cs @@ -49,7 +49,7 @@ namespace SabreTools.Serialization.CrossModel.Test DiskName = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, }; var media = new Data.Models.SeparatedValue.Row @@ -84,7 +84,7 @@ namespace SabreTools.Serialization.CrossModel.Test SHA384 = "XXXXXX", SHA512 = "XXXXXX", SpamSum = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, }; return new Data.Models.SeparatedValue.MetadataFile @@ -126,7 +126,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Null(row.SHA384); Assert.Null(row.SHA512); Assert.Null(row.SpamSum); - Assert.Equal("XXXXXX", row.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status); } /// @@ -176,7 +176,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", row.SHA384); Assert.Equal("XXXXXX", row.SHA512); Assert.Equal("XXXXXX", row.SpamSum); - Assert.Equal("XXXXXX", row.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status); } } } diff --git a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs index 5624c411..d6130c52 100644 --- a/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.CrossModel.Test/SoftwareListTests.cs @@ -63,8 +63,8 @@ namespace SabreTools.Serialization.CrossModel.Test SHA1 = "XXXXXX", Offset = "XXXXXX", Value = "XXXXXX", - Status = "XXXXXX", - LoadFlag = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, + LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte, }; var dataarea = new Data.Models.SoftwareList.DataArea @@ -72,7 +72,7 @@ namespace SabreTools.Serialization.CrossModel.Test Name = "XXXXXX", Size = "XXXXXX", Width = "XXXXXX", - Endianness = "XXXXXX", + Endianness = Data.Models.Metadata.Endianness.Big, Rom = [rom], }; @@ -81,7 +81,7 @@ namespace SabreTools.Serialization.CrossModel.Test Name = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Writeable = true, }; @@ -120,7 +120,7 @@ namespace SabreTools.Serialization.CrossModel.Test { Name = "XXXXXX", CloneOf = "XXXXXX", - Supported = "XXXXXX", + Supported = Data.Models.Metadata.Supported.Yes, Description = "XXXXXX", Year = "XXXXXX", Publisher = "XXXXXX", @@ -147,7 +147,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.NotNull(software); Assert.Equal("XXXXXX", software.Name); Assert.Equal("XXXXXX", software.CloneOf); - Assert.Equal("XXXXXX", software.Supported); + Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); Assert.Equal("XXXXXX", software.Description); Assert.Equal("XXXXXX", software.Year); Assert.Equal("XXXXXX", software.Publisher); @@ -231,7 +231,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", dataarea.Name); Assert.Equal("XXXXXX", dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); - Assert.Equal("XXXXXX", dataarea.Endianness); + Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); Assert.NotNull(dataarea.Rom); var rom = Assert.Single(dataarea.Rom); @@ -251,8 +251,8 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Value); - Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.LoadFlag); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); + Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); } /// @@ -277,7 +277,7 @@ namespace SabreTools.Serialization.CrossModel.Test Assert.Equal("XXXXXX", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Writeable); } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index 89ea67f7..6ceb389c 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -55,9 +55,9 @@ namespace SabreTools.Serialization.CrossModel Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey), Header = item.ReadString(Data.Models.Metadata.Header.HeaderKey), Type = item.ReadString(Data.Models.Metadata.Header.TypeKey), - ForceMerging = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey), + ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, - ForcePacking = item.ReadString(Data.Models.Metadata.Header.ForcePackingKey), + ForcePacking = item.ForcePacking, }; return clrMamePro; } @@ -167,7 +167,7 @@ namespace SabreTools.Serialization.CrossModel { var chip = new Chip { - Type = item.ReadString(Data.Models.Metadata.Chip.ChipTypeKey), + Type = item.ChipType, Name = item.Name, Flags = item.ReadString(Data.Models.Metadata.Chip.FlagsKey), Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey), @@ -200,7 +200,7 @@ namespace SabreTools.Serialization.CrossModel MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, Flags = item.ReadString(Data.Models.Metadata.Disk.FlagsKey), }; return disk; @@ -213,11 +213,11 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Driver { - Status = item.ReadString(Data.Models.Metadata.Driver.StatusKey), - Color = item.ReadString(Data.Models.Metadata.Driver.ColorKey), - Sound = item.ReadString(Data.Models.Metadata.Driver.SoundKey), + Status = item.Status, + Color = item.Color, + Sound = item.Sound, PaletteSize = item.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey), - Blit = item.ReadString(Data.Models.Metadata.Driver.BlitKey), + Blit = item.Blit, }; return driver; } @@ -296,7 +296,7 @@ namespace SabreTools.Serialization.CrossModel xxHash364 = item.ReadString(Data.Models.Metadata.Rom.xxHash364Key), xxHash3128 = item.ReadString(Data.Models.Metadata.Rom.xxHash3128Key), Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), + Status = item.Status, Region = item.ReadString(Data.Models.Metadata.Rom.RegionKey), Flags = item.ReadString(Data.Models.Metadata.Rom.FlagsKey), Offs = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), @@ -340,7 +340,7 @@ namespace SabreTools.Serialization.CrossModel { var video = new Video { - Screen = item.ReadString(Data.Models.Metadata.Video.ScreenKey), + Screen = item.Screen, Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey), X = item.ReadString(Data.Models.Metadata.Video.WidthKey), Y = item.ReadString(Data.Models.Metadata.Video.HeightKey), diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 25aff94f..a4291784 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -35,7 +35,7 @@ namespace SabreTools.Serialization.CrossModel { var header = new Data.Models.Metadata.Header { - Name = item.Name, + Name = item.Name, [Data.Models.Metadata.Header.DescriptionKey] = item.Description, [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, [Data.Models.Metadata.Header.CategoryKey] = item.Category, @@ -47,9 +47,9 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Header.CommentKey] = item.Comment, [Data.Models.Metadata.Header.HeaderKey] = item.Header, [Data.Models.Metadata.Header.TypeKey] = item.Type, - [Data.Models.Metadata.Header.ForceMergingKey] = item.ForceMerging, + ForceMerging = item.ForceMerging, ForceZipping = item.ForceZipping, - [Data.Models.Metadata.Header.ForcePackingKey] = item.ForcePacking, + ForcePacking = item.ForcePacking, }; return header; } @@ -180,7 +180,7 @@ namespace SabreTools.Serialization.CrossModel { var chip = new Data.Models.Metadata.Chip { - [Data.Models.Metadata.Chip.ChipTypeKey] = item.Type, + ChipType = item.Type, Name = item.Name, [Data.Models.Metadata.Chip.FlagsKey] = item.Flags, [Data.Models.Metadata.Chip.ClockKey] = item.Clock, @@ -213,7 +213,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.MergeKey] = item.Merge, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.Disk.FlagsKey] = item.Flags, }; return disk; @@ -226,11 +226,11 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Data.Models.Metadata.Driver { - [Data.Models.Metadata.Driver.StatusKey] = item.Status, - [Data.Models.Metadata.Driver.ColorKey] = item.Color, - [Data.Models.Metadata.Driver.SoundKey] = item.Sound, + Status = item.Status, + Color = item.Color, + Sound = item.Sound, [Data.Models.Metadata.Driver.PaletteSizeKey] = item.PaletteSize, - [Data.Models.Metadata.Driver.BlitKey] = item.Blit, + Blit = item.Blit, }; return driver; } @@ -309,7 +309,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.xxHash364Key] = item.xxHash364, [Data.Models.Metadata.Rom.xxHash3128Key] = item.xxHash3128, [Data.Models.Metadata.Rom.MergeKey] = item.Merge, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.Rom.RegionKey] = item.Region, [Data.Models.Metadata.Rom.FlagsKey] = item.Flags, [Data.Models.Metadata.Rom.OffsetKey] = item.Offs, @@ -353,7 +353,7 @@ namespace SabreTools.Serialization.CrossModel { var video = new Data.Models.Metadata.Video { - [Data.Models.Metadata.Video.ScreenKey] = item.Screen, + Screen = item.Screen, [Data.Models.Metadata.Video.OrientationKey] = item.Orientation, [Data.Models.Metadata.Video.WidthKey] = item.X, [Data.Models.Metadata.Video.HeightKey] = item.Y, diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index 20d48a95..5e7d0428 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -60,9 +60,9 @@ namespace SabreTools.Serialization.CrossModel SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), }; - if ((item[Data.Models.Metadata.Disk.StatusKey] as string) == "nodump") + if (item.Status == Data.Models.Metadata.ItemStatus.Nodump) row.NoGoodDumpKnown = true; - else if ((item[Data.Models.Metadata.Disk.StatusKey] as string) == "baddump") + else if (item.Status == Data.Models.Metadata.ItemStatus.BadDump) row.Bad = true; return row; @@ -81,9 +81,9 @@ namespace SabreTools.Serialization.CrossModel SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), }; - if ((item[Data.Models.Metadata.Rom.StatusKey] as string) == "nodump") + if (item.Status == Data.Models.Metadata.ItemStatus.Nodump) row.NoGoodDumpKnown = true; - else if ((item[Data.Models.Metadata.Rom.StatusKey] as string) == "baddump") + else if (item.Status == Data.Models.Metadata.ItemStatus.BadDump) row.Bad = true; return row; diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index c167fc22..d696ad0a 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -89,9 +89,9 @@ namespace SabreTools.Serialization.CrossModel }; if (item.NoGoodDumpKnown) - disk[Data.Models.Metadata.Disk.StatusKey] = "nodump"; + disk.Status = Data.Models.Metadata.ItemStatus.Nodump; else if (item.Bad) - disk[Data.Models.Metadata.Disk.StatusKey] = "baddump"; + disk.Status = Data.Models.Metadata.ItemStatus.BadDump; return disk; } @@ -106,9 +106,9 @@ namespace SabreTools.Serialization.CrossModel }; if (item.NoGoodDumpKnown) - rom[Data.Models.Metadata.Rom.StatusKey] = "nodump"; + rom.Status = Data.Models.Metadata.ItemStatus.Nodump; else if (item.Bad) - rom[Data.Models.Metadata.Rom.StatusKey] = "baddump"; + rom.Status = Data.Models.Metadata.ItemStatus.BadDump; return rom; } diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 5a828b7b..02a38a83 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -194,7 +194,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Tag = item.ReadString(Data.Models.Metadata.Chip.TagKey), - Type = item.ReadString(Data.Models.Metadata.Chip.ChipTypeKey), + Type = item.ChipType, SoundOnly = item.SoundOnly, Clock = item.ReadString(Data.Models.Metadata.Chip.ClockKey), }; @@ -210,7 +210,7 @@ namespace SabreTools.Serialization.CrossModel { Tag = item.ReadString(Data.Models.Metadata.Condition.TagKey), Mask = item.ReadString(Data.Models.Metadata.Condition.MaskKey), - Relation = item.ReadString(Data.Models.Metadata.Condition.RelationKey), + Relation = item.Relation, Value = item.ReadString(Data.Models.Metadata.Condition.ValueKey), }; return condition; @@ -283,7 +283,7 @@ namespace SabreTools.Serialization.CrossModel { var control = new Control { - Type = item.ReadString(Data.Models.Metadata.Control.ControlTypeKey), + Type = item.ControlType, Player = item.ReadString(Data.Models.Metadata.Control.PlayerKey), Buttons = item.ReadString(Data.Models.Metadata.Control.ButtonsKey), ReqButtons = item.ReadString(Data.Models.Metadata.Control.ReqButtonsKey), @@ -306,7 +306,7 @@ namespace SabreTools.Serialization.CrossModel { var device = new Device { - Type = item.ReadString(Data.Models.Metadata.Device.DeviceTypeKey), + Type = item.DeviceType, Tag = item.ReadString(Data.Models.Metadata.Device.TagKey), FixedImage = item.ReadString(Data.Models.Metadata.Device.FixedImageKey), Mandatory = item.ReadString(Data.Models.Metadata.Device.MandatoryKey), @@ -410,7 +410,7 @@ namespace SabreTools.Serialization.CrossModel Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey), Index = item.ReadString(Data.Models.Metadata.Disk.IndexKey), Writable = item.Writable, - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, Optional = item.Optional, }; return disk; @@ -424,7 +424,7 @@ namespace SabreTools.Serialization.CrossModel var display = new Display { Tag = item.ReadString(Data.Models.Metadata.Display.TagKey), - Type = item.ReadString(Data.Models.Metadata.Display.DisplayTypeKey), + Type = item.DisplayType, Rotate = item.ReadString(Data.Models.Metadata.Display.RotateKey), FlipX = item.FlipX, Width = item.ReadString(Data.Models.Metadata.Display.WidthKey), @@ -448,13 +448,13 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Driver { - Status = item.ReadString(Data.Models.Metadata.Driver.StatusKey), - Color = item.ReadString(Data.Models.Metadata.Driver.ColorKey), - Sound = item.ReadString(Data.Models.Metadata.Driver.SoundKey), + Status = item.Status, + Color = item.Color, + Sound = item.Sound, PaletteSize = item.ReadString(Data.Models.Metadata.Driver.PaletteSizeKey), - Emulation = item.ReadString(Data.Models.Metadata.Driver.EmulationKey), - Cocktail = item.ReadString(Data.Models.Metadata.Driver.CocktailKey), - SaveState = item.ReadString(Data.Models.Metadata.Driver.SaveStateKey), + Emulation = item.Emulation, + Cocktail = item.Cocktail, + SaveState = item.SaveState, RequiresArtwork = item.RequiresArtwork, Unofficial = item.Unofficial, NoSoundHardware = item.NoSoundHardware, @@ -482,9 +482,9 @@ namespace SabreTools.Serialization.CrossModel { var feature = new Feature { - Type = item.ReadString(Data.Models.Metadata.Feature.FeatureTypeKey), - Status = item.ReadString(Data.Models.Metadata.Feature.StatusKey), - Overall = item.ReadString(Data.Models.Metadata.Feature.OverallKey), + Type = item.FeatureType, + Status = item.Status, + Overall = item.Overall, }; return feature; } @@ -573,7 +573,7 @@ namespace SabreTools.Serialization.CrossModel Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), Region = item.ReadString(Data.Models.Metadata.Rom.RegionKey), Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), + Status = item.Status, Optional = item.Optional, Dispose = item.Dispose, SoundOnly = item.SoundOnly, @@ -633,7 +633,7 @@ namespace SabreTools.Serialization.CrossModel { Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey), Name = item.Name, - Status = item.ReadString(Data.Models.Metadata.SoftwareList.StatusKey), + Status = item.Status, Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), }; return softwareList; @@ -658,7 +658,7 @@ namespace SabreTools.Serialization.CrossModel { var video = new Video { - Screen = item.ReadString(Data.Models.Metadata.Video.ScreenKey), + Screen = item.Screen, Orientation = item.ReadString(Data.Models.Metadata.Video.OrientationKey), Width = item.ReadString(Data.Models.Metadata.Video.WidthKey), Height = item.ReadString(Data.Models.Metadata.Video.HeightKey), diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index 335a5866..10c5e034 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -227,7 +227,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.Chip.TagKey] = item.Tag, - [Data.Models.Metadata.Chip.ChipTypeKey] = item.Type, + ChipType = item.Type, SoundOnly = item.SoundOnly, [Data.Models.Metadata.Chip.ClockKey] = item.Clock, }; @@ -243,7 +243,7 @@ namespace SabreTools.Serialization.CrossModel { [Data.Models.Metadata.Condition.TagKey] = item.Tag, [Data.Models.Metadata.Condition.MaskKey] = item.Mask, - [Data.Models.Metadata.Condition.RelationKey] = item.Relation, + Relation = item.Relation, [Data.Models.Metadata.Condition.ValueKey] = item.Value, }; return condition; @@ -318,7 +318,7 @@ namespace SabreTools.Serialization.CrossModel { var control = new Data.Models.Metadata.Control { - [Data.Models.Metadata.Control.ControlTypeKey] = item.Type, + ControlType = item.Type, [Data.Models.Metadata.Control.PlayerKey] = item.Player, [Data.Models.Metadata.Control.ButtonsKey] = item.Buttons, [Data.Models.Metadata.Control.ReqButtonsKey] = item.ReqButtons, @@ -341,7 +341,7 @@ namespace SabreTools.Serialization.CrossModel { var device = new Data.Models.Metadata.Device { - [Data.Models.Metadata.Device.DeviceTypeKey] = item.Type, + DeviceType = item.Type, [Data.Models.Metadata.Device.TagKey] = item.Tag, [Data.Models.Metadata.Device.FixedImageKey] = item.FixedImage, [Data.Models.Metadata.Device.MandatoryKey] = item.Mandatory, @@ -448,7 +448,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Disk.RegionKey] = item.Region, [Data.Models.Metadata.Disk.IndexKey] = item.Index, Writable = item.Writable, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, Optional = item.Optional, }; return disk; @@ -462,7 +462,7 @@ namespace SabreTools.Serialization.CrossModel var display = new Data.Models.Metadata.Display { [Data.Models.Metadata.Display.TagKey] = item.Tag, - [Data.Models.Metadata.Display.DisplayTypeKey] = item.Type, + DisplayType = item.Type, [Data.Models.Metadata.Display.RotateKey] = item.Rotate, FlipX = item.FlipX, [Data.Models.Metadata.Display.WidthKey] = item.Width, @@ -486,13 +486,13 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Data.Models.Metadata.Driver { - [Data.Models.Metadata.Driver.StatusKey] = item.Status, - [Data.Models.Metadata.Driver.ColorKey] = item.Color, - [Data.Models.Metadata.Driver.SoundKey] = item.Sound, + Status = item.Status, + Color = item.Color, + Sound = item.Sound, [Data.Models.Metadata.Driver.PaletteSizeKey] = item.PaletteSize, - [Data.Models.Metadata.Driver.EmulationKey] = item.Emulation, - [Data.Models.Metadata.Driver.CocktailKey] = item.Cocktail, - [Data.Models.Metadata.Driver.SaveStateKey] = item.SaveState, + Emulation = item.Emulation, + Cocktail = item.Cocktail, + SaveState = item.SaveState, RequiresArtwork = item.RequiresArtwork, Unofficial = item.Unofficial, NoSoundHardware = item.NoSoundHardware, @@ -520,9 +520,9 @@ namespace SabreTools.Serialization.CrossModel { var feature = new Data.Models.Metadata.Feature { - [Data.Models.Metadata.Feature.FeatureTypeKey] = item.Type, - [Data.Models.Metadata.Feature.StatusKey] = item.Status, - [Data.Models.Metadata.Feature.OverallKey] = item.Overall, + FeatureType = item.Type, + Status = item.Status, + Overall = item.Overall, }; return feature; } @@ -612,7 +612,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.MergeKey] = item.Merge, [Data.Models.Metadata.Rom.RegionKey] = item.Region, [Data.Models.Metadata.Rom.OffsetKey] = item.Offset, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, + Status = item.Status, Optional = item.Optional, Dispose = item.Dispose, SoundOnly = item.SoundOnly, @@ -674,7 +674,7 @@ namespace SabreTools.Serialization.CrossModel { [Data.Models.Metadata.SoftwareList.TagKey] = item.Tag, Name = item.Name, - [Data.Models.Metadata.SoftwareList.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, }; return softwareList; @@ -699,7 +699,7 @@ namespace SabreTools.Serialization.CrossModel { var video = new Data.Models.Metadata.Video { - [Data.Models.Metadata.Video.ScreenKey] = item.Screen, + Screen = item.Screen, [Data.Models.Metadata.Video.OrientationKey] = item.Orientation, [Data.Models.Metadata.Video.WidthKey] = item.Width, [Data.Models.Metadata.Video.HeightKey] = item.Height, diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 06946884..dbead2e5 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -57,38 +57,38 @@ namespace SabreTools.Serialization.CrossModel }; string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey); - string? forceMerging = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey); - string? forceNodump = item.ReadString(Data.Models.Metadata.Header.ForceNodumpKey); - string? forceUnpacking = item.ReadString(Data.Models.Metadata.Header.ForcePackingKey); + Data.Models.Metadata.MergingFlag forceMerging = item.ForceMerging; + Data.Models.Metadata.NodumpFlag forceNodump = item.ForceNodump; + Data.Models.Metadata.PackingFlag forcePacking = item.ForcePacking; if (headerVal is not null - || forceMerging is not null - || forceNodump is not null - || forceUnpacking is not null) + || forceMerging is not Data.Models.Metadata.MergingFlag.None + || forceNodump is not Data.Models.Metadata.NodumpFlag.None + || forcePacking is not Data.Models.Metadata.PackingFlag.None) { header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro(); if (headerVal is not null) header.ClrMamePro.Header = headerVal; - if (forceMerging is not null) + if (forceMerging is not Data.Models.Metadata.MergingFlag.None) header.ClrMamePro.ForceMerging = forceMerging; - if (forceNodump is not null) + if (forceNodump is not Data.Models.Metadata.NodumpFlag.None) header.ClrMamePro.ForceNodump = forceNodump; - if (forceUnpacking is not null) - header.ClrMamePro.ForcePacking = forceUnpacking; + if (forcePacking is not Data.Models.Metadata.PackingFlag.None) + header.ClrMamePro.ForcePacking = forcePacking; } string? plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey); - string? romMode = item.ReadString(Data.Models.Metadata.Header.RomModeKey); - string? biosMode = item.ReadString(Data.Models.Metadata.Header.BiosModeKey); - string? sampleMode = item.ReadString(Data.Models.Metadata.Header.SampleModeKey); + Data.Models.Metadata.MergingFlag romMode = item.RomMode; + Data.Models.Metadata.MergingFlag biosMode = item.BiosMode; + Data.Models.Metadata.MergingFlag sampleMode = item.SampleMode; bool? lockRomMode = item.LockRomMode; bool? lockBiosMode = item.LockBiosMode; bool? lockSampleMode = item.LockSampleMode; if (plugin is not null - || romMode is not null - || biosMode is not null - || sampleMode is not null + || romMode is not Data.Models.Metadata.MergingFlag.None + || biosMode is not Data.Models.Metadata.MergingFlag.None + || sampleMode is not Data.Models.Metadata.MergingFlag.None || lockRomMode is not null || lockBiosMode is not null || lockSampleMode is not null) @@ -96,11 +96,11 @@ namespace SabreTools.Serialization.CrossModel header.RomCenter = new Data.Models.Logiqx.RomCenter(); if (plugin is not null) header.RomCenter.Plugin = plugin; - if (romMode is not null) + if (romMode is not Data.Models.Metadata.MergingFlag.None) header.RomCenter.RomMode = romMode; - if (biosMode is not null) + if (biosMode is not Data.Models.Metadata.MergingFlag.None) header.RomCenter.BiosMode = biosMode; - if (sampleMode is not null) + if (sampleMode is not Data.Models.Metadata.MergingFlag.None) header.RomCenter.SampleMode = sampleMode; if (lockRomMode is not null) header.RomCenter.LockRomMode = lockRomMode; @@ -236,7 +236,7 @@ namespace SabreTools.Serialization.CrossModel MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey), - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey), }; return disk; @@ -249,10 +249,10 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Driver { - Status = item.ReadString(Data.Models.Metadata.Driver.StatusKey), - Emulation = item.ReadString(Data.Models.Metadata.Driver.EmulationKey), - Cocktail = item.ReadString(Data.Models.Metadata.Driver.CocktailKey), - SaveState = item.ReadString(Data.Models.Metadata.Driver.SaveStateKey), + Status = item.Status, + Emulation = item.Emulation, + Cocktail = item.Cocktail, + SaveState = item.SaveState, RequiresArtwork = item.RequiresArtwork, Unofficial = item.Unofficial, NoSoundHardware = item.NoSoundHardware, @@ -318,7 +318,7 @@ namespace SabreTools.Serialization.CrossModel xxHash364 = item.ReadString(Data.Models.Metadata.Rom.xxHash364Key), xxHash3128 = item.ReadString(Data.Models.Metadata.Rom.xxHash3128Key), Merge = item.ReadString(Data.Models.Metadata.Rom.MergeKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), + Status = item.Status, Serial = item.ReadString(Data.Models.Metadata.Rom.SerialKey), Header = item.ReadString(Data.Models.Metadata.Rom.HeaderKey), Date = item.ReadString(Data.Models.Metadata.Rom.DateKey), @@ -349,7 +349,7 @@ namespace SabreTools.Serialization.CrossModel { Tag = item.ReadString(Data.Models.Metadata.SoftwareList.TagKey), Name = item.Name, - Status = item.ReadString(Data.Models.Metadata.SoftwareList.StatusKey), + Status = item.Status, Filter = item.ReadString(Data.Models.Metadata.SoftwareList.FilterKey), }; return softwareList; diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index b2d21245..631990fd 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -54,7 +54,7 @@ namespace SabreTools.Serialization.CrossModel var header = new Data.Models.Metadata.Header { [Data.Models.Metadata.Header.IdKey] = item.Id, - Name = item.Name, + Name = item.Name, [Data.Models.Metadata.Header.DescriptionKey] = item.Description, [Data.Models.Metadata.Header.RootDirKey] = item.RootDir, [Data.Models.Metadata.Header.CategoryKey] = item.Category, @@ -71,17 +71,17 @@ namespace SabreTools.Serialization.CrossModel if (item.ClrMamePro is not null) { header[Data.Models.Metadata.Header.HeaderKey] = item.ClrMamePro.Header; - header[Data.Models.Metadata.Header.ForceMergingKey] = item.ClrMamePro.ForceMerging; - header[Data.Models.Metadata.Header.ForceNodumpKey] = item.ClrMamePro.ForceNodump; - header[Data.Models.Metadata.Header.ForcePackingKey] = item.ClrMamePro.ForcePacking; + header.ForceMerging = item.ClrMamePro.ForceMerging; + header.ForceNodump = item.ClrMamePro.ForceNodump; + header.ForcePacking = item.ClrMamePro.ForcePacking; } if (item.RomCenter is not null) { header[Data.Models.Metadata.Header.PluginKey] = item.RomCenter.Plugin; - header[Data.Models.Metadata.Header.RomModeKey] = item.RomCenter.RomMode; - header[Data.Models.Metadata.Header.BiosModeKey] = item.RomCenter.BiosMode; - header[Data.Models.Metadata.Header.SampleModeKey] = item.RomCenter.SampleMode; + header.RomMode = item.RomCenter.RomMode; + header.BiosMode = item.RomCenter.BiosMode; + header.SampleMode = item.RomCenter.SampleMode; header.LockRomMode = item.RomCenter.LockRomMode; header.LockBiosMode = item.RomCenter.LockBiosMode; header.LockSampleMode = item.RomCenter.LockSampleMode; @@ -230,7 +230,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, [Data.Models.Metadata.Disk.MergeKey] = item.Merge, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.Disk.RegionKey] = item.Region, }; return disk; @@ -243,10 +243,10 @@ namespace SabreTools.Serialization.CrossModel { var driver = new Data.Models.Metadata.Driver { - [Data.Models.Metadata.Driver.StatusKey] = item.Status, - [Data.Models.Metadata.Driver.EmulationKey] = item.Emulation, - [Data.Models.Metadata.Driver.CocktailKey] = item.Cocktail, - [Data.Models.Metadata.Driver.SaveStateKey] = item.SaveState, + Status = item.Status, + Emulation = item.Emulation, + Cocktail = item.Cocktail, + SaveState = item.SaveState, RequiresArtwork = item.RequiresArtwork, Unofficial = item.Unofficial, NoSoundHardware = item.NoSoundHardware, @@ -312,7 +312,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.xxHash364Key] = item.xxHash364, [Data.Models.Metadata.Rom.xxHash3128Key] = item.xxHash3128, [Data.Models.Metadata.Rom.MergeKey] = item.Merge, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.Rom.SerialKey] = item.Serial, [Data.Models.Metadata.Rom.HeaderKey] = item.Header, [Data.Models.Metadata.Rom.DateKey] = item.Date, @@ -343,7 +343,7 @@ namespace SabreTools.Serialization.CrossModel { [Data.Models.Metadata.SoftwareList.TagKey] = item.Tag, Name = item.Name, - [Data.Models.Metadata.SoftwareList.StatusKey] = item.Status, + Status = item.Status, [Data.Models.Metadata.SoftwareList.FilterKey] = item.Filter, }; return softwareList; diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index 35121c7e..cf6ff86a 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -55,14 +55,14 @@ namespace SabreTools.Serialization.CrossModel if (item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey) || item.ContainsKey(Data.Models.Metadata.Header.PluginKey) - || item.ContainsKey(Data.Models.Metadata.Header.ForceMergingKey)) + || item.ForceMerging != Data.Models.Metadata.MergingFlag.None) { metadataFile.Dat = new Dat { Version = item.ReadString(Data.Models.Metadata.Header.DatVersionKey), Plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey), - Split = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey) == "split" ? "yes" : "no", - Merge = item.ReadString(Data.Models.Metadata.Header.ForceMergingKey) == "merge" ? "yes" : "no", + Split = item.ForceMerging == Data.Models.Metadata.MergingFlag.Split ? "yes" : "no", + Merge = item.ForceMerging == Data.Models.Metadata.MergingFlag.Merged ? "yes" : "no", }; } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 7e77deec..ef281c82 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -49,9 +49,9 @@ namespace SabreTools.Serialization.CrossModel header[Data.Models.Metadata.Header.PluginKey] = item.Dat.Plugin; if (item.Dat.Split == "yes" || item.Dat.Split == "1") - header[Data.Models.Metadata.Header.ForceMergingKey] = "split"; + header.ForceMerging = Data.Models.Metadata.MergingFlag.Split; else if (item.Dat.Merge == "yes" || item.Dat.Merge == "1") - header[Data.Models.Metadata.Header.ForceMergingKey] = "merge"; + header.ForceMerging = Data.Models.Metadata.MergingFlag.Merged; } if (item.Emulator is not null) diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index 38ac7b00..a5467b35 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -92,7 +92,7 @@ namespace SabreTools.Serialization.CrossModel SHA384 = null, SHA512 = null, SpamSum = null, - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, }; return row; } @@ -147,7 +147,7 @@ namespace SabreTools.Serialization.CrossModel SHA384 = item.ReadString(Data.Models.Metadata.Rom.SHA384Key), SHA512 = item.ReadString(Data.Models.Metadata.Rom.SHA512Key), SpamSum = item.ReadString(Data.Models.Metadata.Rom.SpamSumKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), + Status = item.Status, }; return row; } diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index 5b98e28f..04b4c421 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -92,7 +92,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.DiskName, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, }, "media" => new Data.Models.Metadata.Media { @@ -113,7 +113,7 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.SHA384Key] = item.SHA384, [Data.Models.Metadata.Rom.SHA512Key] = item.SHA512, [Data.Models.Metadata.Rom.SpamSumKey] = item.SpamSum, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, + Status = item.Status, }, _ => null, }; diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index 987962da..4d0cc5b2 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -44,7 +44,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, CloneOf = item.ReadString(Data.Models.Metadata.Machine.CloneOfKey), - Supported = item.ReadString(Data.Models.Metadata.Machine.SupportedKey), + Supported = item.Supported, Description = item.ReadString(Data.Models.Metadata.Machine.DescriptionKey), Year = item.ReadString(Data.Models.Metadata.Machine.YearKey), Publisher = item.ReadString(Data.Models.Metadata.Machine.PublisherKey), @@ -76,7 +76,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, Size = item.ReadString(Data.Models.Metadata.DataArea.SizeKey), Width = item.ReadString(Data.Models.Metadata.DataArea.WidthKey), - Endianness = item.ReadString(Data.Models.Metadata.DataArea.EndiannessKey), + Endianness = item.Endianness, }; var roms = item.Read(Data.Models.Metadata.DataArea.RomKey); @@ -129,7 +129,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key), SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key), - Status = item.ReadString(Data.Models.Metadata.Disk.StatusKey), + Status = item.Status, Writeable = item.Writable, }; return disk; @@ -222,8 +222,8 @@ namespace SabreTools.Serialization.CrossModel SHA1 = item.ReadString(Data.Models.Metadata.Rom.SHA1Key), Offset = item.ReadString(Data.Models.Metadata.Rom.OffsetKey), Value = item.ReadString(Data.Models.Metadata.Rom.ValueKey), - Status = item.ReadString(Data.Models.Metadata.Rom.StatusKey), - LoadFlag = item.ReadString(Data.Models.Metadata.Rom.LoadFlagKey), + Status = item.Status, + LoadFlag = item.LoadFlag, }; return rom; } diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index 7fcdeee8..ec6a69f3 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -48,7 +48,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, [Data.Models.Metadata.Machine.CloneOfKey] = item.CloneOf, - [Data.Models.Metadata.Machine.SupportedKey] = item.Supported, + Supported = item.Supported, [Data.Models.Metadata.Machine.DescriptionKey] = item.Description, [Data.Models.Metadata.Machine.YearKey] = item.Year, [Data.Models.Metadata.Machine.PublisherKey] = item.Publisher, @@ -77,7 +77,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, [Data.Models.Metadata.DataArea.SizeKey] = item.Size, [Data.Models.Metadata.DataArea.WidthKey] = item.Width, - [Data.Models.Metadata.DataArea.EndiannessKey] = item.Endianness, + Endianness = item.Endianness, }; if (item.Rom is not null && item.Rom.Length > 0) @@ -128,7 +128,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, [Data.Models.Metadata.Disk.MD5Key] = item.MD5, [Data.Models.Metadata.Disk.SHA1Key] = item.SHA1, - [Data.Models.Metadata.Disk.StatusKey] = item.Status, + Status = item.Status, Writable = item.Writeable, }; return disk; @@ -216,8 +216,8 @@ namespace SabreTools.Serialization.CrossModel [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, [Data.Models.Metadata.Rom.OffsetKey] = item.Offset, [Data.Models.Metadata.Rom.ValueKey] = item.Value, - [Data.Models.Metadata.Rom.StatusKey] = item.Status, - [Data.Models.Metadata.Rom.LoadFlagKey] = item.LoadFlag, + Status = item.Status, + LoadFlag = item.LoadFlag, }; return rom; } diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs index e2d4abb2..d73828d0 100644 --- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs +++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs @@ -190,9 +190,9 @@ namespace SabreTools.Serialization.Readers.Test Comment = "XXXXXX", Header = "XXXXXX", Type = "XXXXXX", - ForceMerging = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, ForceZipping = true, - ForcePacking = "XXXXXX", + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, }; var release = new Data.Models.ClrMamePro.Release @@ -225,7 +225,7 @@ namespace SabreTools.Serialization.Readers.Test RIPEMD160 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Flags = "XXXXXX", Date = "XXXXXX", SHA256 = "XXXXXX", @@ -248,7 +248,7 @@ namespace SabreTools.Serialization.Readers.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Flags = "XXXXXX", }; @@ -273,7 +273,7 @@ namespace SabreTools.Serialization.Readers.Test var chip = new Data.Models.ClrMamePro.Chip { - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, Name = "XXXXXX", Flags = "XXXXXX", Clock = "XXXXXX", @@ -281,7 +281,7 @@ namespace SabreTools.Serialization.Readers.Test var video = new Data.Models.ClrMamePro.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", X = "XXXXXX", Y = "XXXXXX", @@ -314,11 +314,11 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.ClrMamePro.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Blit = "XXXXXX", + Blit = Data.Models.Metadata.Blit.Plain, }; // TODO: This omits Set, should that have a separate case? @@ -379,9 +379,9 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", cmp.Comment); Assert.Equal("XXXXXX", cmp.Header); Assert.Equal("XXXXXX", cmp.Type); - Assert.Equal("XXXXXX", cmp.ForceMerging); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging); Assert.Equal(true, cmp.ForceZipping); - Assert.Equal("XXXXXX", cmp.ForcePacking); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking); } /// @@ -488,7 +488,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.RIPEMD160); Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Merge); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("XXXXXX", rom.Flags); Assert.Equal("XXXXXX", rom.Date); Assert.Equal("XXXXXX", rom.SHA256); @@ -515,7 +515,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal("XXXXXX", disk.Flags); } @@ -556,7 +556,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Chip? chip) { Assert.NotNull(chip); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Flags); Assert.Equal("XXXXXX", chip.Clock); @@ -568,7 +568,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.X); Assert.Equal("XXXXXX", video.Y); @@ -621,11 +621,11 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.ClrMamePro.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Blit); + Assert.Equal(Data.Models.Metadata.Blit.Plain, driver.Blit); } /// diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs index 835a4db2..6cfd1795 100644 --- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs +++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs @@ -147,7 +147,7 @@ namespace SabreTools.Serialization.Readers.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -162,7 +162,7 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -180,7 +180,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -188,7 +188,7 @@ namespace SabreTools.Serialization.Readers.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -221,7 +221,7 @@ namespace SabreTools.Serialization.Readers.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -250,7 +250,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -324,13 +324,13 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -339,9 +339,9 @@ namespace SabreTools.Serialization.Readers.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -357,7 +357,7 @@ namespace SabreTools.Serialization.Readers.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -383,7 +383,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -559,7 +559,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -578,7 +578,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -608,7 +608,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -620,7 +620,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -641,7 +641,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -683,7 +683,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -725,7 +725,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -834,13 +834,13 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -853,9 +853,9 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -864,7 +864,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -927,7 +927,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs index 0b461d03..1182957d 100644 --- a/SabreTools.Serialization.Readers.Test/LogiqxTests.cs +++ b/SabreTools.Serialization.Readers.Test/LogiqxTests.cs @@ -141,17 +141,17 @@ namespace SabreTools.Serialization.Readers.Test var clrmamepro = new Data.Models.Logiqx.ClrMamePro { Header = "XXXXXX", - ForceMerging = "XXXXXX", - ForceNodump = "XXXXXX", - ForcePacking = "XXXXXX", + ForceMerging = Data.Models.Metadata.MergingFlag.Merged, + ForceNodump = Data.Models.Metadata.NodumpFlag.Required, + ForcePacking = Data.Models.Metadata.PackingFlag.Zip, }; var romcenter = new Data.Models.Logiqx.RomCenter { Plugin = "XXXXXX", - RomMode = "XXXXXX", - BiosMode = "XXXXXX", - SampleMode = "XXXXXX", + RomMode = Data.Models.Metadata.MergingFlag.Merged, + BiosMode = Data.Models.Metadata.MergingFlag.Merged, + SampleMode = Data.Models.Metadata.MergingFlag.Merged, LockRomMode = true, LockBiosMode = true, LockSampleMode = true, @@ -230,7 +230,7 @@ namespace SabreTools.Serialization.Readers.Test xxHash364 = "XXXXXX", xxHash3128 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Serial = "XXXXXX", Header = "XXXXXX", Date = "XXXXXX", @@ -244,7 +244,7 @@ namespace SabreTools.Serialization.Readers.Test MD5 = "XXXXXX", SHA1 = "XXXXXX", Merge = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Region = "XXXXXX", }; @@ -274,10 +274,10 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.Logiqx.Driver { - Status = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -288,7 +288,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -367,9 +367,9 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(cmp); Assert.Equal("XXXXXX", cmp.Header); - Assert.Equal("XXXXXX", cmp.ForceMerging); - Assert.Equal("XXXXXX", cmp.ForceNodump); - Assert.Equal("XXXXXX", cmp.ForcePacking); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, cmp.ForceMerging); + Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, cmp.ForceNodump); + Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, cmp.ForcePacking); } /// @@ -379,9 +379,9 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(rc); Assert.Equal("XXXXXX", rc.Plugin); - Assert.Equal("XXXXXX", rc.RomMode); - Assert.Equal("XXXXXX", rc.BiosMode); - Assert.Equal("XXXXXX", rc.SampleMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.RomMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.BiosMode); + Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rc.SampleMode); Assert.Equal(true, rc.LockRomMode); Assert.Equal(true, rc.LockBiosMode); Assert.Equal(true, rc.LockSampleMode); @@ -529,7 +529,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.xxHash364); Assert.Equal("XXXXXX", rom.xxHash3128); Assert.Equal("XXXXXX", rom.Merge); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal("XXXXXX", rom.Serial); Assert.Equal("XXXXXX", rom.Header); Assert.Equal("XXXXXX", rom.Date); @@ -547,7 +547,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); Assert.Equal("XXXXXX", disk.Merge); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal("XXXXXX", disk.Region); } @@ -597,10 +597,10 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Logiqx.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -615,7 +615,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } } diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs index aa00abaf..cbff6514 100644 --- a/SabreTools.Serialization.Readers.Test/M1Tests.cs +++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs @@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Readers.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -158,7 +158,7 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -176,7 +176,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -184,7 +184,7 @@ namespace SabreTools.Serialization.Readers.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -201,7 +201,7 @@ namespace SabreTools.Serialization.Readers.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -217,7 +217,7 @@ namespace SabreTools.Serialization.Readers.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -246,7 +246,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -320,13 +320,13 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -335,9 +335,9 @@ namespace SabreTools.Serialization.Readers.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -353,7 +353,7 @@ namespace SabreTools.Serialization.Readers.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -379,7 +379,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -553,7 +553,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -602,7 +602,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -614,7 +614,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -635,7 +635,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -677,7 +677,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -719,7 +719,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -828,13 +828,13 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -847,9 +847,9 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -858,7 +858,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -921,7 +921,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs index 1b4d77dd..4b798855 100644 --- a/SabreTools.Serialization.Readers.Test/MessTests.cs +++ b/SabreTools.Serialization.Readers.Test/MessTests.cs @@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Readers.Test Merge = "XXXXXX", Region = "XXXXXX", Offset = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, Dispose = true, SoundOnly = true, @@ -158,7 +158,7 @@ namespace SabreTools.Serialization.Readers.Test Region = "XXXXXX", Index = "XXXXXX", Writable = true, - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Optional = true, }; @@ -176,7 +176,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.ChipType.CPU, SoundOnly = true, Clock = "XXXXXX", }; @@ -184,7 +184,7 @@ namespace SabreTools.Serialization.Readers.Test var display = new Data.Models.Listxml.Display { Tag = "XXXXXX", - Type = "XXXXXX", + Type = Data.Models.Metadata.DisplayType.Vector, Rotate = "XXXXXX", FlipX = true, Width = "XXXXXX", @@ -201,7 +201,7 @@ namespace SabreTools.Serialization.Readers.Test var video = new Data.Models.Listxml.Video { - Screen = "XXXXXX", + Screen = Data.Models.Metadata.DisplayType.Vector, Orientation = "XXXXXX", Width = "XXXXXX", Height = "XXXXXX", @@ -217,7 +217,7 @@ namespace SabreTools.Serialization.Readers.Test var control = new Data.Models.Listxml.Control { - Type = "XXXXXX", + Type = Data.Models.Metadata.ControlType.Lightgun, Player = "XXXXXX", Buttons = "XXXXXX", ReqButtons = "XXXXXX", @@ -246,7 +246,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Mask = "XXXXXX", - Relation = "XXXXXX", + Relation = Data.Models.Metadata.Relation.Equal, Value = "XXXXXX", }; @@ -320,13 +320,13 @@ namespace SabreTools.Serialization.Readers.Test var driver = new Data.Models.Listxml.Driver { - Status = "XXXXXX", - Color = "XXXXXX", - Sound = "XXXXXX", + Status = Data.Models.Metadata.SupportStatus.Good, + Color = Data.Models.Metadata.SupportStatus.Good, + Sound = Data.Models.Metadata.SupportStatus.Good, PaletteSize = "XXXXXX", - Emulation = "XXXXXX", - Cocktail = "XXXXXX", - SaveState = "XXXXXX", + Emulation = Data.Models.Metadata.SupportStatus.Good, + Cocktail = Data.Models.Metadata.SupportStatus.Good, + SaveState = Data.Models.Metadata.Supported.Yes, RequiresArtwork = true, Unofficial = true, NoSoundHardware = true, @@ -335,9 +335,9 @@ namespace SabreTools.Serialization.Readers.Test var feature = new Data.Models.Listxml.Feature { - Type = "XXXXXX", - Status = "XXXXXX", - Overall = "XXXXXX", + Type = Data.Models.Metadata.FeatureType.Protection, + Status = Data.Models.Metadata.FeatureStatus.Imperfect, + Overall = Data.Models.Metadata.FeatureStatus.Imperfect, }; var instance = new Data.Models.Listxml.Instance @@ -353,7 +353,7 @@ namespace SabreTools.Serialization.Readers.Test var device = new Data.Models.Listxml.Device { - Type = "XXXXXX", + Type = Data.Models.Metadata.DeviceType.PunchTape, Tag = "XXXXXX", FixedImage = "XXXXXX", Mandatory = "XXXXXX", @@ -379,7 +379,7 @@ namespace SabreTools.Serialization.Readers.Test { Tag = "XXXXXX", Name = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.SoftwareListStatus.Original, Filter = "XXXXXX", }; @@ -553,7 +553,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.Merge); Assert.Equal("XXXXXX", rom.Region); Assert.Equal("XXXXXX", rom.Offset); - Assert.Equal("XXXXXX", rom.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); Assert.Equal(true, rom.Optional); Assert.Equal(true, rom.Dispose); Assert.Equal(true, rom.SoundOnly); @@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Region); Assert.Equal("XXXXXX", disk.Index); Assert.Equal(true, disk.Writable); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Optional); } @@ -602,7 +602,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(chip); Assert.Equal("XXXXXX", chip.Name); Assert.Equal("XXXXXX", chip.Tag); - Assert.Equal("XXXXXX", chip.Type); + Assert.Equal(Data.Models.Metadata.ChipType.CPU, chip.Type); Assert.Equal(true, chip.SoundOnly); Assert.Equal("XXXXXX", chip.Clock); } @@ -614,7 +614,7 @@ namespace SabreTools.Serialization.Readers.Test { Assert.NotNull(display); Assert.Equal("XXXXXX", display.Tag); - Assert.Equal("XXXXXX", display.Type); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.Type); Assert.Equal("XXXXXX", display.Rotate); Assert.Equal(true, display.FlipX); Assert.Equal("XXXXXX", display.Width); @@ -635,7 +635,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Video? video) { Assert.NotNull(video); - Assert.Equal("XXXXXX", video.Screen); + Assert.Equal(Data.Models.Metadata.DisplayType.Vector, video.Screen); Assert.Equal("XXXXXX", video.Orientation); Assert.Equal("XXXXXX", video.Width); Assert.Equal("XXXXXX", video.Height); @@ -677,7 +677,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Control? control) { Assert.NotNull(control); - Assert.Equal("XXXXXX", control.Type); + Assert.Equal(Data.Models.Metadata.ControlType.Lightgun, control.Type); Assert.Equal("XXXXXX", control.Player); Assert.Equal("XXXXXX", control.Buttons); Assert.Equal("XXXXXX", control.ReqButtons); @@ -719,7 +719,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(condition); Assert.Equal("XXXXXX", condition.Tag); Assert.Equal("XXXXXX", condition.Mask); - Assert.Equal("XXXXXX", condition.Relation); + Assert.Equal(Data.Models.Metadata.Relation.Equal, condition.Relation); Assert.Equal("XXXXXX", condition.Value); } @@ -828,13 +828,13 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Driver? driver) { Assert.NotNull(driver); - Assert.Equal("XXXXXX", driver.Status); - Assert.Equal("XXXXXX", driver.Color); - Assert.Equal("XXXXXX", driver.Sound); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Status); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Color); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound); Assert.Equal("XXXXXX", driver.PaletteSize); - Assert.Equal("XXXXXX", driver.Emulation); - Assert.Equal("XXXXXX", driver.Cocktail); - Assert.Equal("XXXXXX", driver.SaveState); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation); + Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Cocktail); + Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState); Assert.Equal(true, driver.RequiresArtwork); Assert.Equal(true, driver.Unofficial); Assert.Equal(true, driver.NoSoundHardware); @@ -847,9 +847,9 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Feature? feature) { Assert.NotNull(feature); - Assert.Equal("XXXXXX", feature.Type); - Assert.Equal("XXXXXX", feature.Status); - Assert.Equal("XXXXXX", feature.Overall); + Assert.Equal(Data.Models.Metadata.FeatureType.Protection, feature.Type); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Status); + Assert.Equal(Data.Models.Metadata.FeatureStatus.Imperfect, feature.Overall); } /// @@ -858,7 +858,7 @@ namespace SabreTools.Serialization.Readers.Test private static void Validate(Data.Models.Listxml.Device? device) { Assert.NotNull(device); - Assert.Equal("XXXXXX", device.Type); + Assert.Equal(Data.Models.Metadata.DeviceType.PunchTape, device.Type); Assert.Equal("XXXXXX", device.Tag); Assert.Equal("XXXXXX", device.FixedImage); Assert.Equal("XXXXXX", device.Mandatory); @@ -921,7 +921,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(softwarelist); Assert.Equal("XXXXXX", softwarelist.Tag); Assert.Equal("XXXXXX", softwarelist.Name); - Assert.Equal("XXXXXX", softwarelist.Status); + Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwarelist.Status); Assert.Equal("XXXXXX", softwarelist.Filter); } diff --git a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs index 1d7d5c4f..0c4711bd 100644 --- a/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs +++ b/SabreTools.Serialization.Readers.Test/SeparatedValueTests.cs @@ -144,7 +144,7 @@ namespace SabreTools.Serialization.Readers.Test DiskName = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, }; var media = new Data.Models.SeparatedValue.Row @@ -179,7 +179,7 @@ namespace SabreTools.Serialization.Readers.Test SHA384 = "XXXXXX", SHA512 = "XXXXXX", SpamSum = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, }; return new Data.Models.SeparatedValue.MetadataFile @@ -233,7 +233,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Null(row.SpamSum); } - Assert.Equal("XXXXXX", row.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status); } /// @@ -268,7 +268,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Null(row.SpamSum); } - Assert.NotNull(row.Status); Assert.Empty(row.Status); + Assert.Null(row.Status); } /// @@ -304,7 +304,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Null(row.SpamSum); } - Assert.Equal("XXXXXX", row.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, row.Status); } } } diff --git a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs index d90e1ded..f3ccbab4 100644 --- a/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs +++ b/SabreTools.Serialization.Readers.Test/SoftwareListTests.cs @@ -136,8 +136,8 @@ namespace SabreTools.Serialization.Readers.Test SHA1 = "XXXXXX", Offset = "XXXXXX", Value = "XXXXXX", - Status = "XXXXXX", - LoadFlag = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, + LoadFlag = Data.Models.Metadata.LoadFlag.Load16Byte, }; var dataarea = new Data.Models.SoftwareList.DataArea @@ -145,7 +145,7 @@ namespace SabreTools.Serialization.Readers.Test Name = "XXXXXX", Size = "XXXXXX", Width = "XXXXXX", - Endianness = "XXXXXX", + Endianness = Data.Models.Metadata.Endianness.Big, Rom = [rom], }; @@ -154,7 +154,7 @@ namespace SabreTools.Serialization.Readers.Test Name = "XXXXXX", MD5 = "XXXXXX", SHA1 = "XXXXXX", - Status = "XXXXXX", + Status = Data.Models.Metadata.ItemStatus.Good, Writeable = true, }; @@ -193,7 +193,7 @@ namespace SabreTools.Serialization.Readers.Test { Name = "XXXXXX", CloneOf = "XXXXXX", - Supported = "XXXXXX", + Supported = Data.Models.Metadata.Supported.Yes, Description = "XXXXXX", Year = "XXXXXX", Publisher = "XXXXXX", @@ -220,7 +220,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.NotNull(software); Assert.Equal("XXXXXX", software.Name); Assert.Equal("XXXXXX", software.CloneOf); - Assert.Equal("XXXXXX", software.Supported); + Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported); Assert.Equal("XXXXXX", software.Description); Assert.Equal("XXXXXX", software.Year); Assert.Equal("XXXXXX", software.Publisher); @@ -304,7 +304,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", dataarea.Name); Assert.Equal("XXXXXX", dataarea.Size); Assert.Equal("XXXXXX", dataarea.Width); - Assert.Equal("XXXXXX", dataarea.Endianness); + Assert.Equal(Data.Models.Metadata.Endianness.Big, dataarea.Endianness); Assert.NotNull(dataarea.Rom); var rom = Assert.Single(dataarea.Rom); @@ -324,8 +324,8 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", rom.SHA1); Assert.Equal("XXXXXX", rom.Offset); Assert.Equal("XXXXXX", rom.Value); - Assert.Equal("XXXXXX", rom.Status); - Assert.Equal("XXXXXX", rom.LoadFlag); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, rom.Status); + Assert.Equal(Data.Models.Metadata.LoadFlag.Load16Byte, rom.LoadFlag); } /// @@ -350,7 +350,7 @@ namespace SabreTools.Serialization.Readers.Test Assert.Equal("XXXXXX", disk.Name); Assert.Equal("XXXXXX", disk.MD5); Assert.Equal("XXXXXX", disk.SHA1); - Assert.Equal("XXXXXX", disk.Status); + Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status); Assert.Equal(true, disk.Writeable); } diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs index 75e973e1..0ce08e58 100644 --- a/SabreTools.Serialization.Readers/ClrMamePro.cs +++ b/SabreTools.Serialization.Readers/ClrMamePro.cs @@ -245,13 +245,15 @@ namespace SabreTools.Serialization.Readers dat.ClrMamePro.Type = reader.Standalone?.Value; break; case "forcemerging": - dat.ClrMamePro.ForceMerging = reader.Standalone?.Value; + dat.ClrMamePro.ForceMerging = reader.Standalone?.Value?.AsMergingFlag() + ?? Data.Models.Metadata.MergingFlag.None; break; case "forcezipping": dat.ClrMamePro.ForceZipping = reader.Standalone?.Value?.AsYesNo(); break; case "forcepacking": - dat.ClrMamePro.ForcePacking = reader.Standalone?.Value; + dat.ClrMamePro.ForcePacking = reader.Standalone?.Value?.AsPackingFlag() + ?? Data.Models.Metadata.PackingFlag.None; break; default: // TODO: Log invalid values @@ -578,7 +580,7 @@ namespace SabreTools.Serialization.Readers rom.Merge = kvp.Value; break; case "status": - rom.Status = kvp.Value; + rom.Status = kvp.Value.AsItemStatus(); break; case "region": rom.Region = kvp.Value; @@ -641,7 +643,7 @@ namespace SabreTools.Serialization.Readers disk.Merge = kvp.Value; break; case "status": - disk.Status = kvp.Value; + disk.Status = kvp.Value.AsItemStatus(); break; case "flags": disk.Flags = kvp.Value; @@ -764,7 +766,7 @@ namespace SabreTools.Serialization.Readers switch (kvp.Key?.ToLowerInvariant()) { case "type": - chip.Type = kvp.Value; + chip.Type = kvp.Value.AsChipType(); break; case "name": chip.Name = kvp.Value; @@ -800,7 +802,7 @@ namespace SabreTools.Serialization.Readers switch (kvp.Key?.ToLowerInvariant()) { case "screen": - video.Screen = kvp.Value; + video.Screen = kvp.Value.AsDisplayType(); break; case "orientation": video.Orientation = kvp.Value; @@ -949,19 +951,19 @@ namespace SabreTools.Serialization.Readers switch (kvp.Key?.ToLowerInvariant()) { case "status": - driver.Status = kvp.Value; + driver.Status = kvp.Value.AsSupportStatus(); break; case "color": - driver.Color = kvp.Value; + driver.Color = kvp.Value.AsSupportStatus(); break; case "sound": - driver.Sound = kvp.Value; + driver.Sound = kvp.Value.AsSupportStatus(); break; case "palettesize": driver.PaletteSize = kvp.Value; break; case "blit": - driver.Blit = kvp.Value; + driver.Blit = kvp.Value.AsBlit(); break; default: // TODO: Log invalid values diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs index 11167434..2b868c56 100644 --- a/SabreTools.Serialization.Readers/Listxml.cs +++ b/SabreTools.Serialization.Readers/Listxml.cs @@ -189,7 +189,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsChipType(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); obj.Clock = reader.GetAttribute("clock"); @@ -207,7 +207,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); - obj.Relation = reader.GetAttribute("relation"); + obj.Relation = reader.GetAttribute("relation").AsRelation(); obj.Value = reader.GetAttribute("value"); return obj; @@ -340,7 +340,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Control(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsControlType(); obj.Player = reader.GetAttribute("player"); obj.Buttons = reader.GetAttribute("buttons"); obj.ReqButtons = reader.GetAttribute("reqbuttons"); @@ -365,7 +365,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Device(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDeviceType(); obj.Tag = reader.GetAttribute("tag"); obj.FixedImage = reader.GetAttribute("fixed_image"); obj.Mandatory = reader.GetAttribute("mandatory"); @@ -558,7 +558,7 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Index = reader.GetAttribute("index"); obj.Writable = reader.GetAttribute("writable").AsYesNo(); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); return obj; @@ -574,7 +574,7 @@ namespace SabreTools.Serialization.Readers var obj = new Display(); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDisplayType(); obj.Rotate = reader.GetAttribute("rotate"); obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); @@ -600,13 +600,13 @@ namespace SabreTools.Serialization.Readers { var obj = new Driver(); - obj.Status = reader.GetAttribute("status"); - obj.Color = reader.GetAttribute("color"); - obj.Sound = reader.GetAttribute("sound"); + obj.Status = reader.GetAttribute("status").AsSupportStatus(); + obj.Color = reader.GetAttribute("color").AsSupportStatus(); + obj.Sound = reader.GetAttribute("sound").AsSupportStatus(); obj.PaletteSize = reader.GetAttribute("palettesize"); - obj.Emulation = reader.GetAttribute("emulation"); - obj.Cocktail = reader.GetAttribute("cocktail"); - obj.SaveState = reader.GetAttribute("savestate"); + obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus(); + obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus(); + obj.SaveState = reader.GetAttribute("savestate").AsSupported(); obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); @@ -638,9 +638,9 @@ namespace SabreTools.Serialization.Readers { var obj = new Feature(); - obj.Type = reader.GetAttribute("type"); - obj.Status = reader.GetAttribute("status"); - obj.Overall = reader.GetAttribute("overall"); + obj.Type = reader.GetAttribute("type").AsFeatureType(); + obj.Status = reader.GetAttribute("status").AsFeatureStatus(); + obj.Overall = reader.GetAttribute("overall").AsFeatureStatus(); return obj; } @@ -1052,7 +1052,7 @@ namespace SabreTools.Serialization.Readers obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); obj.Offset = reader.GetAttribute("offset"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); obj.Dispose = reader.GetAttribute("dispose").AsYesNo(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); @@ -1145,7 +1145,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Name = reader.GetAttribute("name"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsSoftwareListStatus(); obj.Filter = reader.GetAttribute("filter"); return obj; @@ -1174,7 +1174,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Video(); - obj.Screen = reader.GetAttribute("screen"); + obj.Screen = reader.GetAttribute("screen").AsDisplayType(); obj.Orientation = reader.GetAttribute("orientation"); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); diff --git a/SabreTools.Serialization.Readers/Logiqx.cs b/SabreTools.Serialization.Readers/Logiqx.cs index 07ac5fae..37c05445 100644 --- a/SabreTools.Serialization.Readers/Logiqx.cs +++ b/SabreTools.Serialization.Readers/Logiqx.cs @@ -136,9 +136,9 @@ namespace SabreTools.Serialization.Readers var obj = new Data.Models.Logiqx.ClrMamePro(); obj.Header = reader.GetAttribute("header"); - obj.ForceMerging = reader.GetAttribute("forcemerging"); - obj.ForceNodump = reader.GetAttribute("forcenodump"); - obj.ForcePacking = reader.GetAttribute("forcepacking"); + obj.ForceMerging = reader.GetAttribute("forcemerging").AsMergingFlag(); + obj.ForceNodump = reader.GetAttribute("forcenodump").AsNodumpFlag(); + obj.ForcePacking = reader.GetAttribute("forcepacking").AsPackingFlag(); return obj; } @@ -278,9 +278,9 @@ namespace SabreTools.Serialization.Readers var obj = new Data.Models.Logiqx.RomCenter(); obj.Plugin = reader.GetAttribute("plugin"); - obj.RomMode = reader.GetAttribute("rommode"); - obj.BiosMode = reader.GetAttribute("biosmode"); - obj.SampleMode = reader.GetAttribute("samplemode"); + obj.RomMode = reader.GetAttribute("rommode").AsMergingFlag(); + obj.BiosMode = reader.GetAttribute("biosmode").AsMergingFlag(); + obj.SampleMode = reader.GetAttribute("samplemode").AsMergingFlag(); obj.LockRomMode = reader.GetAttribute("lockrommode").AsYesNo(); obj.LockBiosMode = reader.GetAttribute("lockbiosmode").AsYesNo(); obj.LockSampleMode = reader.GetAttribute("locksamplemode").AsYesNo(); @@ -403,7 +403,7 @@ namespace SabreTools.Serialization.Readers obj.MD5 = reader.GetAttribute("md5"); obj.SHA1 = reader.GetAttribute("sha1"); obj.Merge = reader.GetAttribute("merge"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Region = reader.GetAttribute("region"); return obj; @@ -418,10 +418,10 @@ namespace SabreTools.Serialization.Readers { var obj = new Driver(); - obj.Status = reader.GetAttribute("status"); - obj.Emulation = reader.GetAttribute("emulation"); - obj.Cocktail = reader.GetAttribute("cocktail"); - obj.SaveState = reader.GetAttribute("savestate"); + obj.Status = reader.GetAttribute("status").AsSupportStatus(); + obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus(); + obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus(); + obj.SaveState = reader.GetAttribute("savestate").AsSupported(); obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); @@ -706,7 +706,7 @@ namespace SabreTools.Serialization.Readers obj.xxHash364 = reader.GetAttribute("xxh3_64"); obj.xxHash3128 = reader.GetAttribute("xxh3_128"); obj.Merge = reader.GetAttribute("merge"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Serial = reader.GetAttribute("serial"); obj.Header = reader.GetAttribute("header"); obj.Date = reader.GetAttribute("date"); @@ -741,7 +741,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Name = reader.GetAttribute("name"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsSoftwareListStatus(); obj.Filter = reader.GetAttribute("filter"); return obj; diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs index d578edcd..efc59aed 100644 --- a/SabreTools.Serialization.Readers/M1.cs +++ b/SabreTools.Serialization.Readers/M1.cs @@ -187,7 +187,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsChipType(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); obj.Clock = reader.GetAttribute("clock"); @@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); - obj.Relation = reader.GetAttribute("relation"); + obj.Relation = reader.GetAttribute("relation").AsRelation(); obj.Value = reader.GetAttribute("value"); return obj; @@ -338,7 +338,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Control(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsControlType(); obj.Player = reader.GetAttribute("player"); obj.Buttons = reader.GetAttribute("buttons"); obj.ReqButtons = reader.GetAttribute("reqbuttons"); @@ -363,7 +363,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Device(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDeviceType(); obj.Tag = reader.GetAttribute("tag"); obj.FixedImage = reader.GetAttribute("fixed_image"); obj.Mandatory = reader.GetAttribute("mandatory"); @@ -556,7 +556,7 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Index = reader.GetAttribute("index"); obj.Writable = reader.GetAttribute("writable").AsYesNo(); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); return obj; @@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers var obj = new Display(); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDisplayType(); obj.Rotate = reader.GetAttribute("rotate"); obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); @@ -598,13 +598,13 @@ namespace SabreTools.Serialization.Readers { var obj = new Driver(); - obj.Status = reader.GetAttribute("status"); - obj.Color = reader.GetAttribute("color"); - obj.Sound = reader.GetAttribute("sound"); + obj.Status = reader.GetAttribute("status").AsSupportStatus(); + obj.Color = reader.GetAttribute("color").AsSupportStatus(); + obj.Sound = reader.GetAttribute("sound").AsSupportStatus(); obj.PaletteSize = reader.GetAttribute("palettesize"); - obj.Emulation = reader.GetAttribute("emulation"); - obj.Cocktail = reader.GetAttribute("cocktail"); - obj.SaveState = reader.GetAttribute("savestate"); + obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus(); + obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus(); + obj.SaveState = reader.GetAttribute("savestate").AsSupported(); obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); @@ -636,9 +636,9 @@ namespace SabreTools.Serialization.Readers { var obj = new Feature(); - obj.Type = reader.GetAttribute("type"); - obj.Status = reader.GetAttribute("status"); - obj.Overall = reader.GetAttribute("overall"); + obj.Type = reader.GetAttribute("type").AsFeatureType(); + obj.Status = reader.GetAttribute("status").AsFeatureStatus(); + obj.Overall = reader.GetAttribute("overall").AsFeatureStatus(); return obj; } @@ -1050,7 +1050,7 @@ namespace SabreTools.Serialization.Readers obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); obj.Offset = reader.GetAttribute("offset"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); obj.Dispose = reader.GetAttribute("dispose").AsYesNo(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); @@ -1143,7 +1143,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Name = reader.GetAttribute("name"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsSoftwareListStatus(); obj.Filter = reader.GetAttribute("filter"); return obj; @@ -1172,7 +1172,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Video(); - obj.Screen = reader.GetAttribute("screen"); + obj.Screen = reader.GetAttribute("screen").AsDisplayType(); obj.Orientation = reader.GetAttribute("orientation"); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs index 3549b4b3..bf568a0e 100644 --- a/SabreTools.Serialization.Readers/Mess.cs +++ b/SabreTools.Serialization.Readers/Mess.cs @@ -187,7 +187,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsChipType(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); obj.Clock = reader.GetAttribute("clock"); @@ -205,7 +205,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Mask = reader.GetAttribute("mask"); - obj.Relation = reader.GetAttribute("relation"); + obj.Relation = reader.GetAttribute("relation").AsRelation(); obj.Value = reader.GetAttribute("value"); return obj; @@ -338,7 +338,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Control(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsControlType(); obj.Player = reader.GetAttribute("player"); obj.Buttons = reader.GetAttribute("buttons"); obj.ReqButtons = reader.GetAttribute("reqbuttons"); @@ -363,7 +363,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Device(); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDeviceType(); obj.Tag = reader.GetAttribute("tag"); obj.FixedImage = reader.GetAttribute("fixed_image"); obj.Mandatory = reader.GetAttribute("mandatory"); @@ -556,7 +556,7 @@ namespace SabreTools.Serialization.Readers obj.Region = reader.GetAttribute("region"); obj.Index = reader.GetAttribute("index"); obj.Writable = reader.GetAttribute("writable").AsYesNo(); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); return obj; @@ -572,7 +572,7 @@ namespace SabreTools.Serialization.Readers var obj = new Display(); obj.Tag = reader.GetAttribute("tag"); - obj.Type = reader.GetAttribute("type"); + obj.Type = reader.GetAttribute("type").AsDisplayType(); obj.Rotate = reader.GetAttribute("rotate"); obj.FlipX = reader.GetAttribute("flipx").AsYesNo(); obj.Width = reader.GetAttribute("width"); @@ -598,13 +598,13 @@ namespace SabreTools.Serialization.Readers { var obj = new Driver(); - obj.Status = reader.GetAttribute("status"); - obj.Color = reader.GetAttribute("color"); - obj.Sound = reader.GetAttribute("sound"); + obj.Status = reader.GetAttribute("status").AsSupportStatus(); + obj.Color = reader.GetAttribute("color").AsSupportStatus(); + obj.Sound = reader.GetAttribute("sound").AsSupportStatus(); obj.PaletteSize = reader.GetAttribute("palettesize"); - obj.Emulation = reader.GetAttribute("emulation"); - obj.Cocktail = reader.GetAttribute("cocktail"); - obj.SaveState = reader.GetAttribute("savestate"); + obj.Emulation = reader.GetAttribute("emulation").AsSupportStatus(); + obj.Cocktail = reader.GetAttribute("cocktail").AsSupportStatus(); + obj.SaveState = reader.GetAttribute("savestate").AsSupported(); obj.RequiresArtwork = reader.GetAttribute("requiresartwork").AsYesNo(); obj.Unofficial = reader.GetAttribute("unofficial").AsYesNo(); obj.NoSoundHardware = reader.GetAttribute("nosoundhardware").AsYesNo(); @@ -636,9 +636,9 @@ namespace SabreTools.Serialization.Readers { var obj = new Feature(); - obj.Type = reader.GetAttribute("type"); - obj.Status = reader.GetAttribute("status"); - obj.Overall = reader.GetAttribute("overall"); + obj.Type = reader.GetAttribute("type").AsFeatureType(); + obj.Status = reader.GetAttribute("status").AsFeatureStatus(); + obj.Overall = reader.GetAttribute("overall").AsFeatureStatus(); return obj; } @@ -1050,7 +1050,7 @@ namespace SabreTools.Serialization.Readers obj.Merge = reader.GetAttribute("merge"); obj.Region = reader.GetAttribute("region"); obj.Offset = reader.GetAttribute("offset"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Optional = reader.GetAttribute("optional").AsYesNo(); obj.Dispose = reader.GetAttribute("dispose").AsYesNo(); obj.SoundOnly = reader.GetAttribute("soundonly").AsYesNo(); @@ -1143,7 +1143,7 @@ namespace SabreTools.Serialization.Readers obj.Tag = reader.GetAttribute("tag"); obj.Name = reader.GetAttribute("name"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsSoftwareListStatus(); obj.Filter = reader.GetAttribute("filter"); return obj; @@ -1172,7 +1172,7 @@ namespace SabreTools.Serialization.Readers { var obj = new Video(); - obj.Screen = reader.GetAttribute("screen"); + obj.Screen = reader.GetAttribute("screen").AsDisplayType(); obj.Orientation = reader.GetAttribute("orientation"); obj.Width = reader.GetAttribute("width"); obj.Height = reader.GetAttribute("height"); diff --git a/SabreTools.Serialization.Readers/SeparatedValue.cs b/SabreTools.Serialization.Readers/SeparatedValue.cs index 7f97de47..a4b27ce8 100644 --- a/SabreTools.Serialization.Readers/SeparatedValue.cs +++ b/SabreTools.Serialization.Readers/SeparatedValue.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.IO; using System.Text; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.SeparatedValue; using SabreTools.Text.SeparatedValue; @@ -126,7 +127,7 @@ namespace SabreTools.Serialization.Readers MD5 = reader.Line[10], SHA1 = reader.Line[11], SHA256 = reader.Line[12], - Status = reader.Line[13], + Status = reader.Line[13].AsItemStatus(), }; } else @@ -149,7 +150,7 @@ namespace SabreTools.Serialization.Readers SHA384 = reader.Line[13], SHA512 = reader.Line[14], SpamSum = reader.Line[15], - Status = reader.Line[16], + Status = reader.Line[16].AsItemStatus(), }; } diff --git a/SabreTools.Serialization.Readers/SoftwareList.cs b/SabreTools.Serialization.Readers/SoftwareList.cs index 5a2fe176..cf3db223 100644 --- a/SabreTools.Serialization.Readers/SoftwareList.cs +++ b/SabreTools.Serialization.Readers/SoftwareList.cs @@ -127,7 +127,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.Size = reader.GetAttribute("size"); obj.Width = reader.GetAttribute("width"); - obj.Endianness = reader.GetAttribute("endianness"); + obj.Endianness = reader.GetAttribute("endianness").AsEndianness(); List roms = []; @@ -242,7 +242,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.MD5 = reader.GetAttribute("md5"); obj.SHA1 = reader.GetAttribute("sha1"); - obj.Status = reader.GetAttribute("status"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); obj.Writeable = reader.GetAttribute("writable").AsYesNo(); return obj; @@ -419,8 +419,8 @@ namespace SabreTools.Serialization.Readers obj.SHA1 = reader.GetAttribute("sha1"); obj.Offset = reader.GetAttribute("offset"); obj.Value = reader.GetAttribute("value"); - obj.Status = reader.GetAttribute("status"); - obj.LoadFlag = reader.GetAttribute("loadflag"); + obj.Status = reader.GetAttribute("status").AsItemStatus(); + obj.LoadFlag = reader.GetAttribute("loadflag").AsLoadFlag(); return obj; } @@ -451,7 +451,7 @@ namespace SabreTools.Serialization.Readers obj.Name = reader.GetAttribute("name"); obj.CloneOf = reader.GetAttribute("cloneof"); - obj.Supported = reader.GetAttribute("supported"); + obj.Supported = reader.GetAttribute("supported")?.AsSupported(); List infos = []; List sharedFeats = []; diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs index 8f3341d3..f56bddbc 100644 --- a/SabreTools.Serialization.Writers/ClrMamePro.cs +++ b/SabreTools.Serialization.Writers/ClrMamePro.cs @@ -111,9 +111,11 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalStandalone("comment", header.Comment); writer.WriteOptionalStandalone("header", header.Header); writer.WriteOptionalStandalone("type", header.Type); - writer.WriteOptionalStandalone("forcemerging", header.ForceMerging); + if (header.ForceMerging != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalStandalone("forcemerging", header.ForceMerging.AsStringValue()); writer.WriteOptionalStandalone("forcezipping", header.ForceZipping.FromYesNo()); - writer.WriteOptionalStandalone("forcepacking", header.ForcePacking); + if (header.ForcePacking != Data.Models.Metadata.PackingFlag.None) + writer.WriteOptionalStandalone("forcepacking", header.ForcePacking.AsStringValue()); writer.WriteEndElement(); // clrmamepro writer.Flush(); @@ -276,7 +278,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("xxh3_64", rom.xxHash364); writer.WriteOptionalAttributeString("xxh3_128", rom.xxHash3128); writer.WriteOptionalAttributeString("merge", rom.Merge); - writer.WriteOptionalAttributeString("status", rom.Status); + writer.WriteOptionalAttributeString("status", rom.Status?.AsStringValue()); writer.WriteOptionalAttributeString("region", rom.Region); writer.WriteOptionalAttributeString("flags", rom.Flags); writer.WriteOptionalAttributeString("offs", rom.Offs); @@ -307,7 +309,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("md5", disk.MD5); writer.WriteOptionalAttributeString("sha1", disk.SHA1); writer.WriteOptionalAttributeString("merge", disk.Merge); - writer.WriteOptionalAttributeString("status", disk.Status); + writer.WriteOptionalAttributeString("status", disk.Status?.AsStringValue()); writer.WriteOptionalAttributeString("flags", disk.Flags); writer.WriteEndElement(); // disk } @@ -388,7 +390,7 @@ namespace SabreTools.Serialization.Writers foreach (var chip in chips) { writer.WriteStartElement("chip"); - writer.WriteRequiredAttributeString("type", chip.Type, throwOnError: true); + writer.WriteRequiredAttributeString("type", chip.Type?.AsStringValue(), throwOnError: true); writer.WriteRequiredAttributeString("name", chip.Name, throwOnError: true); writer.WriteOptionalAttributeString("flags", chip.Flags); writer.WriteOptionalAttributeString("clock", chip.Clock); @@ -410,7 +412,7 @@ namespace SabreTools.Serialization.Writers foreach (var video in videos) { writer.WriteStartElement("video"); - writer.WriteRequiredAttributeString("screen", video.Screen, throwOnError: true); + writer.WriteRequiredAttributeString("screen", video.Screen?.AsStringValue(), throwOnError: true); writer.WriteRequiredAttributeString("orientation", video.Orientation, throwOnError: true); writer.WriteOptionalAttributeString("x", video.X); writer.WriteOptionalAttributeString("y", video.Y); @@ -495,11 +497,11 @@ namespace SabreTools.Serialization.Writers return; writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", driver.Status, throwOnError: true); - writer.WriteOptionalAttributeString("color", driver.Color); // TODO: Probably actually required - writer.WriteOptionalAttributeString("sound", driver.Sound); // TODO: Probably actually required + writer.WriteRequiredAttributeString("status", driver.Status?.AsStringValue(), throwOnError: true); + writer.WriteOptionalAttributeString("color", driver.Color?.AsStringValue()); // TODO: Probably actually required + writer.WriteOptionalAttributeString("sound", driver.Sound?.AsStringValue()); // TODO: Probably actually required writer.WriteOptionalAttributeString("palettesize", driver.PaletteSize); - writer.WriteOptionalAttributeString("blit", driver.Blit); + writer.WriteOptionalAttributeString("blit", driver.Blit?.AsStringValue()); writer.WriteEndElement(); // driver } diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs index 9d7792f8..01c8313e 100644 --- a/SabreTools.Serialization.Writers/Listxml.cs +++ b/SabreTools.Serialization.Writers/Listxml.cs @@ -125,7 +125,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteOptionalAttributeString("clock", obj.Clock); @@ -143,7 +143,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("mask", obj.Mask); - writer.WriteRequiredAttributeString("relation", obj.Relation); + writer.WriteRequiredAttributeString("relation", obj.Relation?.AsStringValue()); writer.WriteRequiredAttributeString("value", obj.Value); writer.WriteEndElement(); @@ -228,7 +228,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("control"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("player", obj.Player); writer.WriteOptionalAttributeString("buttons", obj.Buttons); writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons); @@ -253,7 +253,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("device"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage); writer.WriteOptionalAttributeString("mandatory", obj.Mandatory); @@ -373,7 +373,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("index", obj.Index); writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteEndElement(); @@ -389,7 +389,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("display"); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("rotate", obj.Rotate); writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); @@ -415,13 +415,13 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("color", obj.Color); - writer.WriteOptionalAttributeString("sound", obj.Sound); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("color", obj.Color?.AsStringValue()); + writer.WriteOptionalAttributeString("sound", obj.Sound?.AsStringValue()); writer.WriteOptionalAttributeString("palettesize", obj.PaletteSize); - writer.WriteRequiredAttributeString("emulation", obj.Emulation); - writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); - writer.WriteRequiredAttributeString("savestate", obj.SaveState); + writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue()); + writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue()); + writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue()); writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); @@ -453,9 +453,9 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("feature"); - writer.WriteRequiredAttributeString("type", obj.Type); - writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("overall", obj.Overall); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("overall", obj.Overall?.AsStringValue()); writer.WriteEndElement(); } @@ -736,7 +736,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("offset", obj.Offset); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); @@ -807,7 +807,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("status", obj.Status); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("filter", obj.Filter); writer.WriteEndElement(); @@ -836,7 +836,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("video"); - writer.WriteRequiredAttributeString("screen", obj.Screen); + writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue()); writer.WriteRequiredAttributeString("orientation", obj.Orientation); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); diff --git a/SabreTools.Serialization.Writers/Logiqx.cs b/SabreTools.Serialization.Writers/Logiqx.cs index 3211c35e..c02d18a5 100644 --- a/SabreTools.Serialization.Writers/Logiqx.cs +++ b/SabreTools.Serialization.Writers/Logiqx.cs @@ -77,7 +77,7 @@ namespace SabreTools.Serialization.Writers return stream; } - /// + /// /// Write a Datafile to an XmlTextWriter /// /// Datafile to write @@ -126,9 +126,12 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("clrmamepro"); writer.WriteOptionalAttributeString("header", obj.Header); - writer.WriteOptionalAttributeString("forcemerging", obj.ForceMerging); - writer.WriteOptionalAttributeString("forcenodump", obj.ForceNodump); - writer.WriteOptionalAttributeString("forcepacking", obj.ForcePacking); + if (obj.ForceMerging != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalAttributeString("forcemerging", obj.ForceMerging.AsStringValue()); + if (obj.ForceNodump != Data.Models.Metadata.NodumpFlag.None) + writer.WriteOptionalAttributeString("forcenodump", obj.ForceNodump.AsStringValue()); + if (obj.ForcePacking != Data.Models.Metadata.PackingFlag.None) + writer.WriteOptionalAttributeString("forcepacking", obj.ForcePacking.AsStringValue()); writer.WriteEndElement(); } @@ -175,9 +178,13 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("romcenter"); writer.WriteOptionalAttributeString("plugin", obj.Plugin); - writer.WriteOptionalAttributeString("rommode", obj.RomMode); - writer.WriteOptionalAttributeString("biosmode", obj.BiosMode); - writer.WriteOptionalAttributeString("samplemode", obj.SampleMode); + + if (obj.RomMode != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalAttributeString("rommode", obj.RomMode.AsStringValue()); + if (obj.BiosMode != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalAttributeString("biosmode", obj.BiosMode.AsStringValue()); + if (obj.SampleMode != Data.Models.Metadata.MergingFlag.None) + writer.WriteOptionalAttributeString("samplemode", obj.SampleMode.AsStringValue()); writer.WriteOptionalAttributeString("lockrommode", obj.LockRomMode.FromYesNo()); writer.WriteOptionalAttributeString("lockbiosmode", obj.LockBiosMode.FromYesNo()); writer.WriteOptionalAttributeString("locksamplemode", obj.LockSampleMode.FromYesNo()); @@ -276,7 +283,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("md5", obj.MD5); writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("merge", obj.Merge); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteEndElement(); @@ -291,10 +298,10 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", obj.Status); - writer.WriteRequiredAttributeString("emulation", obj.Emulation); - writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); - writer.WriteRequiredAttributeString("savestate", obj.SaveState); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue()); + writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue()); + writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue()); writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); @@ -499,7 +506,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("xxh3_64", obj.xxHash364); writer.WriteOptionalAttributeString("xxh3_128", obj.xxHash3128); writer.WriteOptionalAttributeString("merge", obj.Merge); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("serial", obj.Serial); writer.WriteOptionalAttributeString("header", obj.Header); writer.WriteOptionalAttributeString("date", obj.Date); @@ -534,7 +541,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("status", obj.Status); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("filter", obj.Filter); writer.WriteEndElement(); diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs index d427f936..b9fcdb21 100644 --- a/SabreTools.Serialization.Writers/M1.cs +++ b/SabreTools.Serialization.Writers/M1.cs @@ -123,7 +123,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteOptionalAttributeString("clock", obj.Clock); @@ -141,7 +141,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("mask", obj.Mask); - writer.WriteRequiredAttributeString("relation", obj.Relation); + writer.WriteRequiredAttributeString("relation", obj.Relation?.AsStringValue()); writer.WriteRequiredAttributeString("value", obj.Value); writer.WriteEndElement(); @@ -226,7 +226,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("control"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("player", obj.Player); writer.WriteOptionalAttributeString("buttons", obj.Buttons); writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons); @@ -251,7 +251,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("device"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage); writer.WriteOptionalAttributeString("mandatory", obj.Mandatory); @@ -371,7 +371,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("index", obj.Index); writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteEndElement(); @@ -387,7 +387,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("display"); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("rotate", obj.Rotate); writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); @@ -413,13 +413,13 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("color", obj.Color); - writer.WriteOptionalAttributeString("sound", obj.Sound); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("color", obj.Color?.AsStringValue()); + writer.WriteOptionalAttributeString("sound", obj.Sound?.AsStringValue()); writer.WriteOptionalAttributeString("palettesize", obj.PaletteSize); - writer.WriteRequiredAttributeString("emulation", obj.Emulation); - writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); - writer.WriteRequiredAttributeString("savestate", obj.SaveState); + writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue()); + writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue()); + writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue()); writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); @@ -451,9 +451,9 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("feature"); - writer.WriteRequiredAttributeString("type", obj.Type); - writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("overall", obj.Overall); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("overall", obj.Overall?.AsStringValue()); writer.WriteEndElement(); } @@ -734,7 +734,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("offset", obj.Offset); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); @@ -805,7 +805,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("status", obj.Status); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("filter", obj.Filter); writer.WriteEndElement(); @@ -834,7 +834,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("video"); - writer.WriteRequiredAttributeString("screen", obj.Screen); + writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue()); writer.WriteRequiredAttributeString("orientation", obj.Orientation); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs index dd4e6955..0a2e83c9 100644 --- a/SabreTools.Serialization.Writers/Mess.cs +++ b/SabreTools.Serialization.Writers/Mess.cs @@ -123,7 +123,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); writer.WriteOptionalAttributeString("clock", obj.Clock); @@ -141,7 +141,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("mask", obj.Mask); - writer.WriteRequiredAttributeString("relation", obj.Relation); + writer.WriteRequiredAttributeString("relation", obj.Relation?.AsStringValue()); writer.WriteRequiredAttributeString("value", obj.Value); writer.WriteEndElement(); @@ -226,7 +226,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("control"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("player", obj.Player); writer.WriteOptionalAttributeString("buttons", obj.Buttons); writer.WriteOptionalAttributeString("reqbuttons", obj.ReqButtons); @@ -251,7 +251,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("device"); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("tag", obj.Tag); writer.WriteOptionalAttributeString("fixed_image", obj.FixedImage); writer.WriteOptionalAttributeString("mandatory", obj.Mandatory); @@ -371,7 +371,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("index", obj.Index); writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo()); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteEndElement(); @@ -387,7 +387,7 @@ namespace SabreTools.Serialization.Writers writer.WriteStartElement("display"); writer.WriteOptionalAttributeString("tag", obj.Tag); - writer.WriteRequiredAttributeString("type", obj.Type); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); writer.WriteOptionalAttributeString("rotate", obj.Rotate); writer.WriteOptionalAttributeString("flipx", obj.FlipX.FromYesNo()); writer.WriteOptionalAttributeString("width", obj.Width); @@ -413,13 +413,13 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("driver"); - writer.WriteRequiredAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("color", obj.Color); - writer.WriteOptionalAttributeString("sound", obj.Sound); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("color", obj.Color?.AsStringValue()); + writer.WriteOptionalAttributeString("sound", obj.Sound?.AsStringValue()); writer.WriteOptionalAttributeString("palettesize", obj.PaletteSize); - writer.WriteRequiredAttributeString("emulation", obj.Emulation); - writer.WriteRequiredAttributeString("cocktail", obj.Cocktail); - writer.WriteRequiredAttributeString("savestate", obj.SaveState); + writer.WriteRequiredAttributeString("emulation", obj.Emulation?.AsStringValue()); + writer.WriteRequiredAttributeString("cocktail", obj.Cocktail?.AsStringValue()); + writer.WriteRequiredAttributeString("savestate", obj.SaveState?.AsStringValue()); writer.WriteOptionalAttributeString("requiresartwork", obj.RequiresArtwork.FromYesNo()); writer.WriteOptionalAttributeString("unofficial", obj.Unofficial.FromYesNo()); writer.WriteOptionalAttributeString("nosoundhardware", obj.NoSoundHardware.FromYesNo()); @@ -451,9 +451,9 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("feature"); - writer.WriteRequiredAttributeString("type", obj.Type); - writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("overall", obj.Overall); + writer.WriteRequiredAttributeString("type", obj.Type?.AsStringValue()); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("overall", obj.Overall?.AsStringValue()); writer.WriteEndElement(); } @@ -734,7 +734,7 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("merge", obj.Merge); writer.WriteOptionalAttributeString("region", obj.Region); writer.WriteOptionalAttributeString("offset", obj.Offset); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo()); writer.WriteOptionalAttributeString("dispose", obj.Dispose.FromYesNo()); writer.WriteOptionalAttributeString("soundonly", obj.SoundOnly.FromYesNo()); @@ -805,7 +805,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("tag", obj.Tag); writer.WriteRequiredAttributeString("name", obj.Name); - writer.WriteRequiredAttributeString("status", obj.Status); + writer.WriteRequiredAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("filter", obj.Filter); writer.WriteEndElement(); @@ -834,7 +834,7 @@ namespace SabreTools.Serialization.Writers { writer.WriteStartElement("video"); - writer.WriteRequiredAttributeString("screen", obj.Screen); + writer.WriteRequiredAttributeString("screen", obj.Screen?.AsStringValue()); writer.WriteRequiredAttributeString("orientation", obj.Orientation); writer.WriteOptionalAttributeString("width", obj.Width); writer.WriteOptionalAttributeString("height", obj.Height); diff --git a/SabreTools.Serialization.Writers/SeparatedValue.cs b/SabreTools.Serialization.Writers/SeparatedValue.cs index f4a96fc8..2f7a90b2 100644 --- a/SabreTools.Serialization.Writers/SeparatedValue.cs +++ b/SabreTools.Serialization.Writers/SeparatedValue.cs @@ -1,5 +1,6 @@ using System.IO; using System.Text; +using SabreTools.Data.Extensions; using SabreTools.Data.Models.SeparatedValue; using SabreTools.IO.Extensions; using SabreTools.Text.SeparatedValue; @@ -177,7 +178,7 @@ namespace SabreTools.Serialization.Writers row.SHA384, row.SHA512, row.SpamSum, - row.Status, + row.Status?.AsStringValue(), ]; } else @@ -197,7 +198,7 @@ namespace SabreTools.Serialization.Writers row.MD5, row.SHA1, row.SHA256, - row.Status, + row.Status?.AsStringValue(), ]; } diff --git a/SabreTools.Serialization.Writers/SoftwareList.cs b/SabreTools.Serialization.Writers/SoftwareList.cs index 9cd31522..57ef70c0 100644 --- a/SabreTools.Serialization.Writers/SoftwareList.cs +++ b/SabreTools.Serialization.Writers/SoftwareList.cs @@ -106,7 +106,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteRequiredAttributeString("size", obj.Size); writer.WriteOptionalAttributeString("width", obj.Width); - writer.WriteOptionalAttributeString("endianness", obj.Endianness); + writer.WriteOptionalAttributeString("endianness", obj.Endianness?.AsStringValue()); if (obj.Rom is not null && obj.Rom.Length > 0) { @@ -171,7 +171,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("md5", obj.MD5); writer.WriteOptionalAttributeString("sha1", obj.SHA1); - writer.WriteOptionalAttributeString("status", obj.Status); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); writer.WriteOptionalAttributeString("writable", obj.Writeable.FromYesNo()); writer.WriteEndElement(); @@ -292,8 +292,8 @@ namespace SabreTools.Serialization.Writers writer.WriteOptionalAttributeString("sha1", obj.SHA1); writer.WriteOptionalAttributeString("offset", obj.Offset); writer.WriteOptionalAttributeString("value", obj.Value); - writer.WriteOptionalAttributeString("status", obj.Status); - writer.WriteOptionalAttributeString("loadflag", obj.LoadFlag); + writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue()); + writer.WriteOptionalAttributeString("loadflag", obj.LoadFlag?.AsStringValue()); writer.WriteEndElement(); } @@ -324,7 +324,7 @@ namespace SabreTools.Serialization.Writers writer.WriteRequiredAttributeString("name", obj.Name); writer.WriteOptionalAttributeString("cloneof", obj.CloneOf); - writer.WriteOptionalAttributeString("supported", obj.Supported); + writer.WriteOptionalAttributeString("supported", obj.Supported?.AsStringValue()); writer.WriteRequiredElementString("description", obj.Description); writer.WriteRequiredElementString("year", obj.Year);