Fix some issues in FromMetadata conversion

This commit is contained in:
Matt Nadareski
2024-03-19 14:23:41 -04:00
parent 42e685cbb8
commit eec50e3d48

View File

@@ -430,7 +430,8 @@ namespace SabreTools.DatFiles
if (item.ContainsKey(Models.Metadata.Machine.DumpKey)) if (item.ContainsKey(Models.Metadata.Machine.DumpKey))
{ {
var items = ReadItemArray<Models.Metadata.Dump>(item, Models.Metadata.Machine.DumpKey); var items = ReadItemArray<Models.Metadata.Dump>(item, Models.Metadata.Machine.DumpKey);
ProcessItems(items, machine, filename, indexId, statsOnly); string? machineName = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey);
ProcessItems(items, machine, filename, indexId, statsOnly, machineName);
} }
if (item.ContainsKey(Models.Metadata.Machine.FeatureKey)) if (item.ContainsKey(Models.Metadata.Machine.FeatureKey))
{ {
@@ -746,7 +747,7 @@ namespace SabreTools.DatFiles
if (datItem.GetBoolFieldValue(Models.Metadata.Device.MandatoryKey) != null) if (datItem.GetBoolFieldValue(Models.Metadata.Device.MandatoryKey) != null)
datItem.SetFieldValue<string?>(Models.Metadata.Device.MandatoryKey, datItem.GetBoolFieldValue(Models.Metadata.Device.MandatoryKey).FromYesNo()); datItem.SetFieldValue<string?>(Models.Metadata.Device.MandatoryKey, datItem.GetBoolFieldValue(Models.Metadata.Device.MandatoryKey).FromYesNo());
if (datItem.GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey) != null) if (datItem.GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey) != null)
datItem.SetFieldValue<string?>(Models.Metadata.Device.DeviceTypeKey, machine.GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey).AsEnumValue<DeviceType>().AsStringValue()); datItem.SetFieldValue<string?>(Models.Metadata.Device.DeviceTypeKey, datItem.GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey).AsEnumValue<DeviceType>().AsStringValue());
// Handle subitems // Handle subitems
var instance = item.Read<Models.Metadata.Instance>(Models.Metadata.Device.InstanceKey); var instance = item.Read<Models.Metadata.Instance>(Models.Metadata.Device.InstanceKey);
@@ -820,7 +821,7 @@ namespace SabreTools.DatFiles
// Process flag values // Process flag values
if (datItem.GetBoolFieldValue(Models.Metadata.DipSwitch.DefaultKey) != null) if (datItem.GetBoolFieldValue(Models.Metadata.DipSwitch.DefaultKey) != null)
datItem.SetFieldValue<string?>(Models.Metadata.DipSwitch.DefaultKey, machine.GetBoolFieldValue(Models.Metadata.DipSwitch.DefaultKey).FromYesNo()); datItem.SetFieldValue<string?>(Models.Metadata.DipSwitch.DefaultKey, datItem.GetBoolFieldValue(Models.Metadata.DipSwitch.DefaultKey).FromYesNo());
// Handle subitems // Handle subitems
var condition = item.Read<Models.Metadata.Condition>(Models.Metadata.DipSwitch.ConditionKey); var condition = item.Read<Models.Metadata.Condition>(Models.Metadata.DipSwitch.ConditionKey);
@@ -1036,7 +1037,8 @@ namespace SabreTools.DatFiles
/// <param name="filename">Name of the file to be parsed</param> /// <param name="filename">Name of the file to be parsed</param>
/// <param name="indexId">Index ID for the DAT</param> /// <param name="indexId">Index ID for the DAT</param>
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param> /// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
private void ProcessItems(Models.Metadata.Dump[]? items, DatItems.Machine machine, string filename, int indexId, bool statsOnly) /// <param name="machineName">Machine name to use when constructing item names</param>
private void ProcessItems(Models.Metadata.Dump[]? items, DatItems.Machine machine, string filename, int indexId, bool statsOnly, string? machineName)
{ {
// If the array is null or empty, return without processing // If the array is null or empty, return without processing
if (items == null || items.Length == 0) if (items == null || items.Length == 0)
@@ -1069,7 +1071,7 @@ namespace SabreTools.DatFiles
continue; continue;
} }
string name = $"{machine.GetStringFieldValue(Models.Metadata.Machine.NameKey)}_{index++}{(!string.IsNullOrEmpty(rom!.ReadString(Models.Metadata.Rom.RemarkKey)) ? $" {rom.ReadString(Models.Metadata.Rom.RemarkKey)}" : string.Empty)}"; string name = $"{machineName}_{index++}{(!string.IsNullOrEmpty(rom!.ReadString(Models.Metadata.Rom.RemarkKey)) ? $" {rom.ReadString(Models.Metadata.Rom.RemarkKey)}" : string.Empty)}";
var item = new DatItems.Formats.Rom(); var item = new DatItems.Formats.Rom();
item.SetName(name); item.SetName(name);