diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index ae6bc00d..a509a6e9 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -61,6 +61,8 @@ namespace SabreTools.Data.Extensions return display.Clone() as Display; else if (self is Driver driver) return driver.Clone() as Driver; + else if (self is Dump dump) + return dump.Clone() as Dump; else if (self is Extension extension) return extension.Clone() as Extension; else if (self is Feature feature) diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 176ff0b8..689bab84 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -616,14 +616,14 @@ namespace SabreTools.Metadata.DatFiles.Test { return new Data.Models.Metadata.Dump { - [Data.Models.Metadata.Dump.OriginalKey] = CreateMetadataOriginal(), + Original = CreateMetadataOriginal(), // The following are searched for in order // For the purposes of this test, only RomKey will be populated // The only difference is what OpenMSXSubType value is applied - [Data.Models.Metadata.Dump.RomKey] = new Data.Models.Metadata.Rom(), - [Data.Models.Metadata.Dump.MegaRomKey] = null, - [Data.Models.Metadata.Dump.SCCPlusCartKey] = null, + Rom = new Data.Models.Metadata.Rom(), + MegaRom = null, + SCCPlusCart = null, }; } diff --git a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs index 3a412c84..ee24369a 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.ToMetadata.cs @@ -907,7 +907,7 @@ namespace SabreTools.Metadata.DatFiles rom[Data.Models.Metadata.Rom.SHA1Key] = romItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); rom[Data.Models.Metadata.Rom.StartKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); - dumpRom[Data.Models.Metadata.Dump.RomKey] = rom; + dumpRom.Rom = rom; var romOriginal = romItem.Read("ORIGINAL"); if (romOriginal is not null) @@ -917,7 +917,7 @@ namespace SabreTools.Metadata.DatFiles Value = romOriginal.Value, Content = romOriginal.Content, }; - dumpRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; + dumpRom.Original = newOriginal; } machine.Dump ??= []; @@ -935,7 +935,7 @@ namespace SabreTools.Metadata.DatFiles megaRom[Data.Models.Metadata.Rom.SHA1Key] = romItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); megaRom[Data.Models.Metadata.Rom.StartKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); - dumpMegaRom[Data.Models.Metadata.Dump.MegaRomKey] = megaRom; + dumpMegaRom.MegaRom = megaRom; var megaRomOriginal = romItem.Read("ORIGINAL"); if (megaRomOriginal is not null) @@ -945,7 +945,7 @@ namespace SabreTools.Metadata.DatFiles Value = megaRomOriginal.Value, Content = megaRomOriginal.Content, }; - dumpMegaRom[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; + dumpMegaRom.Original = newOriginal; } machine.Dump ??= []; @@ -963,7 +963,7 @@ namespace SabreTools.Metadata.DatFiles sccPlusCart[Data.Models.Metadata.Rom.SHA1Key] = romItem.ReadString(Data.Models.Metadata.Rom.SHA1Key); sccPlusCart[Data.Models.Metadata.Rom.StartKey] = romItem.ReadString(Data.Models.Metadata.Rom.StartKey) ?? romItem.ReadString(Data.Models.Metadata.Rom.OffsetKey); - dumpSccPlusCart[Data.Models.Metadata.Dump.RomKey] = sccPlusCart; + dumpSccPlusCart.SCCPlusCart = sccPlusCart; var sccPlusCartOriginal = romItem.Read("ORIGINAL"); if (sccPlusCartOriginal is not null) @@ -973,7 +973,7 @@ namespace SabreTools.Metadata.DatFiles Value = sccPlusCartOriginal.Value, Content = sccPlusCartOriginal.Content, }; - dumpSccPlusCart[Data.Models.Metadata.Dump.OriginalKey] = newOriginal; + dumpSccPlusCart.Original = newOriginal; } machine.Dump ??= []; diff --git a/SabreTools.Metadata.DatItems/Formats/Rom.cs b/SabreTools.Metadata.DatItems/Formats/Rom.cs index 78b86448..f8ba3e6d 100644 --- a/SabreTools.Metadata.DatItems/Formats/Rom.cs +++ b/SabreTools.Metadata.DatItems/Formats/Rom.cs @@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats [JsonObject("rom"), XmlRoot("rom")] public sealed class Rom : DatItem { + #region Temporary Constants + + public const string OriginalKey = "ORIGINAL"; + + #endregion + #region Fields public DataArea? DataArea { get; set; } @@ -91,7 +97,7 @@ namespace SabreTools.Metadata.DatItems.Formats { get { - var original = Read("ORIGINAL"); + var original = Read(OriginalKey); return original is not null && original != default; } } @@ -149,19 +155,19 @@ namespace SabreTools.Metadata.DatItems.Formats Data.Models.Metadata.Rom? rom = null; OpenMSXSubType? subType = null; - if (item.Read(Dump.RomKey) is not null) + if (item.Rom is not null) { - rom = item.Read(Dump.RomKey); + rom = item.Rom; subType = OpenMSXSubType.Rom; } - else if (item.Read(Dump.MegaRomKey) is not null) + else if (item.MegaRom is not null) { - rom = item.Read(Dump.MegaRomKey); + rom = item.MegaRom; subType = OpenMSXSubType.MegaRom; } - else if (item.Read(Dump.SCCPlusCartKey) is not null) + else if (item.SCCPlusCart is not null) { - rom = item.Read(Dump.SCCPlusCartKey); + rom = item.SCCPlusCart; subType = OpenMSXSubType.SCCPlusCart; } @@ -180,10 +186,10 @@ namespace SabreTools.Metadata.DatItems.Formats Write(Data.Models.Metadata.Rom.StartKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey)); Source = source; - var original = item.Read(Dump.OriginalKey); + var original = item.Original; if (original is not null) { - Write("ORIGINAL", new Original + Write(OriginalKey, new Original { Value = original.Value, Content = original.Content, diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 5b7b0152..bc5ba954 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -43,6 +43,7 @@ namespace SabreTools.Metadata (DiskArea selfDiskArea, DiskArea otherDiskArea) => selfDiskArea.Equals(otherDiskArea), (Display selfDisplay, Display otherDisplay) => selfDisplay.Equals(otherDisplay), (Driver selfDriver, Driver otherDriver) => selfDriver.Equals(otherDriver), + (Dump selfDump, Dump otherDump) => selfDump.Equals(otherDump), (Feature selfFeature, Feature otherFeature) => selfFeature.Equals(otherFeature), (Info selfInfo, Info otherInfo) => selfInfo.Equals(otherInfo), (Input selfInput, Input otherInput) => selfInput.Equals(otherInput), @@ -104,6 +105,8 @@ namespace SabreTools.Metadata return selfDisplay.Equals(otherDisplay); else if (self is Driver selfDriver && other is Driver otherDriver) return selfDriver.Equals(otherDriver); + else if (self is Dump selfDump && other is Dump otherDump) + return selfDump.Equals(otherDump); else if (self is Feature selfFeature && other is Feature otherFeature) return selfFeature.Equals(otherFeature); else if (self is Info selfInfo && other is Info otherInfo) diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs index 5ef33342..60832b07 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Deserializer.cs @@ -62,19 +62,19 @@ namespace SabreTools.Serialization.CrossModel { var dump = new Dump(); - var original = item.Read(Data.Models.Metadata.Dump.OriginalKey); + var original = item.Original; if (original is not null) dump.Original = ConvertFromInternalModel(original); - var rom = item.Read(Data.Models.Metadata.Dump.RomKey); + var rom = item.Rom; if (rom is not null) dump.Rom = ConvertRomFromInternalModel(rom); - var megaRom = item.Read(Data.Models.Metadata.Dump.MegaRomKey); + var megaRom = item.MegaRom; if (megaRom is not null) dump.Rom = ConvertMegaRomFromInternalModel(megaRom); - var sccPlusCart = item.Read(Data.Models.Metadata.Dump.SCCPlusCartKey); + var sccPlusCart = item.SCCPlusCart; if (sccPlusCart is not null) dump.Rom = ConvertSCCPlusCartFromInternalModel(sccPlusCart); diff --git a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs index d2e21bcb..9565e6d6 100644 --- a/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OpenMSX.Serializer.cs @@ -69,22 +69,22 @@ namespace SabreTools.Serialization.CrossModel var dump = new Data.Models.Metadata.Dump(); if (item.Original is not null) - dump[Data.Models.Metadata.Dump.OriginalKey] = ConvertToInternalModel(item.Original); + dump.Original = ConvertToInternalModel(item.Original); if (item.Rom is not null) { switch (item.Rom) { case Rom rom: - dump[Data.Models.Metadata.Dump.RomKey] = ConvertToInternalModel(rom); + dump.Rom = ConvertToInternalModel(rom); break; case MegaRom megaRom: - dump[Data.Models.Metadata.Dump.MegaRomKey] = ConvertToInternalModel(megaRom); + dump.MegaRom = ConvertToInternalModel(megaRom); break; case SCCPlusCart sccPlusCart: - dump[Data.Models.Metadata.Dump.SCCPlusCartKey] = ConvertToInternalModel(sccPlusCart); + dump.SCCPlusCart = ConvertToInternalModel(sccPlusCart); break; default: