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> /// <summary>
/// Remove fields as per the header /// Remove fields as per the header
/// </summary> /// </summary>
/// TODO: Move internal logic to DatItem like the rest
public void RemoveFieldsFromItems() public void RemoveFieldsFromItems()
{ {
// Output the logging statement // Output the logging statement
@@ -1253,200 +1252,7 @@ namespace SabreTools.Library.DatFiles
List<DatItem> items = Items[key]; List<DatItem> items = Items[key];
for (int j = 0; j < items.Count; j++) for (int j = 0; j < items.Count; j++)
{ {
DatItem item = items[j]; items[j].RemoveFields(fields);
// 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.Remove(key); Items.Remove(key);

View File

@@ -160,6 +160,23 @@ namespace SabreTools.Library.DatItems
return true; return true;
} }
/// <summary>
/// Remove fields from the DatItem
/// </summary>
/// <param name="fields">List of Fields to remove</param>
public override void RemoveFields(List<Field> fields)
{
// Remove common fields first
base.RemoveFields(fields);
// Remove the fields
if (fields.Contains(Field.BiosDescription))
Description = null;
if (fields.Contains(Field.Default))
Default = null;
}
#endregion #endregion
#region Sorting and Merging #region Sorting and Merging
@@ -168,11 +185,11 @@ namespace SabreTools.Library.DatItems
/// Replace fields from another item /// Replace fields from another item
/// </summary> /// </summary>
/// <param name="item">DatItem to pull new information from</param> /// <param name="item">DatItem to pull new information from</param>
/// <param name="updateFields">List of Fields representing what should be updated</param> /// <param name="fields">List of Fields representing what should be updated</param>
public override void ReplaceFields(DatItem item, List<Field> updateFields) public override void ReplaceFields(DatItem item, List<Field> fields)
{ {
// Replace common fields first // Replace common fields first
base.ReplaceFields(item, updateFields); base.ReplaceFields(item, fields);
// If we don't have a BiosSet to replace from, ignore specific fields // If we don't have a BiosSet to replace from, ignore specific fields
if (item.ItemType != ItemType.BiosSet) if (item.ItemType != ItemType.BiosSet)
@@ -182,10 +199,10 @@ namespace SabreTools.Library.DatItems
BiosSet newItem = item as BiosSet; BiosSet newItem = item as BiosSet;
// Replace the fields // Replace the fields
if (updateFields.Contains(Field.BiosDescription)) if (fields.Contains(Field.BiosDescription))
Description = newItem.Description; Description = newItem.Description;
if (updateFields.Contains(Field.Default)) if (fields.Contains(Field.Default))
Default = newItem.Default; Default = newItem.Default;
} }

View File

@@ -1081,6 +1081,96 @@ namespace SabreTools.Library.DatItems
return true; return true;
} }
/// <summary>
/// Remove fields from the DatItem
/// </summary>
/// <param name="fields">List of Fields to remove</param>
public virtual void RemoveFields(List<Field> fields)
{
#region Machine Fields
if (fields.Contains(Field.MachineName))
MachineName = null;
if (fields.Contains(Field.Comment))
Comment = null;
if (fields.Contains(Field.Description))
MachineDescription = null;
if (fields.Contains(Field.Year))
Year = null;
if (fields.Contains(Field.Manufacturer))
Manufacturer = null;
if (fields.Contains(Field.Publisher))
Publisher = null;
if (fields.Contains(Field.Category))
Category = null;
if (fields.Contains(Field.RomOf))
RomOf = null;
if (fields.Contains(Field.CloneOf))
CloneOf = null;
if (fields.Contains(Field.SampleOf))
SampleOf = null;
if (fields.Contains(Field.Supported))
Supported = null;
if (fields.Contains(Field.SourceFile))
SourceFile = null;
if (fields.Contains(Field.Runnable))
Runnable = null;
if (fields.Contains(Field.Board))
Board = null;
if (fields.Contains(Field.RebuildTo))
RebuildTo = null;
if (fields.Contains(Field.Devices))
Devices = null;
if (fields.Contains(Field.SlotOptions))
SlotOptions = null;
if (fields.Contains(Field.Infos))
Infos = null;
if (fields.Contains(Field.MachineType))
MachineType = MachineType.NULL;
#endregion
#region Item Fields
if (fields.Contains(Field.Name))
Name = null;
if (fields.Contains(Field.PartName))
PartName = null;
if (fields.Contains(Field.PartInterface))
PartInterface = null;
if (fields.Contains(Field.Features))
Features = null;
if (fields.Contains(Field.AreaName))
AreaName = null;
if (fields.Contains(Field.AreaSize))
AreaSize = null;
#endregion
}
#endregion #endregion
#region Sorting and Merging #region Sorting and Merging
@@ -1158,25 +1248,25 @@ namespace SabreTools.Library.DatItems
/// Replace fields from another item /// Replace fields from another item
/// </summary> /// </summary>
/// <param name="item">DatItem to pull new information from</param> /// <param name="item">DatItem to pull new information from</param>
/// <param name="updateFields">List of Fields representing what should be updated</param> /// <param name="fields">List of Fields representing what should be updated</param>
public virtual void ReplaceFields(DatItem item, List<Field> updateFields) public virtual void ReplaceFields(DatItem item, List<Field> fields)
{ {
if (updateFields.Contains(Field.Name)) if (fields.Contains(Field.Name))
Name = item.Name; Name = item.Name;
if (updateFields.Contains(Field.PartName)) if (fields.Contains(Field.PartName))
PartName = item.PartName; PartName = item.PartName;
if (updateFields.Contains(Field.PartInterface)) if (fields.Contains(Field.PartInterface))
PartInterface = item.PartInterface; PartInterface = item.PartInterface;
if (updateFields.Contains(Field.Features)) if (fields.Contains(Field.Features))
Features = item.Features; Features = item.Features;
if (updateFields.Contains(Field.AreaName)) if (fields.Contains(Field.AreaName))
AreaName = item.AreaName; AreaName = item.AreaName;
if (updateFields.Contains(Field.AreaSize)) if (fields.Contains(Field.AreaSize))
AreaSize = item.AreaSize; AreaSize = item.AreaSize;
} }
@@ -1184,68 +1274,68 @@ namespace SabreTools.Library.DatItems
/// Replace machine fields from another item /// Replace machine fields from another item
/// </summary> /// </summary>
/// <param name="item">DatItem to pull new information from</param> /// <param name="item">DatItem to pull new information from</param>
/// <param name="updateFields">List of Fields representing what should be updated</param> /// <param name="fields">List of Fields representing what should be updated</param>
/// <param name="onlySame">True if descriptions should only be replaced if the game name is the same, false otherwise</param> /// <param name="onlySame">True if descriptions should only be replaced if the game name is the same, false otherwise</param>
public void ReplaceMachineFields(DatItem item, List<Field> updateFields, bool onlySame) public void ReplaceMachineFields(DatItem item, List<Field> fields, bool onlySame)
{ {
if (updateFields.Contains(Field.MachineName)) if (fields.Contains(Field.MachineName))
MachineName = item.MachineName; MachineName = item.MachineName;
if (updateFields.Contains(Field.Comment)) if (fields.Contains(Field.Comment))
Comment = item.Comment; Comment = item.Comment;
if (updateFields.Contains(Field.Description)) if (fields.Contains(Field.Description))
{ {
if (!onlySame || (onlySame && MachineName == MachineDescription)) if (!onlySame || (onlySame && MachineName == MachineDescription))
MachineDescription = item.MachineDescription; MachineDescription = item.MachineDescription;
} }
if (updateFields.Contains(Field.Year)) if (fields.Contains(Field.Year))
Year = item.Year; Year = item.Year;
if (updateFields.Contains(Field.Manufacturer)) if (fields.Contains(Field.Manufacturer))
Manufacturer = item.Manufacturer; Manufacturer = item.Manufacturer;
if (updateFields.Contains(Field.Publisher)) if (fields.Contains(Field.Publisher))
Publisher = item.Publisher; Publisher = item.Publisher;
if (updateFields.Contains(Field.Category)) if (fields.Contains(Field.Category))
Category = item.Category; Category = item.Category;
if (updateFields.Contains(Field.RomOf)) if (fields.Contains(Field.RomOf))
RomOf = item.RomOf; RomOf = item.RomOf;
if (updateFields.Contains(Field.CloneOf)) if (fields.Contains(Field.CloneOf))
CloneOf = item.CloneOf; CloneOf = item.CloneOf;
if (updateFields.Contains(Field.SampleOf)) if (fields.Contains(Field.SampleOf))
SampleOf = item.SampleOf; SampleOf = item.SampleOf;
if (updateFields.Contains(Field.Supported)) if (fields.Contains(Field.Supported))
Supported = item.Supported; Supported = item.Supported;
if (updateFields.Contains(Field.SourceFile)) if (fields.Contains(Field.SourceFile))
SourceFile = item.SourceFile; SourceFile = item.SourceFile;
if (updateFields.Contains(Field.Runnable)) if (fields.Contains(Field.Runnable))
Runnable = item.Runnable; Runnable = item.Runnable;
if (updateFields.Contains(Field.Board)) if (fields.Contains(Field.Board))
Board = item.Board; Board = item.Board;
if (updateFields.Contains(Field.RebuildTo)) if (fields.Contains(Field.RebuildTo))
RebuildTo = item.RebuildTo; RebuildTo = item.RebuildTo;
if (updateFields.Contains(Field.Devices)) if (fields.Contains(Field.Devices))
Devices = item.Devices; Devices = item.Devices;
if (updateFields.Contains(Field.SlotOptions)) if (fields.Contains(Field.SlotOptions))
SlotOptions = item.SlotOptions; SlotOptions = item.SlotOptions;
if (updateFields.Contains(Field.Infos)) if (fields.Contains(Field.Infos))
Infos = item.Infos; Infos = item.Infos;
if (updateFields.Contains(Field.MachineType)) if (fields.Contains(Field.MachineType))
MachineType = item.MachineType; MachineType = item.MachineType;
} }

