diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index cdb1becc..e9fee7a1 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -85,32 +85,14 @@ namespace SabreTools.Metadata.DatFiles public DatHeader(Data.Models.Metadata.Header header) { - // Create a new internal model - _internal = []; + _internal = header; - // Get all fields to automatically copy without processing - var nonItemFields = TypeHelper.GetConstants(typeof(Data.Models.Metadata.Header)); - if (nonItemFields is not null) - { - // Populate the internal machine from non-filter fields - foreach (string fieldName in nonItemFields) - { - if (header.TryGetValue(fieldName, out var fieldValue)) - _internal[fieldName] = fieldValue; - } - } - - // Get all fields specific to the DatFiles implementation - var nonStandardFields = TypeHelper.GetConstants(typeof(DatHeader)); - if (nonStandardFields is not null) - { - // Populate the internal machine from filter fields - foreach (string fieldName in nonStandardFields) - { - if (header.TryGetValue(fieldName, out var fieldValue)) - _internal[fieldName] = fieldValue; - } - } + // Remove all inverted fields + Remove(Data.Models.Metadata.Header.CanOpenKey); + Remove(Data.Models.Metadata.Header.ImagesKey); + Remove(Data.Models.Metadata.Header.InfosKey); + Remove(Data.Models.Metadata.Header.NewDatKey); + Remove(Data.Models.Metadata.Header.SearchKey); // Get all no-filter fields if (header.TryGetValue(Data.Models.Metadata.Header.CanOpenKey, out var canOpenValue)) diff --git a/SabreTools.Metadata.DatItems/Machine.cs b/SabreTools.Metadata.DatItems/Machine.cs index 9d03288d..6e247612 100644 --- a/SabreTools.Metadata.DatItems/Machine.cs +++ b/SabreTools.Metadata.DatItems/Machine.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Data.Extensions; @@ -22,18 +22,37 @@ namespace SabreTools.Metadata.DatItems public Machine(Data.Models.Metadata.Machine machine) { - // Get all fields to automatically copy without processing - var nonItemFields = TypeHelper.GetConstants(typeof(Data.Models.Metadata.Machine)); - if (nonItemFields is null) - return; + _internal = machine; - // Populate the internal machine from non-filter fields - _internal = []; - foreach (string fieldName in nonItemFields) - { - if (machine.TryGetValue(fieldName, out var fieldValue)) - _internal[fieldName] = fieldValue; - } + // 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 string? im1Crc = ReadString(Data.Models.Metadata.Machine.Im1CRCKey);