Each item removes its own

This commit is contained in:
Matt Nadareski
2020-08-17 23:45:23 -07:00
parent caebb012aa
commit 381183c71c
6 changed files with 316 additions and 270 deletions

View File

@@ -1238,7 +1238,6 @@ namespace SabreTools.Library.DatFiles
/// <summary>
/// Remove fields as per the header
/// </summary>
/// TODO: Move internal logic to DatItem like the rest
public void RemoveFieldsFromItems()
{
// Output the logging statement
@@ -1253,200 +1252,7 @@ namespace SabreTools.Library.DatFiles
List<DatItem> items = Items[key];
for (int j = 0; j < items.Count; j++)
{
DatItem item = items[j];
// TODO: Switch statement
foreach (Field field in fields)
{
// Machine Fields
if (field == Field.MachineName)
item.MachineName = null;
if (field == Field.Comment)
item.Comment = null;
if (field == Field.Description)
item.MachineDescription = null;
if (field == Field.Year)
item.Year = null;
if (field == Field.Manufacturer)
item.Manufacturer = null;
if (field == Field.Publisher)
item.Publisher = null;
if (field == Field.Category)
item.Category = null;
if (field == Field.RomOf)
item.RomOf = null;
if (field == Field.CloneOf)
item.CloneOf = null;
if (field == Field.SampleOf)
item.SampleOf = null;
if (field == Field.Supported)
item.Supported = null;
if (field == Field.SourceFile)
item.SourceFile = null;
if (field == Field.Runnable)
item.Runnable = null;
if (field == Field.Board)
item.Board = null;
if (field == Field.RebuildTo)
item.RebuildTo = null;
if (field == Field.Devices)
item.Devices = null;
if (field == Field.SlotOptions)
item.SlotOptions = null;
if (field == Field.Infos)
item.Infos = null;
if (field == Field.MachineType)
item.MachineType = MachineType.NULL;
// Item Fields
if (field == Field.Name)
item.Name = null;
if (field == Field.PartName)
item.PartName = null;
if (field == Field.PartInterface)
item.PartInterface = null;
if (field == Field.Features)
item.Features = null;
if (field == Field.AreaName)
item.AreaName = null;
if (field == Field.AreaSize)
item.AreaSize = null;
if (field == Field.Default)
{
if (item.ItemType == ItemType.BiosSet)
(item as BiosSet).Default = null;
else if (item.ItemType == ItemType.Release)
(item as Release).Default = null;
}
if (field == Field.BiosDescription)
{
if (item.ItemType == ItemType.BiosSet)
(item as BiosSet).Description = null;
}
if (field == Field.Size)
{
if (item.ItemType == ItemType.Rom)
(item as Rom).Size = 0;
}
if (field == Field.CRC)
{
if (item.ItemType == ItemType.Rom)
(item as Rom).CRC = null;
}
if (field == Field.MD5)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).MD5 = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).MD5 = null;
}
#if NET_FRAMEWORK
if (field == Field.RIPEMD160)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).RIPEMD160 = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).RIPEMD160 = null;
}
#endif
if (field == Field.SHA1)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).SHA1 = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).SHA1 = null;
}
if (field == Field.SHA256)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).SHA256 = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).SHA256 = null;
}
if (field == Field.SHA384)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).SHA384 = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).SHA384 = null;
}
if (field == Field.SHA512)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).SHA512 = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).SHA512 = null;
}
if (field == Field.Merge)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).MergeTag = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).MergeTag = null;
}
if (field == Field.Region)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).Region = null;
else if (item.ItemType == ItemType.Release)
(item as Release).Region = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).Region = null;
}
if (field == Field.Index)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).Index = null;
}
if (field == Field.Writable)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).Writable = null;
}
if (field == Field.Optional)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).Optional = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).Optional = null;
}
if (field == Field.Status)
{
if (item.ItemType == ItemType.Disk)
(item as Disk).ItemStatus = ItemStatus.NULL;
else if (item.ItemType == ItemType.Rom)
(item as Rom).ItemStatus = ItemStatus.NULL;
}
if (field == Field.Language)
{
if (item.ItemType == ItemType.Release)
(item as Release).Language = null;
}
if (field == Field.Date)
{
if (item.ItemType == ItemType.Release)
(item as Release).Date = null;
else if (item.ItemType == ItemType.Rom)
(item as Rom).Date = null;
}
if (field == Field.Bios)
{
if (item.ItemType == ItemType.Rom)
(item as Rom).Bios = null;
}
if (field == Field.Offset)
{
if (item.ItemType == ItemType.Rom)
(item as Rom).Offset = null;
}
if (field == Field.Inverted)
{
if (item.ItemType == ItemType.Rom)
(item as Rom).Inverted = null;
}
}
items[j] = item;
items[j].RemoveFields(fields);
}
Items.Remove(key);