View File

@@ -568,6 +568,55 @@ namespace SabreTools.Library.DatItems
return true; return true;
} }
/// <summary>
/// Remove fields from the DatItem
/// </summary>
/// <param name="fields">List of Fields to remove</param>
public override void RemoveFields(List<Field> fields)
{
// Remove common fields first
base.RemoveFields(fields);
// Remove the fields
if (fields.Contains(Field.MD5))
MD5 = null;
#if NET_FRAMEWORK
if (fields.Contains(Field.RIPEMD160))
RIPEMD160 = null;
#endif
if (fields.Contains(Field.SHA1))
SHA1 = null;
if (fields.Contains(Field.SHA256))
SHA256 = null;
if (fields.Contains(Field.SHA384))
SHA384 = null;
if (fields.Contains(Field.SHA512))
SHA512 = null;
if (fields.Contains(Field.Merge))
MergeTag = null;
if (fields.Contains(Field.Region))
Region = null;
if (fields.Contains(Field.Index))
Index = null;
if (fields.Contains(Field.Writable))
Writable = null;
if (fields.Contains(Field.Status))
ItemStatus = ItemStatus.NULL;
if (fields.Contains(Field.Optional))
Optional = null;
}
#endregion #endregion
#region Sorting and Merging #region Sorting and Merging
@@ -629,11 +678,11 @@ namespace SabreTools.Library.DatItems
/// Replace fields from another item /// Replace fields from another item
/// </summary> /// </summary>
/// <param name="item">DatItem to pull new information from</param> /// <param name="item">DatItem to pull new information from</param>
/// <param name="updateFields">List of Fields representing what should be updated</param> /// <param name="fields">List of Fields representing what should be updated</param>
public override void ReplaceFields(DatItem item, List<Field> updateFields) public override void ReplaceFields(DatItem item, List<Field> fields)
{ {
// Replace common fields first // Replace common fields first
base.ReplaceFields(item, updateFields); base.ReplaceFields(item, fields);
// If we don't have a Disk to replace from, ignore specific fields // If we don't have a Disk to replace from, ignore specific fields
if (item.ItemType != ItemType.Disk) if (item.ItemType != ItemType.Disk)
@@ -643,60 +692,60 @@ namespace SabreTools.Library.DatItems
Disk newItem = item as Disk; Disk newItem = item as Disk;
// Replace the fields // Replace the fields
if (updateFields.Contains(Field.MD5)) if (fields.Contains(Field.MD5))
{ {
if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5)) if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5))
MD5 = newItem.MD5; MD5 = newItem.MD5;
} }
#if NET_FRAMEWORK #if NET_FRAMEWORK
if (updateFields.Contains(Field.RIPEMD160)) if (fields.Contains(Field.RIPEMD160))
{ {
if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160)) if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160))
RIPEMD160 = newItem.RIPEMD160; RIPEMD160 = newItem.RIPEMD160;
} }
#endif #endif
if (updateFields.Contains(Field.SHA1)) if (fields.Contains(Field.SHA1))
{ {
if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1)) if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1))
SHA1 = newItem.SHA1; SHA1 = newItem.SHA1;
} }
if (updateFields.Contains(Field.SHA256)) if (fields.Contains(Field.SHA256))
{ {
if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256)) if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256))
SHA256 = newItem.SHA256; SHA256 = newItem.SHA256;
} }
if (updateFields.Contains(Field.SHA384)) if (fields.Contains(Field.SHA384))
{ {
if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384)) if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384))
SHA384 = newItem.SHA384; SHA384 = newItem.SHA384;
} }
if (updateFields.Contains(Field.SHA512)) if (fields.Contains(Field.SHA512))
{ {
if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512)) if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512))
SHA512 = newItem.SHA512; SHA512 = newItem.SHA512;
} }
if (updateFields.Contains(Field.Merge)) if (fields.Contains(Field.Merge))
MergeTag = newItem.MergeTag; MergeTag = newItem.MergeTag;
if (updateFields.Contains(Field.Region)) if (fields.Contains(Field.Region))
Region = newItem.Region; Region = newItem.Region;
if (updateFields.Contains(Field.Index)) if (fields.Contains(Field.Index))
Index = newItem.Index; Index = newItem.Index;
if (updateFields.Contains(Field.Writable)) if (fields.Contains(Field.Writable))
Writable = newItem.Writable; Writable = newItem.Writable;
if (updateFields.Contains(Field.Status)) if (fields.Contains(Field.Status))
ItemStatus = newItem.ItemStatus; ItemStatus = newItem.ItemStatus;
if (updateFields.Contains(Field.Optional)) if (fields.Contains(Field.Optional))
Optional = newItem.Optional; Optional = newItem.Optional;
} }

