From d72c7c9cc00e61c265592dab18db2e80ee251343 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 4 Apr 2026 12:21:09 -0400 Subject: [PATCH] Convert most keys to properties for Machine --- SabreTools.Data.Models/Metadata/Machine.cs | 162 ++++------- .../DatFileTests.FromMetadata.cs | 54 ++-- .../DatFileTests.ToMetadata.cs | 63 +++-- .../DatFile.FromMetadata.cs | 135 +++++----- .../DatFile.ToMetadata.cs | 252 ++++++++---------- SabreTools.Metadata.DatItems/Machine.cs | 29 -- .../ArchiveDotOrg.Deserializer.cs | 2 +- .../ArchiveDotOrg.Serializer.cs | 2 +- .../AttractMode.Deserializer.cs | 2 +- .../AttractMode.Serializer.cs | 2 +- .../ClrMamePro.Deserializer.cs | 26 +- .../ClrMamePro.Serializer.cs | 58 +--- .../DosCenter.Deserializer.cs | 2 +- .../DosCenter.Serializer.cs | 2 +- .../EverdriveSMDB.Deserializer.cs | 2 +- .../EverdriveSMDB.Serializer.cs | 2 +- .../Hashfile.Deserializer.cs | 2 +- .../Hashfile.Serializer.cs | 22 +- .../Listrom.Deserializer.cs | 4 +- .../Listrom.Serializer.cs | 4 +- .../Listxml.Deserializer.cs | 40 +-- .../Listxml.Serializer.cs | 40 +-- .../Logiqx.Deserializer.cs | 20 +- .../Logiqx.Serializer.cs | 20 +- .../OfflineList.Deserializer.cs | 2 +- .../OfflineList.Serializer.cs | 2 +- .../OpenMSX.Deserializer.cs | 2 +- .../OpenMSX.Serializer.cs | 2 +- .../RomCenter.Deserializer.cs | 2 +- .../RomCenter.Serializer.cs | 4 +- .../SeparatedValue.Deserializer.cs | 6 +- .../SeparatedValue.Serializer.cs | 6 +- .../SoftwareList.Deserializer.cs | 6 +- .../SoftwareList.Serializer.cs | 6 +- 34 files changed, 405 insertions(+), 580 deletions(-) diff --git a/SabreTools.Data.Models/Metadata/Machine.cs b/SabreTools.Data.Models/Metadata/Machine.cs index dba91ba5..9fe850f1 100644 --- a/SabreTools.Data.Models/Metadata/Machine.cs +++ b/SabreTools.Data.Models/Metadata/Machine.cs @@ -8,28 +8,52 @@ namespace SabreTools.Data.Models.Metadata { #region Properties + public Adjuster[]? Adjuster { get; set; } + + public Archive[]? Archive { get; set; } + + public BiosSet[]? BiosSet { get; set; } + public string? Board { get; set; } public string? Buttons { get; set; } + public Chip[]? Chip { get; set; } + public string? CloneOf { get; set; } public string? CloneOfId { get; set; } public string? Company { get; set; } + public Configuration[]? Configuration { get; set; } + public string? Control { get; set; } public string? Country { get; set; } public string? Description { get; set; } + public Device[]? Device { get; set; } + + public DeviceRef[]? DeviceRef { get; set; } + + public DipSwitch[]? DipSwitch { get; set; } + public string? DirName { get; set; } + public Disk[]? Disk { get; set; } + + public Display[]? Display { get; set; } + public string? DisplayCount { get; set; } public string? DisplayType { get; set; } + public Driver? Driver { get; set; } + + public Dump[]? Dump { get; set; } + public string? DuplicateID { get; set; } public string? Emulator { get; set; } @@ -38,6 +62,8 @@ namespace SabreTools.Data.Models.Metadata public string? Favorite { get; set; } + public Feature[]? Feature { get; set; } + public string? GenMSXID { get; set; } public string? Hash { get; set; } @@ -52,6 +78,10 @@ namespace SabreTools.Data.Models.Metadata public string? ImageNumber { get; set; } + public Info[]? Info { get; set; } + + public Input? Input { get; set; } + /// (yes|no) "no" public bool? IsBios { get; set; } @@ -67,22 +97,34 @@ namespace SabreTools.Data.Models.Metadata public string? Manufacturer { get; set; } + public Media[]? Media { get; set; } + public string? Name { get; set; } public string? Notes { get; set; } + public Part[]? Part { get; set; } + public string? PlayedCount { get; set; } public string? PlayedTime { get; set; } public string? Players { get; set; } + public Port[]? Port { get; set; } + public string? Publisher { get; set; } + public RamOption[]? RamOption { get; set; } + public string? RebuildTo { get; set; } + public Release[]? Release { get; set; } + public string? ReleaseNumber { get; set; } + public Rom[]? Rom { get; set; } + public string? RomOf { get; set; } public string? Rotation { get; set; } @@ -90,10 +132,20 @@ namespace SabreTools.Data.Models.Metadata /// (yes|partial|no) "no" public Runnable? Runnable { get; set; } + public Sample[]? Sample { get; set; } + public string? SampleOf { get; set; } public string? SaveType { get; set; } + public SharedFeat[]? SharedFeat { get; set; } + + public Slot[]? Slot { get; set; } + + public SoftwareList[]? SoftwareList { get; set; } + + public Sound? Sound { get; set; } + public string? SourceFile { get; set; } public string? SourceRom { get; set; } @@ -109,131 +161,25 @@ namespace SabreTools.Data.Models.Metadata public string? Url { get; set; } + public Video[]? Video { get; set; } + public string? Year { get; set; } #endregion #region Keys - /// Adjuster[] - [NoFilter] - public const string AdjusterKey = "adjuster"; - - /// Archive[] - [NoFilter] - public const string ArchiveKey = "archive"; - - /// BiosSet[] - [NoFilter] - public const string BiosSetKey = "biosset"; - /// string, string[] public const string CategoryKey = "category"; - /// Chip[] - [NoFilter] - public const string ChipKey = "chip"; - /// string, string[] public const string CommentKey = "comment"; - /// Configuration[] - [NoFilter] - public const string ConfigurationKey = "configuration"; - - /// Device[] - [NoFilter] - public const string DeviceKey = "device"; - - /// DeviceRef[] - [NoFilter] - public const string DeviceRefKey = "device_ref"; - - /// DipSwitch[] - [NoFilter] - public const string DipSwitchKey = "dipswitch"; - - /// Disk[] - [NoFilter] - public const string DiskKey = "disk"; - - /// Display[] - [NoFilter] - public const string DisplayKey = "display"; - - /// Driver - [NoFilter] - public const string DriverKey = "driver"; - - /// Dump[] - [NoFilter] - public const string DumpKey = "dump"; - - /// Feature[] - [NoFilter] - public const string FeatureKey = "feature"; - - /// Info[] - [NoFilter] - public const string InfoKey = "info"; - - /// Input - [NoFilter] - public const string InputKey = "input"; - - /// Media[] - [NoFilter] - public const string MediaKey = "media"; - - /// Part[] - [NoFilter] - public const string PartKey = "part"; - - /// Port[] - [NoFilter] - public const string PortKey = "port"; - - /// RamOption[] - [NoFilter] - public const string RamOptionKey = "ramoption"; - - /// Release[] - [NoFilter] - public const string ReleaseKey = "release"; - - /// Rom[] - [NoFilter] - public const string RomKey = "rom"; - - /// Sample[] - [NoFilter] - public const string SampleKey = "sample"; - - /// SharedFeat[] - [NoFilter] - public const string SharedFeatKey = "sharedfeat"; - - /// Slot[] - [NoFilter] - public const string SlotKey = "slot"; - - /// SoftwareList[] - [NoFilter] - public const string SoftwareListKey = "softwarelist"; - - /// Sound - [NoFilter] - public const string SoundKey = "sound"; - /// TODO: This needs an internal model OR mapping to fields /// Trurip [NoFilter] public const string TruripKey = "trurip"; - /// Video[] - [NoFilter] - public const string VideoKey = "video"; - #endregion } } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 629050b8..176ff0b8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -250,74 +250,74 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.AdjusterKey] = new Data.Models.Metadata.Adjuster[] { CreateMetadataAdjuster() }, - [Data.Models.Metadata.Machine.ArchiveKey] = new Data.Models.Metadata.Archive[] { CreateMetadataArchive() }, - [Data.Models.Metadata.Machine.BiosSetKey] = new Data.Models.Metadata.BiosSet[] { CreateMetadataBiosSet() }, + Adjuster = [CreateMetadataAdjuster()], + Archive = [CreateMetadataArchive()], + BiosSet = [CreateMetadataBiosSet()], Board = "board", Buttons = "buttons", [Data.Models.Metadata.Machine.CategoryKey] = "category", - [Data.Models.Metadata.Machine.ChipKey] = new Data.Models.Metadata.Chip[] { CreateMetadataChip() }, + Chip = [CreateMetadataChip()], CloneOf = "cloneof", CloneOfId = "cloneofid", [Data.Models.Metadata.Machine.CommentKey] = "comment", Company = "company", - [Data.Models.Metadata.Machine.ConfigurationKey] = new Data.Models.Metadata.Configuration[] { CreateMetadataConfiguration() }, + Configuration = [CreateMetadataConfiguration()], Control = "control", Country = "country", Description = "description", - [Data.Models.Metadata.Machine.DeviceKey] = new Data.Models.Metadata.Device[] { CreateMetadataDevice() }, - [Data.Models.Metadata.Machine.DeviceRefKey] = new Data.Models.Metadata.DeviceRef[] { CreateMetadataDeviceRef() }, - [Data.Models.Metadata.Machine.DipSwitchKey] = new Data.Models.Metadata.DipSwitch[] { CreateMetadataDipSwitch() }, + Device = [CreateMetadataDevice()], + DeviceRef = [CreateMetadataDeviceRef()], + DipSwitch = [CreateMetadataDipSwitch()], DirName = "dirname", - [Data.Models.Metadata.Machine.DiskKey] = new Data.Models.Metadata.Disk[] { CreateMetadataDisk() }, + Disk = [CreateMetadataDisk()], DisplayCount = "displaycount", - [Data.Models.Metadata.Machine.DisplayKey] = new Data.Models.Metadata.Display[] { CreateMetadataDisplay() }, + Display = [CreateMetadataDisplay()], DisplayType = "displaytype", - [Data.Models.Metadata.Machine.DriverKey] = CreateMetadataDriver(), - [Data.Models.Metadata.Machine.DumpKey] = new Data.Models.Metadata.Dump[] { CreateMetadataDump() }, + Driver = CreateMetadataDriver(), + Dump = [CreateMetadataDump()], DuplicateID = "duplicateid", Emulator = "emulator", Extra = "extra", Favorite = "favorite", - [Data.Models.Metadata.Machine.FeatureKey] = new Data.Models.Metadata.Feature[] { CreateMetadataFeature() }, + Feature = [CreateMetadataFeature()], GenMSXID = "genmsxid", History = "history", Id = "id", Im1CRC = HashType.CRC32.ZeroString, Im2CRC = HashType.CRC32.ZeroString, ImageNumber = "imagenumber", - [Data.Models.Metadata.Machine.InfoKey] = new Data.Models.Metadata.Info[] { CreateMetadataInfo() }, - [Data.Models.Metadata.Machine.InputKey] = CreateMetadataInput(), + Info = [CreateMetadataInfo()], + Input = CreateMetadataInput(), IsBios = true, IsDevice = true, IsMechanical = true, Language = "language", Location = "location", Manufacturer = "manufacturer", - [Data.Models.Metadata.Machine.MediaKey] = new Data.Models.Metadata.Media[] { CreateMetadataMedia() }, + Media = [CreateMetadataMedia()], Name = "name", Notes = "notes", - [Data.Models.Metadata.Machine.PartKey] = new Data.Models.Metadata.Part[] { CreateMetadataPart() }, + Part = [CreateMetadataPart()], PlayedCount = "playedcount", PlayedTime = "playedtime", Players = "players", - [Data.Models.Metadata.Machine.PortKey] = new Data.Models.Metadata.Port[] { CreateMetadataPort() }, + Port = [CreateMetadataPort()], Publisher = "publisher", - [Data.Models.Metadata.Machine.RamOptionKey] = new Data.Models.Metadata.RamOption[] { CreateMetadataRamOption() }, + RamOption = [CreateMetadataRamOption()], RebuildTo = "rebuildto", - [Data.Models.Metadata.Machine.ReleaseKey] = new Data.Models.Metadata.Release[] { CreateMetadataRelease() }, + Release = [CreateMetadataRelease()], ReleaseNumber = "releasenumber", - [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { CreateMetadataRom() }, + Rom = [CreateMetadataRom()], RomOf = "romof", Rotation = "rotation", Runnable = Data.Models.Metadata.Runnable.Yes, - [Data.Models.Metadata.Machine.SampleKey] = new Data.Models.Metadata.Sample[] { CreateMetadataSample() }, + Sample = [CreateMetadataSample()], SampleOf = "sampleof", SaveType = "savetype", - [Data.Models.Metadata.Machine.SharedFeatKey] = new Data.Models.Metadata.SharedFeat[] { CreateMetadataSharedFeat() }, - [Data.Models.Metadata.Machine.SlotKey] = new Data.Models.Metadata.Slot[] { CreateMetadataSlot() }, - [Data.Models.Metadata.Machine.SoftwareListKey] = new Data.Models.Metadata.SoftwareList[] { CreateMetadataSoftwareList() }, - [Data.Models.Metadata.Machine.SoundKey] = CreateMetadataSound(), + SharedFeat = [CreateMetadataSharedFeat()], + Slot = [CreateMetadataSlot()], + SoftwareList = [CreateMetadataSoftwareList()], + Sound = CreateMetadataSound(), SourceFile = "sourcefile", SourceRom = "sourcerom", Status = "status", @@ -325,7 +325,7 @@ namespace SabreTools.Metadata.DatFiles.Test System = "system", Tags = "tags", [Data.Models.Metadata.Machine.TruripKey] = CreateMetadataTrurip(), - [Data.Models.Metadata.Machine.VideoKey] = new Data.Models.Metadata.Video[] { CreateMetadataVideo() }, + Video = [CreateMetadataVideo()], Year = "year", }; } diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 33a92aa2..ee6c4ce5 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -471,146 +471,143 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("tags", machine.Tags); Assert.Equal("year", machine.Year); - Data.Models.Metadata.Adjuster[]? adjusters = machine.ReadArray(Data.Models.Metadata.Machine.AdjusterKey); + Data.Models.Metadata.Adjuster[]? adjusters = machine.Adjuster; Assert.NotNull(adjusters); Data.Models.Metadata.Adjuster adjuster = Assert.Single(adjusters); ValidateMetadataAdjuster(adjuster); - Data.Models.Metadata.Archive[]? archives = machine.ReadArray(Data.Models.Metadata.Machine.ArchiveKey); + Data.Models.Metadata.Archive[]? archives = machine.Archive; Assert.NotNull(archives); Data.Models.Metadata.Archive archive = Assert.Single(archives); ValidateMetadataArchive(archive); - Data.Models.Metadata.BiosSet[]? biosSets = machine.ReadArray(Data.Models.Metadata.Machine.BiosSetKey); + Data.Models.Metadata.BiosSet[]? biosSets = machine.BiosSet; Assert.NotNull(biosSets); Data.Models.Metadata.BiosSet biosSet = Assert.Single(biosSets); ValidateMetadataBiosSet(biosSet); - Data.Models.Metadata.Chip[]? chips = machine.ReadArray(Data.Models.Metadata.Machine.ChipKey); + Data.Models.Metadata.Chip[]? chips = machine.Chip; Assert.NotNull(chips); Data.Models.Metadata.Chip chip = Assert.Single(chips); ValidateMetadataChip(chip); - Data.Models.Metadata.Configuration[]? configurations = machine.ReadArray(Data.Models.Metadata.Machine.ConfigurationKey); + Data.Models.Metadata.Configuration[]? configurations = machine.Configuration; Assert.NotNull(configurations); Data.Models.Metadata.Configuration configuration = Assert.Single(configurations); ValidateMetadataConfiguration(configuration); - Data.Models.Metadata.Device[]? devices = machine.ReadArray(Data.Models.Metadata.Machine.DeviceKey); + Data.Models.Metadata.Device[]? devices = machine.Device; Assert.NotNull(devices); Data.Models.Metadata.Device device = Assert.Single(devices); ValidateMetadataDevice(device); - Data.Models.Metadata.DeviceRef[]? deviceRefs = machine.ReadArray(Data.Models.Metadata.Machine.DeviceRefKey); + Data.Models.Metadata.DeviceRef[]? deviceRefs = machine.DeviceRef; Assert.NotNull(deviceRefs); Data.Models.Metadata.DeviceRef deviceRef = Assert.Single(deviceRefs); ValidateMetadataDeviceRef(deviceRef); - Data.Models.Metadata.DipSwitch[]? dipSwitches = machine.ReadArray(Data.Models.Metadata.Machine.DipSwitchKey); + Data.Models.Metadata.DipSwitch[]? dipSwitches = machine.DipSwitch; Assert.NotNull(dipSwitches); Assert.Equal(2, dipSwitches.Length); Data.Models.Metadata.DipSwitch dipSwitch = dipSwitches[0]; ValidateMetadataDipSwitch(dipSwitch); - Data.Models.Metadata.Disk[]? disks = machine.ReadArray(Data.Models.Metadata.Machine.DiskKey); + Data.Models.Metadata.Disk[]? disks = machine.Disk; Assert.NotNull(disks); Assert.Equal(2, disks.Length); Data.Models.Metadata.Disk disk = disks[0]; ValidateMetadataDisk(disk); - Data.Models.Metadata.Display[]? displays = machine.ReadArray(Data.Models.Metadata.Machine.DisplayKey); + Data.Models.Metadata.Display[]? displays = machine.Display; Assert.NotNull(displays); Assert.Equal(2, displays.Length); Data.Models.Metadata.Display? display = Array.Find(displays, d => d.AspectX == null); ValidateMetadataDisplay(display); - Data.Models.Metadata.Driver[]? drivers = machine.ReadArray(Data.Models.Metadata.Machine.DriverKey); - Assert.NotNull(drivers); - Data.Models.Metadata.Driver driver = Assert.Single(drivers); + Data.Models.Metadata.Driver? driver = machine.Driver; + Assert.NotNull(driver); ValidateMetadataDriver(driver); // TODO: Implement this validation - // Data.Models.Metadata.Dump[]? dumps = machine.ReadArray(Data.Models.Metadata.Machine.DumpKey); + // Data.Models.Metadata.Dump[]? dumps = machine.Dump; // Assert.NotNull(dumps); // Data.Models.Metadata.Dump dump = Assert.Single(dumps); // ValidateMetadataDump(dump); - Data.Models.Metadata.Feature[]? features = machine.ReadArray(Data.Models.Metadata.Machine.FeatureKey); + Data.Models.Metadata.Feature[]? features = machine.Feature; Assert.NotNull(features); Assert.Equal(2, features.Length); Data.Models.Metadata.Feature feature = features[0]; ValidateMetadataFeature(feature); - Data.Models.Metadata.Info[]? infos = machine.ReadArray(Data.Models.Metadata.Machine.InfoKey); + Data.Models.Metadata.Info[]? infos = machine.Info; Assert.NotNull(infos); Data.Models.Metadata.Info info = Assert.Single(infos); ValidateMetadataInfo(info); - Data.Models.Metadata.Input[]? inputs = machine.ReadArray(Data.Models.Metadata.Machine.InputKey); - Assert.NotNull(inputs); - Data.Models.Metadata.Input input = Assert.Single(inputs); + Data.Models.Metadata.Input? input = machine.Input; + Assert.NotNull(input); ValidateMetadataInput(input); - Data.Models.Metadata.Media[]? media = machine.ReadArray(Data.Models.Metadata.Machine.MediaKey); + Data.Models.Metadata.Media[]? media = machine.Media; Assert.NotNull(media); Data.Models.Metadata.Media medium = Assert.Single(media); ValidateMetadataMedia(medium); - Data.Models.Metadata.Part[]? parts = machine.ReadArray(Data.Models.Metadata.Machine.PartKey); + Data.Models.Metadata.Part[]? parts = machine.Part; Assert.NotNull(parts); Data.Models.Metadata.Part part = Assert.Single(parts); ValidateMetadataPart(part); - Data.Models.Metadata.Port[]? ports = machine.ReadArray(Data.Models.Metadata.Machine.PortKey); + Data.Models.Metadata.Port[]? ports = machine.Port; Assert.NotNull(ports); Data.Models.Metadata.Port port = Assert.Single(ports); ValidateMetadataPort(port); - Data.Models.Metadata.RamOption[]? ramOptions = machine.ReadArray(Data.Models.Metadata.Machine.RamOptionKey); + Data.Models.Metadata.RamOption[]? ramOptions = machine.RamOption; Assert.NotNull(ramOptions); Data.Models.Metadata.RamOption ramOption = Assert.Single(ramOptions); ValidateMetadataRamOption(ramOption); - Data.Models.Metadata.Release[]? releases = machine.ReadArray(Data.Models.Metadata.Machine.ReleaseKey); + Data.Models.Metadata.Release[]? releases = machine.Release; Assert.NotNull(releases); Data.Models.Metadata.Release release = Assert.Single(releases); ValidateMetadataRelease(release); - Data.Models.Metadata.Rom[]? roms = machine.ReadArray(Data.Models.Metadata.Machine.RomKey); + Data.Models.Metadata.Rom[]? roms = machine.Rom; Assert.NotNull(roms); Assert.Equal(2, roms.Length); Data.Models.Metadata.Rom rom = roms[0]; ValidateMetadataRom(rom); - Data.Models.Metadata.Sample[]? samples = machine.ReadArray(Data.Models.Metadata.Machine.SampleKey); + Data.Models.Metadata.Sample[]? samples = machine.Sample; Assert.NotNull(samples); Data.Models.Metadata.Sample sample = Assert.Single(samples); ValidateMetadataSample(sample); - Data.Models.Metadata.SharedFeat[]? sharedFeats = machine.ReadArray(Data.Models.Metadata.Machine.SharedFeatKey); + Data.Models.Metadata.SharedFeat[]? sharedFeats = machine.SharedFeat; Assert.NotNull(sharedFeats); Data.Models.Metadata.SharedFeat sharedFeat = Assert.Single(sharedFeats); ValidateMetadataSharedFeat(sharedFeat); - Data.Models.Metadata.Slot[]? slots = machine.ReadArray(Data.Models.Metadata.Machine.SlotKey); + Data.Models.Metadata.Slot[]? slots = machine.Slot; Assert.NotNull(slots); Data.Models.Metadata.Slot slot = Assert.Single(slots); ValidateMetadataSlot(slot); - Data.Models.Metadata.SoftwareList[]? softwareLists = machine.ReadArray(Data.Models.Metadata.Machine.SoftwareListKey); + Data.Models.Metadata.SoftwareList[]? softwareLists = machine.SoftwareList; Assert.NotNull(softwareLists); Data.Models.Metadata.SoftwareList softwareList = Assert.Single(softwareLists); ValidateMetadataSoftwareList(softwareList); - Data.Models.Metadata.Sound[]? sounds = machine.ReadArray(Data.Models.Metadata.Machine.SoundKey); - Assert.NotNull(sounds); - Data.Models.Metadata.Sound sound = Assert.Single(sounds); + Data.Models.Metadata.Sound? sound = machine.Sound; + Assert.NotNull(sound); ValidateMetadataSound(sound); Data.Models.Logiqx.Trurip? trurip = machine.Read(Data.Models.Metadata.Machine.TruripKey); ValidateMetadataTrurip(trurip); - Data.Models.Metadata.Video[]? videos = machine.ReadArray(Data.Models.Metadata.Machine.VideoKey); + Data.Models.Metadata.Video[]? videos = machine.Video; Assert.NotNull(videos); Data.Models.Metadata.Video video = Assert.Single(videos); ValidateMetadataVideo(video); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index 02320b1c..cd06ac80 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -237,9 +237,9 @@ namespace SabreTools.Metadata.DatFiles // long machineIndex = AddMachineDB(machine); // Convert items in the machine - if (item.ContainsKey(Data.Models.Metadata.Machine.AdjusterKey)) + if (item.Adjuster is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.AdjusterKey) ?? []; + var items = item.Adjuster ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -249,9 +249,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.ArchiveKey)) + if (item.Archive is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.ArchiveKey) ?? []; + var items = item.Archive ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -261,9 +261,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.BiosSetKey)) + if (item.BiosSet is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.BiosSetKey) ?? []; + var items = item.BiosSet ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -273,9 +273,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.ChipKey)) + if (item.Chip is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.ChipKey) ?? []; + var items = item.Chip ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -285,9 +285,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.ConfigurationKey)) + if (item.Configuration is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.ConfigurationKey) ?? []; + var items = item.Configuration ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -297,9 +297,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DeviceKey)) + if (item.Device is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DeviceKey) ?? []; + var items = item.Device ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -309,9 +309,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DeviceRefKey)) + if (item.DeviceRef is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DeviceRefKey) ?? []; + var items = item.DeviceRef ?? []; // Do not filter these due to later use Array.ForEach(items, item => { @@ -321,9 +321,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DipSwitchKey)) + if (item.DipSwitch is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DipSwitchKey) ?? []; + var items = item.DipSwitch ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -333,9 +333,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DiskKey)) + if (item.Disk is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DiskKey) ?? []; + var items = item.Disk ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -345,9 +345,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DisplayKey)) + if (item.Display is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DisplayKey) ?? []; + var items = item.Display ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -357,21 +357,16 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DriverKey)) + if (item.Driver is not null && filterRunner?.Run(item.Driver) != false) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DriverKey) ?? []; - var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); - Array.ForEach(filtered, item => - { - var datItem = new Driver(item, machine, source); - AddItem(datItem, statsOnly); - // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); - }); + var datItem = new Driver(item.Driver, machine, source); + AddItem(datItem, statsOnly); + // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); } - if (item.ContainsKey(Data.Models.Metadata.Machine.DumpKey)) + if (item.Dump is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.DumpKey) ?? []; + var items = item.Dump ?? []; for (int i = 0; i < items.Length; i++) { var datItem = new Rom(items[i], machine, source, i); @@ -383,9 +378,9 @@ namespace SabreTools.Metadata.DatFiles } } - if (item.ContainsKey(Data.Models.Metadata.Machine.FeatureKey)) + if (item.Feature is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.FeatureKey) ?? []; + var items = item.Feature ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -395,9 +390,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.InfoKey)) + if (item.Info is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.InfoKey) ?? []; + var items = item.Info ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -407,21 +402,16 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.InputKey)) + if (item.Input is not null && filterRunner?.Run(item.Input) != false) { - var items = item.ReadArray(Data.Models.Metadata.Machine.InputKey) ?? []; - var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); - Array.ForEach(filtered, item => - { - var datItem = new Input(item, machine, source); - AddItem(datItem, statsOnly); - // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); - }); + var datItem = new Input(item.Input, machine, source); + AddItem(datItem, statsOnly); + // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); } - if (item.ContainsKey(Data.Models.Metadata.Machine.MediaKey)) + if (item.Media is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.MediaKey) ?? []; + var items = item.Media ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -431,15 +421,15 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.PartKey)) + if (item.Part is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.PartKey) ?? []; + var items = item.Part ?? []; ProcessItems(items, machine, machineIndex: 0, source, sourceIndex, statsOnly, filterRunner); } - if (item.ContainsKey(Data.Models.Metadata.Machine.PortKey)) + if (item.Port is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.PortKey) ?? []; + var items = item.Port ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -449,9 +439,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.RamOptionKey)) + if (item.RamOption is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.RamOptionKey) ?? []; + var items = item.RamOption ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -461,9 +451,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.ReleaseKey)) + if (item.Release is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.ReleaseKey) ?? []; + var items = item.Release ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -473,9 +463,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.RomKey)) + if (item.Rom is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.RomKey) ?? []; + var items = item.Rom ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -488,9 +478,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SampleKey)) + if (item.Sample is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SampleKey) ?? []; + var items = item.Sample ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -500,9 +490,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SharedFeatKey)) + if (item.SharedFeat is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SharedFeatKey) ?? []; + var items = item.SharedFeat ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -512,9 +502,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SlotKey)) + if (item.Slot is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SlotKey) ?? []; + var items = item.Slot ?? []; // Do not filter these due to later use Array.ForEach(items, item => { @@ -524,9 +514,9 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SoftwareListKey)) + if (item.SoftwareList is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SoftwareListKey) ?? []; + var items = item.SoftwareList ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { @@ -536,21 +526,16 @@ namespace SabreTools.Metadata.DatFiles }); } - if (item.ContainsKey(Data.Models.Metadata.Machine.SoundKey)) + if (item.Sound is not null && filterRunner?.Run(item.Sound) != false) { - var items = item.ReadArray(Data.Models.Metadata.Machine.SoundKey) ?? []; - var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); - Array.ForEach(filtered, item => - { - var datItem = new Sound(item, machine, source); - AddItem(datItem, statsOnly); - // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); - }); + var datItem = new Sound(item.Sound, machine, source); + AddItem(datItem, statsOnly); + // AddItemDB(datItem, machineIndex, sourceIndex, statsOnly); } - if (item.ContainsKey(Data.Models.Metadata.Machine.VideoKey)) + if (item.Video is not null) { - var items = item.ReadArray(Data.Models.Metadata.Machine.VideoKey) ?? []; + var items = item.Video ?? []; var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item)); Array.ForEach(filtered, item => { diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index e60bb099..3a412c84 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -115,43 +115,43 @@ namespace SabreTools.Metadata.DatFiles { case DatItems.Formats.Adjuster adjuster: var adjusterItem = adjuster.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey, adjusterItem); + machine.Adjuster ??= []; + machine.Adjuster = [.. machine.Adjuster, adjusterItem]; break; case DatItems.Formats.Archive archive: var archiveItem = archive.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey, archiveItem); + machine.Archive ??= []; + machine.Archive = [.. machine.Archive, archiveItem]; break; case DatItems.Formats.BiosSet biosSet: var biosSetItem = biosSet.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey, biosSetItem); + machine.BiosSet ??= []; + machine.BiosSet = [.. machine.BiosSet, biosSetItem]; break; case DatItems.Formats.Chip chip: var chipItem = chip.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ChipKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ChipKey, chipItem); + machine.Chip ??= []; + machine.Chip = [.. machine.Chip, chipItem]; break; case DatItems.Formats.Configuration configuration: var configurationItem = configuration.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey, configurationItem); + machine.Configuration ??= []; + machine.Configuration = [.. machine.Configuration, configurationItem]; break; case DatItems.Formats.Device device: var deviceItem = device.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey, deviceItem); + machine.Device ??= []; + machine.Device = [.. machine.Device, deviceItem]; break; case DatItems.Formats.DeviceRef deviceRef: var deviceRefItem = deviceRef.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey, deviceRefItem); + machine.DeviceRef ??= []; + machine.DeviceRef = [.. machine.DeviceRef, deviceRefItem]; break; case DatItems.Formats.DipSwitch dipSwitch: var dipSwitchItem = dipSwitch.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey, dipSwitchItem); + machine.DipSwitch ??= []; + machine.DipSwitch = [.. machine.DipSwitch, dipSwitchItem]; // Add Part mapping if (dipSwitch.Part is not null) @@ -160,8 +160,8 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Disk disk: var diskItem = disk.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DiskKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem); + machine.Disk ??= []; + machine.Disk = [.. machine.Disk, diskItem]; // Add Part and DiskArea mappings if (disk.Part is not null && disk.DiskArea is not null) @@ -174,38 +174,34 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Display display: var displayItem = ProcessItem(display, machine); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey, displayItem); + machine.Display ??= []; + machine.Display = [.. machine.Display, displayItem]; break; case DatItems.Formats.Driver driver: - var driverItem = driver.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DriverKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DriverKey, driverItem); + machine.Driver = driver.GetInternalClone(); break; case DatItems.Formats.Feature feature: var featureItem = feature.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, featureItem); + machine.Feature ??= []; + machine.Feature = [.. machine.Feature, featureItem]; break; case DatItems.Formats.Info info: var infoItem = info.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.InfoKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.InfoKey, infoItem); + machine.Info ??= []; + machine.Info = [.. machine.Info, infoItem]; break; case DatItems.Formats.Input input: - var inputItem = input.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.InputKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.InputKey, inputItem); + machine.Input = input.GetInternalClone(); break; case DatItems.Formats.Media media: var mediaItem = media.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.MediaKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.MediaKey, mediaItem); + machine.Media ??= []; + machine.Media = [.. machine.Media, mediaItem]; break; case DatItems.Formats.PartFeature partFeature: var partFeatureItem = partFeature.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, partFeatureItem); + machine.Feature ??= []; + machine.Feature = [.. machine.Feature, partFeatureItem]; // Add Part mapping if (partFeature.Part is not null) @@ -214,23 +210,23 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Port port: var portItem = port.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.PortKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.PortKey, portItem); + machine.Port ??= []; + machine.Port = [.. machine.Port, portItem]; break; case DatItems.Formats.RamOption ramOption: var ramOptionItem = ramOption.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey, ramOptionItem); + machine.RamOption ??= []; + machine.RamOption = [.. machine.RamOption, ramOptionItem]; break; case DatItems.Formats.Release release: var releaseItem = release.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey, releaseItem); + machine.Release ??= []; + machine.Release = [.. machine.Release, releaseItem]; break; case DatItems.Formats.Rom rom: var romItem = ProcessItem(rom, machine); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.RomKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.RomKey, romItem); + machine.Rom ??= []; + machine.Rom = [.. machine.Rom, romItem]; // Add Part and DataArea mappings if (rom.Part is not null && rom.DataArea is not null) @@ -243,28 +239,26 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Sample sample: var sampleItem = sample.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SampleKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SampleKey, sampleItem); + machine.Sample ??= []; + machine.Sample = [.. machine.Sample, sampleItem]; break; case DatItems.Formats.SharedFeat sharedFeat: var sharedFeatItem = sharedFeat.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey, sharedFeatItem); + machine.SharedFeat ??= []; + machine.SharedFeat = [.. machine.SharedFeat, sharedFeatItem]; break; case DatItems.Formats.Slot slot: var slotItem = slot.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SlotKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SlotKey, slotItem); + machine.Slot ??= []; + machine.Slot = [.. machine.Slot, slotItem]; break; case DatItems.Formats.SoftwareList softwareList: var softwareListItem = softwareList.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey, softwareListItem); + machine.SoftwareList ??= []; + machine.SoftwareList = [.. machine.SoftwareList, softwareListItem]; break; case DatItems.Formats.Sound sound: - var soundItem = sound.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoundKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoundKey, soundItem); + machine.Sound = sound.GetInternalClone(); break; default: // This should never happen @@ -449,7 +443,7 @@ namespace SabreTools.Metadata.DatFiles } // Assign the part array to the machine - machine[Data.Models.Metadata.Machine.PartKey] = (Data.Models.Metadata.Part[])[.. partItems.Values]; + machine.Part = [.. partItems.Values]; } // Add the machine to the list @@ -513,43 +507,43 @@ namespace SabreTools.Metadata.DatFiles { case DatItems.Formats.Adjuster adjuster: var adjusterItem = adjuster.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.AdjusterKey, adjusterItem); + machine.Adjuster ??= []; + machine.Adjuster = [.. machine.Adjuster, adjusterItem]; break; case DatItems.Formats.Archive archive: var archiveItem = archive.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ArchiveKey, archiveItem); + machine.Archive ??= []; + machine.Archive = [.. machine.Archive, archiveItem]; break; case DatItems.Formats.BiosSet biosSet: var biosSetItem = biosSet.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.BiosSetKey, biosSetItem); + machine.BiosSet ??= []; + machine.BiosSet = [.. machine.BiosSet, biosSetItem]; break; case DatItems.Formats.Chip chip: var chipItem = chip.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ChipKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ChipKey, chipItem); + machine.Chip ??= []; + machine.Chip = [.. machine.Chip, chipItem]; break; case DatItems.Formats.Configuration configuration: var configurationItem = configuration.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ConfigurationKey, configurationItem); + machine.Configuration ??= []; + machine.Configuration = [.. machine.Configuration, configurationItem]; break; case DatItems.Formats.Device device: var deviceItem = device.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceKey, deviceItem); + machine.Device ??= []; + machine.Device = [.. machine.Device, deviceItem]; break; case DatItems.Formats.DeviceRef deviceRef: var deviceRefItem = deviceRef.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DeviceRefKey, deviceRefItem); + machine.DeviceRef ??= []; + machine.DeviceRef = [.. machine.DeviceRef, deviceRefItem]; break; case DatItems.Formats.DipSwitch dipSwitch: var dipSwitchItem = dipSwitch.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DipSwitchKey, dipSwitchItem); + machine.DipSwitch ??= []; + machine.DipSwitch = [.. machine.DipSwitch, dipSwitchItem]; // Add Part mapping if (dipSwitch.Part is not null) @@ -558,8 +552,8 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Disk disk: var diskItem = disk.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DiskKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem); + machine.Disk ??= []; + machine.Disk = [.. machine.Disk, diskItem]; // Add Part and DiskArea mappings if (disk.Part is not null && disk.DiskArea is not null) @@ -572,38 +566,34 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Display display: var displayItem = ProcessItem(display, machine); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DisplayKey, displayItem); + machine.Display ??= []; + machine.Display = [.. machine.Display, displayItem]; break; case DatItems.Formats.Driver driver: - var driverItem = driver.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DriverKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DriverKey, driverItem); + machine.Driver = driver.GetInternalClone(); break; case DatItems.Formats.Feature feature: var featureItem = feature.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, featureItem); + machine.Feature ??= []; + machine.Feature = [.. machine.Feature, featureItem]; break; case DatItems.Formats.Info info: var infoItem = info.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.InfoKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.InfoKey, infoItem); + machine.Info ??= []; + machine.Info = [.. machine.Info, infoItem]; break; case DatItems.Formats.Input input: - var inputItem = input.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.InputKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.InputKey, inputItem); + machine.Input = input.GetInternalClone(); break; case DatItems.Formats.Media media: var mediaItem = media.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.MediaKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.MediaKey, mediaItem); + machine.Media ??= []; + machine.Media = [.. machine.Media, mediaItem]; break; case DatItems.Formats.PartFeature partFeature: var partFeatureItem = partFeature.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.FeatureKey, partFeatureItem); + machine.Feature ??= []; + machine.Feature = [.. machine.Feature, partFeatureItem]; // Add Part mapping if (partFeature.Part is not null) @@ -612,23 +602,23 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Port port: var portItem = port.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.PortKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.PortKey, portItem); + machine.Port ??= []; + machine.Port = [.. machine.Port, portItem]; break; case DatItems.Formats.RamOption ramOption: var ramOptionItem = ramOption.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.RamOptionKey, ramOptionItem); + machine.RamOption ??= []; + machine.RamOption = [.. machine.RamOption, ramOptionItem]; break; case DatItems.Formats.Release release: var releaseItem = release.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.ReleaseKey, releaseItem); + machine.Release ??= []; + machine.Release = [.. machine.Release, releaseItem]; break; case DatItems.Formats.Rom rom: var romItem = ProcessItem(rom, machine); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.RomKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.RomKey, romItem); + machine.Rom ??= []; + machine.Rom = [.. machine.Rom, romItem]; // Add Part and DataArea mappings if (rom.Part is not null && rom.DataArea is not null) @@ -641,28 +631,26 @@ namespace SabreTools.Metadata.DatFiles break; case DatItems.Formats.Sample sample: var sampleItem = sample.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SampleKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SampleKey, sampleItem); + machine.Sample ??= []; + machine.Sample = [.. machine.Sample, sampleItem]; break; case DatItems.Formats.SharedFeat sharedFeat: var sharedFeatItem = sharedFeat.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SharedFeatKey, sharedFeatItem); + machine.SharedFeat ??= []; + machine.SharedFeat = [.. machine.SharedFeat, sharedFeatItem]; break; case DatItems.Formats.Slot slot: var slotItem = slot.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SlotKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SlotKey, slotItem); + machine.Slot ??= []; + machine.Slot = [.. machine.Slot, slotItem]; break; case DatItems.Formats.SoftwareList softwareList: var softwareListItem = softwareList.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoftwareListKey, softwareListItem); + machine.SoftwareList ??= []; + machine.SoftwareList = [.. machine.SoftwareList, softwareListItem]; break; case DatItems.Formats.Sound sound: - var soundItem = sound.GetInternalClone(); - EnsureMachineKey(machine, Data.Models.Metadata.Machine.SoundKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.SoundKey, soundItem); + machine.Sound = sound.GetInternalClone(); break; default: // This should never happen @@ -847,7 +835,7 @@ namespace SabreTools.Metadata.DatFiles } // Assign the part array to the machine - machine[Data.Models.Metadata.Machine.PartKey] = (Data.Models.Metadata.Part[])[.. partItems.Values]; + machine.Part = [.. partItems.Values]; } // Add the machine to the list @@ -885,8 +873,8 @@ namespace SabreTools.Metadata.DatFiles Width = displayItem.Width, }; - EnsureMachineKey(machine, Data.Models.Metadata.Machine.VideoKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.VideoKey, videoItem); + machine.Video ??= []; + machine.Video = [.. machine.Video, videoItem]; } return displayItem; @@ -932,8 +920,8 @@ namespace SabreTools.Metadata.DatFiles dumpRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; } - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DumpKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpRom); + machine.Dump ??= []; + machine.Dump = [.. machine.Dump, dumpRom]; break; case OpenMSXSubType.MegaRom: @@ -960,8 +948,8 @@ namespace SabreTools.Metadata.DatFiles dumpMegaRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; } - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DumpKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpMegaRom); + machine.Dump ??= []; + machine.Dump = [.. machine.Dump, dumpMegaRom]; break; case OpenMSXSubType.SCCPlusCart: @@ -988,8 +976,8 @@ namespace SabreTools.Metadata.DatFiles dumpSccPlusCart[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; } - EnsureMachineKey(machine, Data.Models.Metadata.Machine.DumpKey); - AppendToMachineKey(machine, Data.Models.Metadata.Machine.DumpKey, dumpSccPlusCart); + machine.Dump ??= []; + machine.Dump = [.. machine.Dump, dumpSccPlusCart]; break; default: // This should never happen @@ -999,38 +987,6 @@ namespace SabreTools.Metadata.DatFiles return romItem; } - /// - /// Ensure a key in a machine - /// - private static void EnsureMachineKey(Data.Models.Metadata.Machine machine, string key) - { - if (machine.Read(key) is null) -#if NET20 || NET35 || NET40 || NET452 - machine[key] = new T[0]; -#else - machine[key] = System.Array.Empty(); -#endif - } - - /// - /// Append to a machine key as if its an array - /// - private static void AppendToMachineKey(Data.Models.Metadata.Machine machine, string key, T value) where T : Data.Models.Metadata.DatItem - { - // Get the existing array - var arr = machine.Read(key); - if (arr is null) - return; - - // Trim all null fields - ClearEmptyKeys(value); - - // Add to the array - List list = [.. arr]; - list.Add(value); - machine[key] = list.ToArray(); - } - /// /// Clear empty keys from a DictionaryBase object /// diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 07ea9691..f772c721 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -321,36 +321,7 @@ namespace SabreTools.Metadata.DatItems public Machine(Data.Models.Metadata.Machine machine) { _internal = machine.DeepClone() as Data.Models.Metadata.Machine ?? []; - - // Remove all inverted fields - Remove(Data.Models.Metadata.Machine.AdjusterKey); - Remove(Data.Models.Metadata.Machine.ArchiveKey); - Remove(Data.Models.Metadata.Machine.BiosSetKey); - Remove(Data.Models.Metadata.Machine.ChipKey); - Remove(Data.Models.Metadata.Machine.ConfigurationKey); - Remove(Data.Models.Metadata.Machine.DeviceKey); - Remove(Data.Models.Metadata.Machine.DeviceRefKey); - Remove(Data.Models.Metadata.Machine.DipSwitchKey); - Remove(Data.Models.Metadata.Machine.DiskKey); - Remove(Data.Models.Metadata.Machine.DisplayKey); - Remove(Data.Models.Metadata.Machine.DriverKey); - Remove(Data.Models.Metadata.Machine.DumpKey); - Remove(Data.Models.Metadata.Machine.FeatureKey); - Remove(Data.Models.Metadata.Machine.InfoKey); - Remove(Data.Models.Metadata.Machine.InputKey); - Remove(Data.Models.Metadata.Machine.MediaKey); - Remove(Data.Models.Metadata.Machine.PartKey); - Remove(Data.Models.Metadata.Machine.PortKey); - Remove(Data.Models.Metadata.Machine.RamOptionKey); - Remove(Data.Models.Metadata.Machine.ReleaseKey); - Remove(Data.Models.Metadata.Machine.RomKey); - Remove(Data.Models.Metadata.Machine.SampleKey); - Remove(Data.Models.Metadata.Machine.SharedFeatKey); - Remove(Data.Models.Metadata.Machine.SlotKey); - Remove(Data.Models.Metadata.Machine.SoftwareListKey); - Remove(Data.Models.Metadata.Machine.SoundKey); Remove(Data.Models.Metadata.Machine.TruripKey); - Remove(Data.Models.Metadata.Machine.VideoKey); // Process flag values if (Im1CRC is not null) diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs index e955fd02..fd4293da 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Deserializer.cs @@ -30,7 +30,7 @@ namespace SabreTools.Serialization.CrossModel /// private static File[] ConvertFromInternalModel(Data.Models.Metadata.Machine item) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null) return []; diff --git a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs index 36706d9a..5e0125bc 100644 --- a/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ArchiveDotOrg.Serializer.cs @@ -47,7 +47,7 @@ namespace SabreTools.Serialization.CrossModel var rom = ConvertToInternalModel(item); if (rom is not null) - machine[Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { rom }; + machine.Rom = new Data.Models.Metadata.Rom[] { rom }; return machine; } diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs index f1a27c94..1c8f0dd4 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Deserializer.cs @@ -43,7 +43,7 @@ namespace SabreTools.Serialization.CrossModel /// private static Row[] ConvertMachineFromInternalModel(Data.Models.Metadata.Machine item) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null || roms.Length == 0) return []; diff --git a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs index 89fe2e0c..94e7fad3 100644 --- a/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/AttractMode.Serializer.cs @@ -65,7 +65,7 @@ namespace SabreTools.Serialization.CrossModel Tags = item.Tags, PlayedCount = item.PlayedCount, PlayedTime = item.PlayedTime, - [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, + Rom = [ConvertToInternalModel(item)], }; return machine; } diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs index ed56c002..61a4538f 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs @@ -79,55 +79,55 @@ namespace SabreTools.Serialization.CrossModel gameBase.RomOf = item.RomOf; gameBase.SampleOf = item.SampleOf; - var releases = item.Read(Data.Models.Metadata.Machine.ReleaseKey); + var releases = item.Release; if (releases is not null && releases.Length > 0) gameBase.Release = Array.ConvertAll(releases, ConvertFromInternalModel); - var biosSets = item.Read(Data.Models.Metadata.Machine.BiosSetKey); + var biosSets = item.BiosSet; if (biosSets is not null && biosSets.Length > 0) gameBase.BiosSet = Array.ConvertAll(biosSets, ConvertFromInternalModel); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) gameBase.Rom = Array.ConvertAll(roms, ConvertFromInternalModel); - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null && disks.Length > 0) gameBase.Disk = Array.ConvertAll(disks, ConvertFromInternalModel); - var medias = item.Read(Data.Models.Metadata.Machine.MediaKey); + var medias = item.Media; if (medias is not null && medias.Length > 0) gameBase.Media = Array.ConvertAll(medias, ConvertFromInternalModel); - var samples = item.Read(Data.Models.Metadata.Machine.SampleKey); + var samples = item.Sample; if (samples is not null && samples.Length > 0) gameBase.Sample = Array.ConvertAll(samples, ConvertFromInternalModel); - var archives = item.Read(Data.Models.Metadata.Machine.ArchiveKey); + var archives = item.Archive; if (archives is not null && archives.Length > 0) gameBase.Archive = Array.ConvertAll(archives, ConvertFromInternalModel); - var chips = item.Read(Data.Models.Metadata.Machine.ChipKey); + var chips = item.Chip; if (chips is not null && chips.Length > 0) gameBase.Chip = Array.ConvertAll(chips, ConvertFromInternalModel); - var videos = item.Read(Data.Models.Metadata.Machine.VideoKey); + var videos = item.Video; if (videos is not null && videos.Length > 0) gameBase.Video = Array.ConvertAll(videos, ConvertFromInternalModel); - var sound = item.Read(Data.Models.Metadata.Machine.SoundKey); + var sound = item.Sound; if (sound is not null) gameBase.Sound = ConvertFromInternalModel(sound); - var input = item.Read(Data.Models.Metadata.Machine.InputKey); + var input = item.Input; if (input is not null) gameBase.Input = ConvertFromInternalModel(input); - var dipSwitches = item.Read(Data.Models.Metadata.Machine.DipSwitchKey); + var dipSwitches = item.DipSwitch; if (dipSwitches is not null && dipSwitches.Length > 0) gameBase.DipSwitch = Array.ConvertAll(dipSwitches, ConvertFromInternalModel); - var driver = item.Read(Data.Models.Metadata.Machine.DriverKey); + var driver = item.Driver; if (driver is not null) gameBase.Driver = ConvertFromInternalModel(driver); diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs index 1381c51d..450c50e2 100644 --- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs @@ -66,7 +66,7 @@ namespace SabreTools.Serialization.CrossModel { Name = item.Name, Description = item.Description, - // [Data.Models.Metadata.Machine.DriverKey] = item.DriverStatus, // TODO: Needs metadata mapping + // Driver = item.DriverStatus, // TODO: Needs metadata mapping Year = item.Year, Manufacturer = item.Manufacturer, [Data.Models.Metadata.Machine.CategoryKey] = item.Category, @@ -76,73 +76,43 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Release is not null && item.Release.Length > 0) - { - machine[Data.Models.Metadata.Machine.ReleaseKey] - = Array.ConvertAll(item.Release, ConvertToInternalModel); - } + machine.Release = Array.ConvertAll(item.Release, ConvertToInternalModel); if (item.BiosSet is not null && item.BiosSet.Length > 0) - { - machine[Data.Models.Metadata.Machine.BiosSetKey] - = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); - } + machine.BiosSet = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); if (item.Rom is not null && item.Rom.Length > 0) - { - machine[Data.Models.Metadata.Machine.RomKey] - = Array.ConvertAll(item.Rom, ConvertToInternalModel); - } + machine.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel); if (item.Disk is not null && item.Disk.Length > 0) - { - machine[Data.Models.Metadata.Machine.DiskKey] - = Array.ConvertAll(item.Disk, ConvertToInternalModel); - } + machine.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel); if (item.Media is not null && item.Media.Length > 0) - { - machine[Data.Models.Metadata.Machine.MediaKey] - = Array.ConvertAll(item.Media, ConvertToInternalModel); - } + machine.Media = Array.ConvertAll(item.Media, ConvertToInternalModel); if (item.Sample is not null && item.Sample.Length > 0) - { - machine[Data.Models.Metadata.Machine.SampleKey] - = Array.ConvertAll(item.Sample, ConvertToInternalModel); - } + machine.Sample = Array.ConvertAll(item.Sample, ConvertToInternalModel); if (item.Archive is not null && item.Archive.Length > 0) - { - machine[Data.Models.Metadata.Machine.ArchiveKey] - = Array.ConvertAll(item.Archive, ConvertToInternalModel); - } + machine.Archive = Array.ConvertAll(item.Archive, ConvertToInternalModel); if (item.Chip is not null && item.Chip.Length > 0) - { - machine[Data.Models.Metadata.Machine.ChipKey] - = Array.ConvertAll(item.Chip, ConvertToInternalModel); - } + machine.Chip = Array.ConvertAll(item.Chip, ConvertToInternalModel); if (item.Video is not null) - { - machine[Data.Models.Metadata.Machine.VideoKey] - = Array.ConvertAll(item.Video, ConvertToInternalModel); - } + machine.Video = Array.ConvertAll(item.Video, ConvertToInternalModel); if (item.Sound is not null) - machine[Data.Models.Metadata.Machine.SoundKey] = ConvertToInternalModel(item.Sound); + machine.Sound = ConvertToInternalModel(item.Sound); if (item.Input is not null) - machine[Data.Models.Metadata.Machine.InputKey] = ConvertToInternalModel(item.Input); + machine.Input = ConvertToInternalModel(item.Input); if (item.DipSwitch is not null && item.DipSwitch.Length > 0) - { - machine[Data.Models.Metadata.Machine.DipSwitchKey] - = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); - } + machine.DipSwitch = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); if (item.Driver is not null) - machine[Data.Models.Metadata.Machine.DriverKey] = ConvertToInternalModel(item.Driver); + machine.Driver = ConvertToInternalModel(item.Driver); return machine; } diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs index abe0dcfc..aee163a9 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Deserializer.cs @@ -52,7 +52,7 @@ namespace SabreTools.Serialization.CrossModel Name = item.Name, }; - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) game.File = Array.ConvertAll(roms, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs index b4d2faee..48aec589 100644 --- a/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/DosCenter.Serializer.cs @@ -55,7 +55,7 @@ namespace SabreTools.Serialization.CrossModel if (item.File is not null && item.File.Length > 0) { - machine[Data.Models.Metadata.Machine.RomKey] + machine.Rom = Array.ConvertAll(item.File, ConvertToInternalModel); } diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs index c0bc3ce2..488275b9 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Deserializer.cs @@ -31,7 +31,7 @@ namespace SabreTools.Serialization.CrossModel /// private static Row[] ConvertMachineFromInternalModel(Data.Models.Metadata.Machine item) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null || roms.Length == 0) return []; diff --git a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs index 66b6f9f6..4dbc16a2 100644 --- a/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/EverdriveSMDB.Serializer.cs @@ -44,7 +44,7 @@ namespace SabreTools.Serialization.CrossModel { var machine = new Data.Models.Metadata.Machine { - [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, + Rom = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, }; return machine; } diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs index 708360e6..e32eb948 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Deserializer.cs @@ -96,7 +96,7 @@ namespace SabreTools.Serialization.CrossModel /// private static Data.Models.Hashfile.Hashfile ConvertMachineFromInternalModel(Data.Models.Metadata.Machine item, HashType hash) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null) return new Data.Models.Hashfile.Hashfile(); diff --git a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs index 49b86282..77124dda 100644 --- a/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Hashfile.Serializer.cs @@ -42,27 +42,27 @@ namespace SabreTools.Serialization.CrossModel var machine = new Data.Models.Metadata.Machine(); if (item.SFV is not null && item.SFV.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SFV, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SFV, ConvertToInternalModel); else if (item.MD2 is not null && item.MD2.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.MD2, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.MD2, ConvertToInternalModel); else if (item.MD4 is not null && item.MD4.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.MD4, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.MD4, ConvertToInternalModel); else if (item.MD5 is not null && item.MD5.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.MD5, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.MD5, ConvertToInternalModel); else if (item.RIPEMD128 is not null && item.RIPEMD128.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.RIPEMD128, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.RIPEMD128, ConvertToInternalModel); else if (item.RIPEMD160 is not null && item.RIPEMD160.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.RIPEMD160, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.RIPEMD160, ConvertToInternalModel); else if (item.SHA1 is not null && item.SHA1.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SHA1, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SHA1, ConvertToInternalModel); else if (item.SHA256 is not null && item.SHA256.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SHA256, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SHA256, ConvertToInternalModel); else if (item.SHA384 is not null && item.SHA384.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SHA384, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SHA384, ConvertToInternalModel); else if (item.SHA512 is not null && item.SHA512.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SHA512, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SHA512, ConvertToInternalModel); else if (item.SpamSum is not null && item.SpamSum.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.SpamSum, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.SpamSum, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs index db875814..f947f3c5 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Deserializer.cs @@ -34,13 +34,13 @@ namespace SabreTools.Serialization.CrossModel var rowItems = new List(); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null) { rowItems.AddRange(Array.ConvertAll(roms, ConvertFromInternalModel)); } - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null) rowItems.AddRange(Array.ConvertAll(disks, ConvertFromInternalModel)); diff --git a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs index 6419e27f..7c868a3a 100644 --- a/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listrom.Serializer.cs @@ -67,8 +67,8 @@ namespace SabreTools.Serialization.CrossModel roms.Add(rom); } - machine[Data.Models.Metadata.Machine.DiskKey] = disks.ToArray(); - machine[Data.Models.Metadata.Machine.RomKey] = roms.ToArray(); + machine.Disk = disks.ToArray(); + machine.Rom = roms.ToArray(); } return machine; diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs index 8759cde4..2f670c2d 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs @@ -58,83 +58,83 @@ namespace SabreTools.Serialization.CrossModel History = item.History, }; - var biosSets = item.Read(Data.Models.Metadata.Machine.BiosSetKey); + var biosSets = item.BiosSet; if (biosSets is not null && biosSets.Length > 0) machine.BiosSet = Array.ConvertAll(biosSets, ConvertFromInternalModel); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) machine.Rom = Array.ConvertAll(roms, ConvertFromInternalModel); - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null && disks.Length > 0) machine.Disk = Array.ConvertAll(disks, ConvertFromInternalModel); - var deviceRefs = item.Read(Data.Models.Metadata.Machine.DeviceRefKey); + var deviceRefs = item.DeviceRef; if (deviceRefs is not null && deviceRefs.Length > 0) machine.DeviceRef = Array.ConvertAll(deviceRefs, ConvertFromInternalModel); - var samples = item.Read(Data.Models.Metadata.Machine.SampleKey); + var samples = item.Sample; if (samples is not null && samples.Length > 0) machine.Sample = Array.ConvertAll(samples, ConvertFromInternalModel); - var chips = item.Read(Data.Models.Metadata.Machine.ChipKey); + var chips = item.Chip; if (chips is not null && chips.Length > 0) machine.Chip = Array.ConvertAll(chips, ConvertFromInternalModel); - var displays = item.Read(Data.Models.Metadata.Machine.DisplayKey); + var displays = item.Display; if (displays is not null && displays.Length > 0) machine.Display = Array.ConvertAll(displays, ConvertFromInternalModel); - var videos = item.Read(Data.Models.Metadata.Machine.VideoKey); + var videos = item.Video; if (videos is not null && videos.Length > 0) machine.Video = Array.ConvertAll(videos, ConvertFromInternalModel); - var sound = item.Read(Data.Models.Metadata.Machine.SoundKey); + var sound = item.Sound; if (sound is not null) machine.Sound = ConvertFromInternalModel(sound); - var input = item.Read(Data.Models.Metadata.Machine.InputKey); + var input = item.Input; if (input is not null) machine.Input = ConvertFromInternalModel(input); - var dipSwitches = item.Read(Data.Models.Metadata.Machine.DipSwitchKey); + var dipSwitches = item.DipSwitch; if (dipSwitches is not null && dipSwitches.Length > 0) machine.DipSwitch = Array.ConvertAll(dipSwitches, ConvertFromInternalModel); - var configurations = item.Read(Data.Models.Metadata.Machine.ConfigurationKey); + var configurations = item.Configuration; if (configurations is not null && configurations.Length > 0) machine.Configuration = Array.ConvertAll(configurations, ConvertFromInternalModel); - var ports = item.Read(Data.Models.Metadata.Machine.PortKey); + var ports = item.Port; if (ports is not null && ports.Length > 0) machine.Port = Array.ConvertAll(ports, ConvertFromInternalModel); - var adjusters = item.Read(Data.Models.Metadata.Machine.AdjusterKey); + var adjusters = item.Adjuster; if (adjusters is not null && adjusters.Length > 0) machine.Adjuster = Array.ConvertAll(adjusters, ConvertFromInternalModel); - var driver = item.Read(Data.Models.Metadata.Machine.DriverKey); + var driver = item.Driver; if (driver is not null) machine.Driver = ConvertFromInternalModel(driver); - var features = item.Read(Data.Models.Metadata.Machine.FeatureKey); + var features = item.Feature; if (features is not null && features.Length > 0) machine.Feature = Array.ConvertAll(features, ConvertFromInternalModel); - var devices = item.Read(Data.Models.Metadata.Machine.DeviceKey); + var devices = item.Device; if (devices is not null && devices.Length > 0) machine.Device = Array.ConvertAll(devices, ConvertFromInternalModel); - var slots = item.Read(Data.Models.Metadata.Machine.SlotKey); + var slots = item.Slot; if (slots is not null && slots.Length > 0) machine.Slot = Array.ConvertAll(slots, ConvertFromInternalModel); - var softwareLists = item.Read(Data.Models.Metadata.Machine.SoftwareListKey); + var softwareLists = item.SoftwareList; if (softwareLists is not null && softwareLists.Length > 0) machine.SoftwareList = Array.ConvertAll(softwareLists, ConvertFromInternalModel); - var ramOptions = item.Read(Data.Models.Metadata.Machine.RamOptionKey); + var ramOptions = item.RamOption; if (ramOptions is not null && ramOptions.Length > 0) machine.RamOption = Array.ConvertAll(ramOptions, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs index a1518e64..1989ec2c 100644 --- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs @@ -63,112 +63,112 @@ namespace SabreTools.Serialization.CrossModel if (item.BiosSet is not null && item.BiosSet.Length > 0) { - machine[Data.Models.Metadata.Machine.BiosSetKey] + machine.BiosSet = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); } if (item.Rom is not null && item.Rom.Length > 0) { - machine[Data.Models.Metadata.Machine.RomKey] + machine.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel); } if (item.Disk is not null && item.Disk.Length > 0) { - machine[Data.Models.Metadata.Machine.DiskKey] + machine.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel); } if (item.DeviceRef is not null && item.DeviceRef.Length > 0) { - machine[Data.Models.Metadata.Machine.DeviceRefKey] + machine.DeviceRef = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); } if (item.Sample is not null && item.Sample.Length > 0) { - machine[Data.Models.Metadata.Machine.SampleKey] + machine.Sample = Array.ConvertAll(item.Sample, ConvertToInternalModel); } if (item.Chip is not null && item.Chip.Length > 0) { - machine[Data.Models.Metadata.Machine.ChipKey] + machine.Chip = Array.ConvertAll(item.Chip, ConvertToInternalModel); } if (item.Display is not null && item.Display.Length > 0) { - machine[Data.Models.Metadata.Machine.DisplayKey] + machine.Display = Array.ConvertAll(item.Display, ConvertToInternalModel); } if (item.Video is not null && item.Video.Length > 0) { - machine[Data.Models.Metadata.Machine.VideoKey] + machine.Video = Array.ConvertAll(item.Video, ConvertToInternalModel); } if (item.Sound is not null) - machine[Data.Models.Metadata.Machine.SoundKey] = ConvertToInternalModel(item.Sound); + machine.Sound = ConvertToInternalModel(item.Sound); if (item.Input is not null) - machine[Data.Models.Metadata.Machine.InputKey] = ConvertToInternalModel(item.Input); + machine.Input = ConvertToInternalModel(item.Input); if (item.DipSwitch is not null && item.DipSwitch.Length > 0) { - machine[Data.Models.Metadata.Machine.DipSwitchKey] + machine.DipSwitch = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel); } if (item.Configuration is not null && item.Configuration.Length > 0) { - machine[Data.Models.Metadata.Machine.ConfigurationKey] + machine.Configuration = Array.ConvertAll(item.Configuration, ConvertToInternalModel); } if (item.Port is not null && item.Port.Length > 0) { - machine[Data.Models.Metadata.Machine.PortKey] + machine.Port = Array.ConvertAll(item.Port, ConvertToInternalModel); } if (item.Adjuster is not null && item.Adjuster.Length > 0) { - machine[Data.Models.Metadata.Machine.AdjusterKey] + machine.Adjuster = Array.ConvertAll(item.Adjuster, ConvertToInternalModel); } if (item.Driver is not null) - machine[Data.Models.Metadata.Machine.DriverKey] = ConvertToInternalModel(item.Driver); + machine.Driver = ConvertToInternalModel(item.Driver); if (item.Feature is not null && item.Feature.Length > 0) { - machine[Data.Models.Metadata.Machine.FeatureKey] + machine.Feature = Array.ConvertAll(item.Feature, ConvertToInternalModel); } if (item.Device is not null && item.Device.Length > 0) { - machine[Data.Models.Metadata.Machine.DeviceKey] + machine.Device = Array.ConvertAll(item.Device, ConvertToInternalModel); } if (item.Slot is not null && item.Slot.Length > 0) { - machine[Data.Models.Metadata.Machine.SlotKey] + machine.Slot = Array.ConvertAll(item.Slot, ConvertToInternalModel); } if (item.SoftwareList is not null && item.SoftwareList.Length > 0) { - machine[Data.Models.Metadata.Machine.SoftwareListKey] + machine.SoftwareList = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); } if (item.RamOption is not null && item.RamOption.Length > 0) { - machine[Data.Models.Metadata.Machine.RamOptionKey] + machine.RamOption = Array.ConvertAll(item.RamOption, ConvertToInternalModel); } diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs index 06f44fd3..7d474dfe 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Deserializer.cs @@ -144,43 +144,43 @@ namespace SabreTools.Serialization.CrossModel if (trurip is not null) gameBase.Trurip = trurip; - var releases = item.Read(Data.Models.Metadata.Machine.ReleaseKey); + var releases = item.Release; if (releases is not null && releases.Length > 0) gameBase.Release = Array.ConvertAll(releases, ConvertFromInternalModel); - var biosSets = item.Read(Data.Models.Metadata.Machine.BiosSetKey); + var biosSets = item.BiosSet; if (biosSets is not null && biosSets.Length > 0) gameBase.BiosSet = Array.ConvertAll(biosSets, ConvertFromInternalModel); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) gameBase.Rom = Array.ConvertAll(roms, ConvertFromInternalModel); - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null && disks.Length > 0) gameBase.Disk = Array.ConvertAll(disks, ConvertFromInternalModel); - var medias = item.Read(Data.Models.Metadata.Machine.MediaKey); + var medias = item.Media; if (medias is not null && medias.Length > 0) gameBase.Media = Array.ConvertAll(medias, ConvertFromInternalModel); - var deviceRefs = item.Read(Data.Models.Metadata.Machine.DeviceRefKey); + var deviceRefs = item.DeviceRef; if (deviceRefs is not null && deviceRefs.Length > 0) gameBase.DeviceRef = Array.ConvertAll(deviceRefs, ConvertFromInternalModel); - var samples = item.Read(Data.Models.Metadata.Machine.SampleKey); + var samples = item.Sample; if (samples is not null && samples.Length > 0) gameBase.Sample = Array.ConvertAll(samples, ConvertFromInternalModel); - var archives = item.Read(Data.Models.Metadata.Machine.ArchiveKey); + var archives = item.Archive; if (archives is not null && archives.Length > 0) gameBase.Archive = Array.ConvertAll(archives, ConvertFromInternalModel); - var driver = item.Read(Data.Models.Metadata.Machine.DriverKey); + var driver = item.Driver; if (driver is not null) gameBase.Driver = ConvertFromInternalModel(driver); - var softwareLists = item.Read(Data.Models.Metadata.Machine.SoftwareListKey); + var softwareLists = item.SoftwareList; if (softwareLists is not null && softwareLists.Length > 0) gameBase.SoftwareList = Array.ConvertAll(softwareLists, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs index 6887a903..12af46bd 100644 --- a/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/Logiqx.Serializer.cs @@ -149,34 +149,34 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Release is not null && item.Release.Length > 0) - machine[Data.Models.Metadata.Machine.ReleaseKey] = Array.ConvertAll(item.Release, ConvertToInternalModel); + machine.Release = Array.ConvertAll(item.Release, ConvertToInternalModel); if (item.BiosSet is not null && item.BiosSet.Length > 0) - machine[Data.Models.Metadata.Machine.BiosSetKey] = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); + machine.BiosSet = Array.ConvertAll(item.BiosSet, ConvertToInternalModel); if (item.Rom is not null && item.Rom.Length > 0) - machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.Rom, ConvertToInternalModel); + machine.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel); if (item.Disk is not null && item.Disk.Length > 0) - machine[Data.Models.Metadata.Machine.DiskKey] = Array.ConvertAll(item.Disk, ConvertToInternalModel); + machine.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel); if (item.Media is not null && item.Media.Length > 0) - machine[Data.Models.Metadata.Machine.MediaKey] = Array.ConvertAll(item.Media, ConvertToInternalModel); + machine.Media = Array.ConvertAll(item.Media, ConvertToInternalModel); if (item.DeviceRef is not null && item.DeviceRef.Length > 0) - machine[Data.Models.Metadata.Machine.DeviceRefKey] = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); + machine.DeviceRef = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel); if (item.Sample is not null && item.Sample.Length > 0) - machine[Data.Models.Metadata.Machine.SampleKey] = Array.ConvertAll(item.Sample, ConvertToInternalModel); + machine.Sample = Array.ConvertAll(item.Sample, ConvertToInternalModel); if (item.Archive is not null && item.Archive.Length > 0) - machine[Data.Models.Metadata.Machine.ArchiveKey] = Array.ConvertAll(item.Archive, ConvertToInternalModel); + machine.Archive = Array.ConvertAll(item.Archive, ConvertToInternalModel); if (item.Driver is not null) - machine[Data.Models.Metadata.Machine.DriverKey] = ConvertToInternalModel(item.Driver); + machine.Driver = ConvertToInternalModel(item.Driver); if (item.SoftwareList is not null && item.SoftwareList.Length > 0) - machine[Data.Models.Metadata.Machine.SoftwareListKey] = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); + machine.SoftwareList = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel); return machine; } diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs index cebcb003..b5d88416 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -96,7 +96,7 @@ namespace SabreTools.Serialization.CrossModel DuplicateID = item.DuplicateID, }; - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) { var romSizes = Array.ConvertAll(roms, r => r.Size ?? -1); diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index 9ca8f1db..d808522d 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -81,7 +81,7 @@ namespace SabreTools.Serialization.CrossModel if (item.Files?.RomCRC is not null && item.Files.RomCRC.Length > 0) { - machine[Data.Models.Metadata.Machine.RomKey] + machine.Rom = Array.ConvertAll(item.Files.RomCRC, romCRC => { var rom = ConvertToInternalModel(romCRC); diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index 647a9963..5ef33342 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -48,7 +48,7 @@ namespace SabreTools.Serialization.CrossModel Country = item.Country, }; - var dumps = item.Read(Data.Models.Metadata.Machine.DumpKey); + var dumps = item.Dump; if (dumps is not null && dumps.Length > 0) game.Dump = Array.ConvertAll(dumps, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index e63c7228..d2e21bcb 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -54,7 +54,7 @@ namespace SabreTools.Serialization.CrossModel if (item.Dump is not null && item.Dump.Length > 0) { - machine[Data.Models.Metadata.Machine.DumpKey] + machine.Dump = Array.ConvertAll(item.Dump, ConvertToInternalModel); } diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs index f207f977..48ec773c 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Deserializer.cs @@ -84,7 +84,7 @@ namespace SabreTools.Serialization.CrossModel /// private static Rom[] ConvertMachineFromInternalModel(Data.Models.Metadata.Machine item) { - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is null) return []; diff --git a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs index 5a9fbba7..19c438ee 100644 --- a/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/RomCenter.Serializer.cs @@ -72,10 +72,10 @@ namespace SabreTools.Serialization.CrossModel { RomOf = item.RomOf, CloneOf = item.ParentName, - //[Data.Models.Metadata.Machine.ParentDescriptionKey] = item.ParentDescription, // This is unmappable + //.ParentDescription = item.ParentDescription, // This is unmappable Name = item.GameName, Description = item.GameDescription, - [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, + Rom = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, }; return machine; diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs index 664c4757..1b339120 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Deserializer.cs @@ -45,21 +45,21 @@ namespace SabreTools.Serialization.CrossModel { var rowItems = new List(); - var roms = item.Read(Data.Models.Metadata.Machine.RomKey); + var roms = item.Rom; if (roms is not null && roms.Length > 0) { rowItems.AddRange( Array.ConvertAll(roms, r => ConvertFromInternalModel(r, item, header))); } - var disks = item.Read(Data.Models.Metadata.Machine.DiskKey); + var disks = item.Disk; if (disks is not null && disks.Length > 0) { rowItems.AddRange( Array.ConvertAll(disks, d => ConvertFromInternalModel(d, item, header))); } - var media = item.Read(Data.Models.Metadata.Machine.MediaKey); + var media = item.Media; if (media is not null && media.Length > 0) { rowItems.AddRange( diff --git a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs index bd9257e6..bd8c1729 100644 --- a/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SeparatedValue.Serializer.cs @@ -61,15 +61,15 @@ namespace SabreTools.Serialization.CrossModel switch (datItem) { case Data.Models.Metadata.Disk disk: - machine[Data.Models.Metadata.Machine.DiskKey] = new Data.Models.Metadata.Disk[] { disk }; + machine.Disk = new Data.Models.Metadata.Disk[] { disk }; break; case Data.Models.Metadata.Media media: - machine[Data.Models.Metadata.Machine.MediaKey] = new Data.Models.Metadata.Media[] { media }; + machine.Media = new Data.Models.Metadata.Media[] { media }; break; case Data.Models.Metadata.Rom rom: - machine[Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { rom }; + machine.Rom = new Data.Models.Metadata.Rom[] { rom }; break; default: diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs index b024f6ef..0f1b8b4b 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Deserializer.cs @@ -51,15 +51,15 @@ namespace SabreTools.Serialization.CrossModel Notes = item.Notes, }; - var infos = item.Read(Data.Models.Metadata.Machine.InfoKey); + var infos = item.Info; if (infos is not null && infos.Length > 0) software.Info = Array.ConvertAll(infos, ConvertFromInternalModel); - var sharedFeats = item.Read(Data.Models.Metadata.Machine.SharedFeatKey); + var sharedFeats = item.SharedFeat; if (sharedFeats is not null && sharedFeats.Length > 0) software.SharedFeat = Array.ConvertAll(sharedFeats, ConvertFromInternalModel); - var parts = item.Read(Data.Models.Metadata.Machine.PartKey); + var parts = item.Part; if (parts is not null && parts.Length > 0) software.Part = Array.ConvertAll(parts, ConvertFromInternalModel); diff --git a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs index dc526522..3c64bd17 100644 --- a/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/SoftwareList.Serializer.cs @@ -56,13 +56,13 @@ namespace SabreTools.Serialization.CrossModel }; if (item.Info is not null && item.Info.Length > 0) - machine[Data.Models.Metadata.Machine.InfoKey] = Array.ConvertAll(item.Info, ConvertToInternalModel); + machine.Info = Array.ConvertAll(item.Info, ConvertToInternalModel); if (item.SharedFeat is not null && item.SharedFeat.Length > 0) - machine[Data.Models.Metadata.Machine.SharedFeatKey] = Array.ConvertAll(item.SharedFeat, ConvertToInternalModel); + machine.SharedFeat = Array.ConvertAll(item.SharedFeat, ConvertToInternalModel); if (item.Part is not null && item.Part.Length > 0) - machine[Data.Models.Metadata.Machine.PartKey] = Array.ConvertAll(item.Part, ConvertToInternalModel); + machine.Part = Array.ConvertAll(item.Part, ConvertToInternalModel); return machine; }