mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-22 06:45:11 +00:00
Make inverted Part less impactful
This commit is contained in:
@@ -582,8 +582,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Loop through the items and add
|
||||
foreach (var item in items)
|
||||
{
|
||||
var partItem = new Part(item, machine, source);
|
||||
|
||||
// Handle subitems
|
||||
var dataAreas = item.DataArea;
|
||||
if (dataAreas is not null)
|
||||
@@ -620,7 +618,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
}
|
||||
|
||||
romItem.DataArea = dataAreaItem;
|
||||
romItem.Part = partItem;
|
||||
romItem.PartInterface = item.Interface;
|
||||
romItem.PartName = item.Name;
|
||||
|
||||
addRoms.Add(romItem);
|
||||
}
|
||||
@@ -653,7 +652,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
var diskItem = new Disk(disk, machine, source)
|
||||
{
|
||||
DiskArea = diskAreaitem,
|
||||
Part = partItem,
|
||||
PartInterface = item.Interface,
|
||||
PartName = item.Name,
|
||||
};
|
||||
|
||||
AddItem(diskItem, statsOnly);
|
||||
@@ -671,7 +671,11 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (filterRunner is not null && !filterRunner.Run(dipSwitch))
|
||||
continue;
|
||||
|
||||
var dipSwitchItem = new DipSwitch(dipSwitch, machine, source) { Part = partItem };
|
||||
var dipSwitchItem = new DipSwitch(dipSwitch, machine, source)
|
||||
{
|
||||
PartInterface = item.Interface,
|
||||
PartName = item.Name,
|
||||
};
|
||||
|
||||
AddItem(dipSwitchItem, statsOnly);
|
||||
// AddItemDB(dipSwitchItem, machineIndex, sourceIndex, statsOnly);
|
||||
@@ -689,7 +693,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
var partFeatureItem = new PartFeature(partFeature)
|
||||
{
|
||||
Part = partItem,
|
||||
PartInterface = item.Interface,
|
||||
PartName = item.Name,
|
||||
Source = source,
|
||||
};
|
||||
partFeatureItem.CopyMachineInformation(machine);
|
||||
|
||||
@@ -138,8 +138,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.DipSwitch = [.. machine.DipSwitch, dipSwitchItem];
|
||||
|
||||
// Add Part mapping
|
||||
if (dipSwitch.Part is not null)
|
||||
partMappings[dipSwitch.Part.GetInternalClone()] = dipSwitchItem;
|
||||
if (dipSwitch.PartInterface is not null || dipSwitch.PartName is not null)
|
||||
partMappings[new Data.Models.Metadata.Part { Interface = dipSwitch.PartInterface, Name = dipSwitch.PartName}] = dipSwitchItem;
|
||||
|
||||
break;
|
||||
case DatItems.Formats.Disk disk:
|
||||
@@ -148,9 +148,13 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.Disk = [.. machine.Disk, diskItem];
|
||||
|
||||
// Add Part and DiskArea mappings
|
||||
if (disk.Part is not null && disk.DiskArea is not null)
|
||||
if ((disk.PartInterface is not null || disk.PartName is not null) && disk.DiskArea is not null)
|
||||
{
|
||||
var partItemInternal = disk.Part.GetInternalClone();
|
||||
var partItemInternal = new Data.Models.Metadata.Part
|
||||
{
|
||||
Interface = disk.PartInterface,
|
||||
Name = disk.PartName,
|
||||
};
|
||||
partMappings[partItemInternal] = diskItem;
|
||||
diskAreaMappings[partItemInternal] = (disk.DiskArea.GetInternalClone(), diskItem);
|
||||
}
|
||||
@@ -188,8 +192,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.Feature = [.. machine.Feature, partFeatureItem];
|
||||
|
||||
// Add Part mapping
|
||||
if (partFeature.Part is not null)
|
||||
partMappings[partFeature.Part.GetInternalClone()] = partFeatureItem;
|
||||
if (partFeature.PartInterface is not null || partFeature.PartName is not null)
|
||||
partMappings[new Data.Models.Metadata.Part { Interface = partFeature.PartInterface, Name = partFeature.PartName}] = partFeatureItem;
|
||||
|
||||
break;
|
||||
case DatItems.Formats.Port port:
|
||||
@@ -213,9 +217,13 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.Rom = [.. machine.Rom, romItem];
|
||||
|
||||
// Add Part and DataArea mappings
|
||||
if (rom.Part is not null && rom.DataArea is not null)
|
||||
if ((rom.PartInterface is not null || rom.PartName is not null) && rom.DataArea is not null)
|
||||
{
|
||||
var partItemInternal = rom.Part.GetInternalClone();
|
||||
var partItemInternal = new Data.Models.Metadata.Part
|
||||
{
|
||||
Interface = rom.PartInterface,
|
||||
Name = rom.PartName,
|
||||
};
|
||||
partMappings[partItemInternal] = romItem;
|
||||
dataAreaMappings[partItemInternal] = (rom.DataArea.GetInternalClone(), romItem);
|
||||
}
|
||||
@@ -468,8 +476,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.DipSwitch = [.. machine.DipSwitch, dipSwitchItem];
|
||||
|
||||
// Add Part mapping
|
||||
if (dipSwitch.Part is not null)
|
||||
partMappings[dipSwitch.Part.GetInternalClone()] = dipSwitchItem;
|
||||
if (dipSwitch.PartInterface is not null || dipSwitch.PartName is not null)
|
||||
partMappings[new Data.Models.Metadata.Part { Interface = dipSwitch.PartInterface, Name = dipSwitch.PartName}] = dipSwitchItem;
|
||||
|
||||
break;
|
||||
case DatItems.Formats.Disk disk:
|
||||
@@ -478,9 +486,13 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.Disk = [.. machine.Disk, diskItem];
|
||||
|
||||
// Add Part and DiskArea mappings
|
||||
if (disk.Part is not null && disk.DiskArea is not null)
|
||||
if ((disk.PartInterface is not null || disk.PartName is not null) && disk.DiskArea is not null)
|
||||
{
|
||||
var partItemInternal = disk.Part.GetInternalClone();
|
||||
var partItemInternal = new Data.Models.Metadata.Part
|
||||
{
|
||||
Interface = disk.PartInterface,
|
||||
Name = disk.PartName,
|
||||
};
|
||||
partMappings[partItemInternal] = diskItem;
|
||||
diskAreaMappings[partItemInternal] = (disk.DiskArea.GetInternalClone(), diskItem);
|
||||
}
|
||||
@@ -518,8 +530,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.Feature = [.. machine.Feature, partFeatureItem];
|
||||
|
||||
// Add Part mapping
|
||||
if (partFeature.Part is not null)
|
||||
partMappings[partFeature.Part.GetInternalClone()] = partFeatureItem;
|
||||
if (partFeature.PartInterface is not null || partFeature.PartName is not null)
|
||||
partMappings[new Data.Models.Metadata.Part { Interface = partFeature.PartInterface, Name = partFeature.PartName}] = partFeatureItem;
|
||||
|
||||
break;
|
||||
case DatItems.Formats.Port port:
|
||||
@@ -543,9 +555,13 @@ namespace SabreTools.Metadata.DatFiles
|
||||
machine.Rom = [.. machine.Rom, romItem];
|
||||
|
||||
// Add Part and DataArea mappings
|
||||
if (rom.Part is not null && rom.DataArea is not null)
|
||||
if ((rom.PartInterface is not null || rom.PartName is not null) && rom.DataArea is not null)
|
||||
{
|
||||
var partItemInternal = rom.Part.GetInternalClone();
|
||||
var partItemInternal = new Data.Models.Metadata.Part
|
||||
{
|
||||
Interface = rom.PartInterface,
|
||||
Name = rom.PartName,
|
||||
};
|
||||
partMappings[partItemInternal] = romItem;
|
||||
dataAreaMappings[partItemInternal] = (rom.DataArea.GetInternalClone(), romItem);
|
||||
}
|
||||
|
||||
@@ -330,9 +330,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
case Data.Models.Metadata.ItemType.Original:
|
||||
// Cannot be converted to a DatItem
|
||||
break;
|
||||
case Data.Models.Metadata.ItemType.Part:
|
||||
datItem = datItemObj.ToObject<Part>();
|
||||
break;
|
||||
case Data.Models.Metadata.ItemType.PartFeature:
|
||||
datItem = datItemObj.ToObject<PartFeature>();
|
||||
break;
|
||||
|
||||
@@ -107,16 +107,16 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case DipSwitch dipSwitch:
|
||||
if (!dipSwitch.PartSpecified)
|
||||
if (dipSwitch.PartInterface is null && dipSwitch.PartName is null)
|
||||
{
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(dipSwitch.Part!.Name))
|
||||
if (string.IsNullOrEmpty(dipSwitch.PartName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(dipSwitch.Part!.Interface))
|
||||
if (string.IsNullOrEmpty(dipSwitch.PartInterface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
|
||||
@@ -138,16 +138,16 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
break;
|
||||
|
||||
case Disk disk:
|
||||
if (!disk.PartSpecified)
|
||||
if (disk.PartInterface is null && disk.PartName is null)
|
||||
{
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(disk.Part!.Name))
|
||||
if (string.IsNullOrEmpty(disk.PartName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(disk.Part.Interface))
|
||||
if (string.IsNullOrEmpty(disk.PartInterface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
|
||||
@@ -171,16 +171,16 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
break;
|
||||
|
||||
case Rom rom:
|
||||
if (!rom.PartSpecified)
|
||||
if (rom.PartInterface is null && rom.PartName is null)
|
||||
{
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(rom.Part!.Name))
|
||||
if (string.IsNullOrEmpty(rom.PartName))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(rom.Part!.Interface))
|
||||
if (string.IsNullOrEmpty(rom.PartInterface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user