View File

@@ -202,6 +202,29 @@ namespace SabreTools.Library.DatItems
return true; return true;
} }
/// <summary>
/// Remove fields from the DatItem
/// </summary>
/// <param name="fields">List of Fields to remove</param>
public override void RemoveFields(List<Field> fields)
{
// Remove common fields first
base.RemoveFields(fields);
// Remove the fields
if (fields.Contains(Field.Region))
Region = null;
if (fields.Contains(Field.Language))
Language = null;
if (fields.Contains(Field.Date))
Date = null;
if (fields.Contains(Field.Default))
Default = null;
}
#endregion #endregion
#region Sorting and Merging #region Sorting and Merging
@@ -210,11 +233,11 @@ namespace SabreTools.Library.DatItems
/// Replace fields from another item /// Replace fields from another item
/// </summary> /// </summary>
/// <param name="item">DatItem to pull new information from</param> /// <param name="item">DatItem to pull new information from</param>
/// <param name="updateFields">List of Fields representing what should be updated</param> /// <param name="fields">List of Fields representing what should be updated</param>
public override void ReplaceFields(DatItem item, List<Field> updateFields) public override void ReplaceFields(DatItem item, List<Field> fields)
{ {
// Replace common fields first // Replace common fields first
base.ReplaceFields(item, updateFields); base.ReplaceFields(item, fields);
// If we don't have a Release to replace from, ignore specific fields // If we don't have a Release to replace from, ignore specific fields
if (item.ItemType != ItemType.Release) if (item.ItemType != ItemType.Release)
@@ -224,16 +247,16 @@ namespace SabreTools.Library.DatItems
Release newItem = item as Release; Release newItem = item as Release;
// Replace the fields // Replace the fields
if (updateFields.Contains(Field.Region)) if (fields.Contains(Field.Region))
Region = newItem.Region; Region = newItem.Region;
if (updateFields.Contains(Field.Language)) if (fields.Contains(Field.Language))
Language = newItem.Language; Language = newItem.Language;
if (updateFields.Contains(Field.Date)) if (fields.Contains(Field.Date))
Date = newItem.Date; Date = newItem.Date;
if (updateFields.Contains(Field.Default)) if (fields.Contains(Field.Default))
Default = newItem.Default; Default = newItem.Default;
} }

