Convert Dump to using properties

This commit is contained in:
Matt Nadareski
2026-04-04 14:23:31 -04:00
parent 274919fd6a
commit 12e1086838
7 changed files with 38 additions and 27 deletions

View File

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

View File

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

View File

@@ -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<DatItems.Formats.Original>("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<DatItems.Formats.Original>("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<DatItems.Formats.Original>("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 ??= [];

View File

@@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats
[JsonObject("rom"), XmlRoot("rom")]
public sealed class Rom : DatItem<Data.Models.Metadata.Rom>
{
#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?>("ORIGINAL");
var original = Read<Original?>(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<Data.Models.Metadata.Rom>(Dump.RomKey) is not null)
if (item.Rom is not null)
{
rom = item.Read<Data.Models.Metadata.Rom>(Dump.RomKey);
rom = item.Rom;
subType = OpenMSXSubType.Rom;
}
else if (item.Read<Data.Models.Metadata.Rom>(Dump.MegaRomKey) is not null)
else if (item.MegaRom is not null)
{
rom = item.Read<Data.Models.Metadata.Rom>(Dump.MegaRomKey);
rom = item.MegaRom;
subType = OpenMSXSubType.MegaRom;
}
else if (item.Read<Data.Models.Metadata.Rom>(Dump.SCCPlusCartKey) is not null)
else if (item.SCCPlusCart is not null)
{
rom = item.Read<Data.Models.Metadata.Rom>(Dump.SCCPlusCartKey);
rom = item.SCCPlusCart;
subType = OpenMSXSubType.SCCPlusCart;
}
@@ -180,10 +186,10 @@ namespace SabreTools.Metadata.DatItems.Formats
Write<string?>(Data.Models.Metadata.Rom.StartKey, rom.ReadString(Data.Models.Metadata.Rom.StartKey));
Source = source;
var original = item.Read<Data.Models.Metadata.Original>(Dump.OriginalKey);
var original = item.Original;
if (original is not null)
{
Write<Original?>("ORIGINAL", new Original
Write<Original?>(OriginalKey, new Original
{
Value = original.Value,
Content = original.Content,

View File

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

View File

@@ -62,19 +62,19 @@ namespace SabreTools.Serialization.CrossModel
{
var dump = new Dump();
var original = item.Read<Data.Models.Metadata.Original>(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.Rom>(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.Rom>(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.Rom>(Data.Models.Metadata.Dump.SCCPlusCartKey);
var sccPlusCart = item.SCCPlusCart;
if (sccPlusCart is not null)
dump.Rom = ConvertSCCPlusCartFromInternalModel(sccPlusCart);

View File

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