mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-22 06:45:11 +00:00
Make inverted DataArea less impactful
This commit is contained in:
@@ -588,7 +588,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
foreach (var dataArea in dataAreas)
|
||||
{
|
||||
var dataAreaItem = new DataArea(dataArea, machine, source);
|
||||
var roms = dataArea.Rom;
|
||||
if (roms is null)
|
||||
continue;
|
||||
@@ -617,7 +616,10 @@ namespace SabreTools.Metadata.DatFiles
|
||||
continue;
|
||||
}
|
||||
|
||||
romItem.DataArea = dataAreaItem;
|
||||
romItem.DataAreaEndianness = dataArea.Endianness;
|
||||
romItem.DataAreaName = dataArea.Name;
|
||||
romItem.DataAreaSize = dataArea.Size;
|
||||
romItem.DataAreaWidth = dataArea.Width;
|
||||
romItem.PartInterface = item.Interface;
|
||||
romItem.PartName = item.Name;
|
||||
|
||||
|
||||
@@ -217,15 +217,23 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.Rom = [.. machine.Rom, romItem];
|
||||
|
||||
// Add Part and DataArea mappings
|
||||
if ((rom.PartInterface is not null || rom.PartName is not null) && rom.DataArea is not null)
|
||||
if ((rom.PartInterface is not null || rom.PartName is not null)
|
||||
&& (rom.DataAreaEndianness is not null || rom.DataAreaName is not null || rom.DataAreaSize is not null || rom.DataAreaWidth is not null))
|
||||
{
|
||||
var partItemInternal = new Data.Models.Metadata.Part
|
||||
{
|
||||
Interface = rom.PartInterface,
|
||||
Name = rom.PartName,
|
||||
};
|
||||
var dataAreaItemInternal = new Data.Models.Metadata.DataArea
|
||||
{
|
||||
Endianness = rom.DataAreaEndianness,
|
||||
Name = rom.DataAreaName,
|
||||
Size = rom.DataAreaSize,
|
||||
Width = rom.DataAreaWidth,
|
||||
};
|
||||
partMappings[partItemInternal] = romItem;
|
||||
dataAreaMappings[partItemInternal] = (rom.DataArea.GetInternalClone(), romItem);
|
||||
dataAreaMappings[partItemInternal] = (dataAreaItemInternal, romItem);
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -555,15 +563,23 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.Rom = [.. machine.Rom, romItem];
|
||||
|
||||
// Add Part and DataArea mappings
|
||||
if ((rom.PartInterface is not null || rom.PartName is not null) && rom.DataArea is not null)
|
||||
if ((rom.PartInterface is not null || rom.PartName is not null)
|
||||
&& (rom.DataAreaEndianness is not null || rom.DataAreaName is not null || rom.DataAreaSize is not null || rom.DataAreaWidth is not null))
|
||||
{
|
||||
var partItemInternal = new Data.Models.Metadata.Part
|
||||
{
|
||||
Interface = rom.PartInterface,
|
||||
Name = rom.PartName,
|
||||
};
|
||||
var dataAreaItemInternal = new Data.Models.Metadata.DataArea
|
||||
{
|
||||
Endianness = rom.DataAreaEndianness,
|
||||
Name = rom.DataAreaName,
|
||||
Size = rom.DataAreaSize,
|
||||
Width = rom.DataAreaWidth,
|
||||
};
|
||||
partMappings[partItemInternal] = romItem;
|
||||
dataAreaMappings[partItemInternal] = (rom.DataArea.GetInternalClone(), romItem);
|
||||
dataAreaMappings[partItemInternal] = (dataAreaItemInternal, romItem);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -282,9 +282,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
case Data.Models.Metadata.ItemType.Control:
|
||||
datItem = datItemObj.ToObject<Control>();
|
||||
break;
|
||||
case Data.Models.Metadata.ItemType.DataArea:
|
||||
datItem = datItemObj.ToObject<DataArea>();
|
||||
break;
|
||||
case Data.Models.Metadata.ItemType.Device:
|
||||
datItem = datItemObj.ToObject<Device>();
|
||||
break;
|
||||
@@ -303,9 +300,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
case Data.Models.Metadata.ItemType.Disk:
|
||||
datItem = datItemObj.ToObject<Disk>();
|
||||
break;
|
||||
case Data.Models.Metadata.ItemType.DiskArea:
|
||||
datItem = datItemObj.ToObject<DiskArea>();
|
||||
break;
|
||||
case Data.Models.Metadata.ItemType.Display:
|
||||
datItem = datItemObj.ToObject<Display>();
|
||||
break;
|
||||
@@ -373,6 +367,12 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
datItem = datItemObj.ToObject<SourceDetails>();
|
||||
break;
|
||||
|
||||
// Removed
|
||||
case Data.Models.Metadata.ItemType.DataArea:
|
||||
case Data.Models.Metadata.ItemType.DiskArea:
|
||||
case Data.Models.Metadata.ItemType.Part:
|
||||
break;
|
||||
|
||||
// TODO: Implement these?
|
||||
case Data.Models.Metadata.ItemType.Dump:
|
||||
case Data.Models.Metadata.ItemType.Video:
|
||||
|
||||
@@ -107,18 +107,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case DipSwitch dipSwitch:
|
||||
if (dipSwitch.PartInterface is null && dipSwitch.PartName is null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(dipSwitch.PartName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(dipSwitch.PartInterface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(dipSwitch.PartName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(dipSwitch.PartInterface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(dipSwitch.Name))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.DipSwitch.Name));
|
||||
@@ -138,18 +130,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
break;
|
||||
|
||||
case Disk disk:
|
||||
if (disk.PartInterface is null && disk.PartName is null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(disk.PartName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(disk.PartInterface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(disk.PartName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(disk.PartInterface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
|
||||
if (disk.DiskAreaName is null)
|
||||
missingFields.Add(nameof(Data.Models.Metadata.DiskArea.Name));
|
||||
@@ -164,31 +148,15 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
break;
|
||||
|
||||
case Rom rom:
|
||||
if (rom.PartInterface is null && rom.PartName is null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.PartName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(rom.PartInterface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.PartName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(rom.PartInterface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
|
||||
if (!rom.DataAreaSpecified)
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.DataAreaName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.DataArea.Name));
|
||||
if (rom.DataAreaSize is null)
|
||||
missingFields.Add(nameof(Data.Models.Metadata.DataArea.Size));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.DataArea!.Name))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.DataArea.Name));
|
||||
if (rom.DataArea!.Size is null)
|
||||
missingFields.Add(nameof(Data.Models.Metadata.DataArea.Size));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user