View File

@@ -619,6 +619,67 @@ namespace SabreTools.Library.DatItems
return true; return true;
} }
/// <summary>
/// Remove fields from the DatItem
/// </summary>
/// <param name="fields">List of Fields to remove</param>
public override void RemoveFields(List<Field> fields)
{
// Remove common fields first
base.RemoveFields(fields);
// Remove the fields
if (fields.Contains(Field.Bios))
Bios = null;
if (fields.Contains(Field.Size))
Size = 0;
if (fields.Contains(Field.CRC))
CRC = null;
if (fields.Contains(Field.MD5))
MD5 = null;
#if NET_FRAMEWORK
if (fields.Contains(Field.RIPEMD160))
RIPEMD160 = null;
#endif
if (fields.Contains(Field.SHA1))
SHA1 = null;
if (fields.Contains(Field.SHA256))
SHA256 = null;
if (fields.Contains(Field.SHA384))
SHA384 = null;
if (fields.Contains(Field.SHA512))
SHA512 = null;
if (fields.Contains(Field.Merge))
MergeTag = null;
if (fields.Contains(Field.Region))
Region = null;
if (fields.Contains(Field.Offset))
Offset = null;
if (fields.Contains(Field.Date))
Date = null;
if (fields.Contains(Field.Status))
ItemStatus = ItemStatus.NULL;
if (fields.Contains(Field.Optional))
Optional = null;
if (fields.Contains(Field.Inverted))
Inverted = null;
}
#endregion #endregion
#region Sorting and Merging #region Sorting and Merging
@@ -684,11 +745,11 @@ namespace SabreTools.Library.DatItems
/// Replace fields from another item /// Replace fields from another item
/// </summary> /// </summary>
/// <param name="item">DatItem to pull new information from</param> /// <param name="item">DatItem to pull new information from</param>
/// <param name="updateFields">List of Fields representing what should be updated</param> /// <param name="fields">List of Fields representing what should be updated</param>
public override void ReplaceFields(DatItem item, List<Field> updateFields) public override void ReplaceFields(DatItem item, List<Field> fields)
{ {
// Replace common fields first // Replace common fields first
base.ReplaceFields(item, updateFields); base.ReplaceFields(item, fields);
// If we don't have a Rom to replace from, ignore specific fields // If we don't have a Rom to replace from, ignore specific fields
if (item.ItemType != ItemType.Rom) if (item.ItemType != ItemType.Rom)
@@ -698,75 +759,75 @@ namespace SabreTools.Library.DatItems
Rom newItem = item as Rom; Rom newItem = item as Rom;
// Replace the fields // Replace the fields
if (updateFields.Contains(Field.Bios)) if (fields.Contains(Field.Bios))
Bios = newItem.Bios; Bios = newItem.Bios;
if (updateFields.Contains(Field.Size)) if (fields.Contains(Field.Size))
Size = newItem.Size; Size = newItem.Size;
if (updateFields.Contains(Field.CRC)) if (fields.Contains(Field.CRC))
{ {
if (string.IsNullOrEmpty(CRC) && !string.IsNullOrEmpty(newItem.CRC)) if (string.IsNullOrEmpty(CRC) && !string.IsNullOrEmpty(newItem.CRC))
CRC = newItem.CRC; CRC = newItem.CRC;
} }
if (updateFields.Contains(Field.MD5)) if (fields.Contains(Field.MD5))
{ {
if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5)) if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5))
MD5 = newItem.MD5; MD5 = newItem.MD5;
} }
#if NET_FRAMEWORK #if NET_FRAMEWORK
if (updateFields.Contains(Field.RIPEMD160)) if (fields.Contains(Field.RIPEMD160))
{ {
if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160)) if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160))
RIPEMD160 = newItem.RIPEMD160; RIPEMD160 = newItem.RIPEMD160;
} }
#endif #endif
if (updateFields.Contains(Field.SHA1)) if (fields.Contains(Field.SHA1))
{ {
if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1)) if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1))
SHA1 = newItem.SHA1; SHA1 = newItem.SHA1;
} }
if (updateFields.Contains(Field.SHA256)) if (fields.Contains(Field.SHA256))
{ {
if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256)) if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256))
SHA256 = newItem.SHA256; SHA256 = newItem.SHA256;
} }
if (updateFields.Contains(Field.SHA384)) if (fields.Contains(Field.SHA384))
{ {
if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384)) if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384))
SHA384 = newItem.SHA384; SHA384 = newItem.SHA384;
} }
if (updateFields.Contains(Field.SHA512)) if (fields.Contains(Field.SHA512))
{ {
if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512)) if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512))
SHA512 = newItem.SHA512; SHA512 = newItem.SHA512;
} }
if (updateFields.Contains(Field.Merge)) if (fields.Contains(Field.Merge))
MergeTag = newItem.MergeTag; MergeTag = newItem.MergeTag;
if (updateFields.Contains(Field.Region)) if (fields.Contains(Field.Region))
Region = newItem.Region; Region = newItem.Region;
if (updateFields.Contains(Field.Offset)) if (fields.Contains(Field.Offset))
Offset = newItem.Offset; Offset = newItem.Offset;
if (updateFields.Contains(Field.Date)) if (fields.Contains(Field.Date))
Date = newItem.Date; Date = newItem.Date;
if (updateFields.Contains(Field.Status)) if (fields.Contains(Field.Status))
ItemStatus = newItem.ItemStatus; ItemStatus = newItem.ItemStatus;
if (updateFields.Contains(Field.Optional)) if (fields.Contains(Field.Optional))
Optional = newItem.Optional; Optional = newItem.Optional;
if (updateFields.Contains(Field.Inverted)) if (fields.Contains(Field.Inverted))
Inverted = newItem.Inverted; Inverted = newItem.Inverted;
} }