diff --git a/SabreTools.DatItems/Adjuster.cs b/SabreTools.DatItems/Adjuster.cs index 8592feb2..57efa942 100644 --- a/SabreTools.DatItems/Adjuster.cs +++ b/SabreTools.DatItems/Adjuster.cs @@ -116,37 +116,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Adjuster to replace from, ignore specific fields - if (item.ItemType != ItemType.Adjuster) - return; - - // Cast for easier access - Adjuster newItem = item as Adjuster; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Default)) - Default = newItem.Default; - - // DatItem_Condition_* doesn't make sense here - // since not every condition under the other item - // can replace every condition under this item - } - - #endregion } } diff --git a/SabreTools.DatItems/Analog.cs b/SabreTools.DatItems/Analog.cs index 2e472466..d2347725 100644 --- a/SabreTools.DatItems/Analog.cs +++ b/SabreTools.DatItems/Analog.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -70,30 +69,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Analog to replace from, ignore specific fields - if (item.ItemType != ItemType.Analog) - return; - - // Cast for easier access - Analog newItem = item as Analog; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Analog_Mask)) - Mask = newItem.Mask; - } - - #endregion } } diff --git a/SabreTools.DatItems/Archive.cs b/SabreTools.DatItems/Archive.cs index 441cff85..90e2e268 100644 --- a/SabreTools.DatItems/Archive.cs +++ b/SabreTools.DatItems/Archive.cs @@ -80,30 +80,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Archive to replace from, ignore specific fields - if (item.ItemType != ItemType.Archive) - return; - - // Cast for easier access - Archive newItem = item as Archive; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - } - - #endregion } } diff --git a/SabreTools.DatItems/BiosSet.cs b/SabreTools.DatItems/BiosSet.cs index 61565b34..ff3af616 100644 --- a/SabreTools.DatItems/BiosSet.cs +++ b/SabreTools.DatItems/BiosSet.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -102,36 +101,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a BiosSet to replace from, ignore specific fields - if (item.ItemType != ItemType.BiosSet) - return; - - // Cast for easier access - BiosSet newItem = item as BiosSet; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Description)) - Description = newItem.Description; - - if (datItemFields.Contains(DatItemField.Default)) - Default = newItem.Default; - } - - #endregion } } diff --git a/SabreTools.DatItems/Chip.cs b/SabreTools.DatItems/Chip.cs index f7f6089e..573b73cf 100644 --- a/SabreTools.DatItems/Chip.cs +++ b/SabreTools.DatItems/Chip.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -116,39 +115,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Chip to replace from, ignore specific fields - if (item.ItemType != ItemType.Chip) - return; - - // Cast for easier access - Chip newItem = item as Chip; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Tag)) - Tag = newItem.Tag; - - if (datItemFields.Contains(DatItemField.ChipType)) - ChipType = newItem.ChipType; - - if (datItemFields.Contains(DatItemField.Clock)) - Clock = newItem.Clock; - } - - #endregion } } diff --git a/SabreTools.DatItems/Condition.cs b/SabreTools.DatItems/Condition.cs index 1085f1f6..f465e3ee 100644 --- a/SabreTools.DatItems/Condition.cs +++ b/SabreTools.DatItems/Condition.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -102,47 +101,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Condition to replace from, ignore specific fields - if (item.ItemType != ItemType.Condition) - return; - - // Cast for easier access - Condition newItem = item as Condition; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Tag)) - Tag = newItem.Tag; - else if (datItemFields.Contains(DatItemField.Condition_Tag)) - Tag = newItem.Tag; - - if (datItemFields.Contains(DatItemField.Mask)) - Mask = newItem.Mask; - else if (datItemFields.Contains(DatItemField.Condition_Mask)) - Mask = newItem.Mask; - - if (datItemFields.Contains(DatItemField.Relation)) - Relation = newItem.Relation; - else if (datItemFields.Contains(DatItemField.Condition_Relation)) - Relation = newItem.Relation; - - if (datItemFields.Contains(DatItemField.Value)) - Value = newItem.Value; - else if (datItemFields.Contains(DatItemField.Condition_Value)) - Value = newItem.Value; - } - - #endregion } } diff --git a/SabreTools.DatItems/Configuration.cs b/SabreTools.DatItems/Configuration.cs index d2241921..c77851dc 100644 --- a/SabreTools.DatItems/Configuration.cs +++ b/SabreTools.DatItems/Configuration.cs @@ -163,48 +163,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Configuration to replace from, ignore specific fields - if (item.ItemType != ItemType.Configuration) - return; - - // Cast for easier access - Configuration newItem = item as Configuration; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Tag)) - Tag = newItem.Tag; - - if (datItemFields.Contains(DatItemField.Mask)) - Mask = newItem.Mask; - - // DatItem_Condition_* doesn't make sense here - // since not every condition under the other item - // can replace every condition under this item - - // DatItem_Location_* doesn't make sense here - // since not every location under the other item - // can replace every location under this item - - // DatItem_Setting_* doesn't make sense here - // since not every setting under the other item - // can replace every setting under this item - } - - #endregion } } diff --git a/SabreTools.DatItems/Control.cs b/SabreTools.DatItems/Control.cs index cb149e3b..617a21e8 100644 --- a/SabreTools.DatItems/Control.cs +++ b/SabreTools.DatItems/Control.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -198,63 +197,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Control to replace from, ignore specific fields - if (item.ItemType != ItemType.Control) - return; - - // Cast for easier access - Control newItem = item as Control; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Control_Type)) - ControlType = newItem.ControlType; - - if (datItemFields.Contains(DatItemField.Control_Player)) - Player = newItem.Player; - - if (datItemFields.Contains(DatItemField.Control_Buttons)) - Buttons = newItem.Buttons; - - if (datItemFields.Contains(DatItemField.Control_RequiredButtons)) - RequiredButtons = newItem.RequiredButtons; - - if (datItemFields.Contains(DatItemField.Control_Minimum)) - Minimum = newItem.Minimum; - - if (datItemFields.Contains(DatItemField.Control_Maximum)) - Maximum = newItem.Maximum; - - if (datItemFields.Contains(DatItemField.Control_Sensitivity)) - Sensitivity = newItem.Sensitivity; - - if (datItemFields.Contains(DatItemField.Control_KeyDelta)) - KeyDelta = newItem.KeyDelta; - - if (datItemFields.Contains(DatItemField.Control_Reverse)) - Reverse = newItem.Reverse; - - if (datItemFields.Contains(DatItemField.Control_Ways)) - Ways = newItem.Ways; - - if (datItemFields.Contains(DatItemField.Control_Ways2)) - Ways2 = newItem.Ways2; - - if (datItemFields.Contains(DatItemField.Control_Ways3)) - Ways3 = newItem.Ways3; - } - - #endregion } } diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs index 70138fb2..7c43eae3 100644 --- a/SabreTools.DatItems/DatItem.cs +++ b/SabreTools.DatItems/DatItem.cs @@ -630,25 +630,6 @@ namespace SabreTools.DatItems return key; } - /// - /// Replace fields from another item - /// - /// DatItem to pull new information from - /// DatItem fields to remove - /// Machine fields to remove - /// TODO: Fix case where datItemFields is null - public virtual void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - if (Machine == null) - Machine = new Machine(); - - // TODO: Figure out why this wasn't here - // Machine.ReplaceFields(item.Machine, machineFields) - } - #endregion #endregion // Instance Methods diff --git a/SabreTools.DatItems/DatItemTool.cs b/SabreTools.DatItems/DatItemTool.cs index accfc4ce..59186011 100644 --- a/SabreTools.DatItems/DatItemTool.cs +++ b/SabreTools.DatItems/DatItemTool.cs @@ -1053,10 +1053,929 @@ namespace SabreTools.DatItems /// /// DatItem to replace fields in /// DatItem to pull new information from - /// List of fields representing what should be updated - public static void ReplaceFields(DatItem datItem, DatItem repDatItem, List fields) + /// List of fields representing what should be updated + /// TODO: Extract out setting name to common + public static void ReplaceFields(DatItem datItem, DatItem repDatItem, List datItemFields) { + if (datItem == null || repDatItem == null || datItemFields == null) + return; + if (datItem.ItemType != repDatItem.ItemType) + return; + + #region Adjuster + + if (datItem is Adjuster adjuster) + { + Adjuster newItem = repDatItem as Adjuster; + + if (datItemFields.Contains(DatItemField.Name)) + adjuster.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Default)) + adjuster.Default = newItem.Default; + + // Condition_* doesn't make sense here + // since not every condition under the other item + // can replace every condition under this item + } + + #endregion + + #region Analog + + else if (datItem is Analog analog) + { + Analog newItem = repDatItem as Analog; + + if (datItemFields.Contains(DatItemField.Analog_Mask)) + analog.Mask = newItem.Mask; + } + + #endregion + + #region Archive + + else if (datItem is Archive archive) + { + Archive newItem = repDatItem as Archive; + + if (datItemFields.Contains(DatItemField.Name)) + archive.Name = newItem.Name; + } + + #endregion + + #region BiosSet + + else if (datItem is BiosSet biosSet) + { + BiosSet newItem = repDatItem as BiosSet; + + if (datItemFields.Contains(DatItemField.Name)) + biosSet.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Description)) + biosSet.Description = newItem.Description; + + if (datItemFields.Contains(DatItemField.Default)) + biosSet.Default = newItem.Default; + } + + #endregion + + #region Chip + + else if (datItem is Chip chip) + { + Chip newItem = repDatItem as Chip; + + if (datItemFields.Contains(DatItemField.Name)) + chip.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Tag)) + chip.Tag = newItem.Tag; + + if (datItemFields.Contains(DatItemField.ChipType)) + chip.ChipType = newItem.ChipType; + + if (datItemFields.Contains(DatItemField.Clock)) + chip.Clock = newItem.Clock; + } + + #endregion + + #region Condition + + else if (datItem is Condition condition) + { + Condition newItem = repDatItem as Condition; + + if (datItemFields.Contains(DatItemField.Tag)) + condition.Tag = newItem.Tag; + else if (datItemFields.Contains(DatItemField.Condition_Tag)) + condition.Tag = newItem.Tag; + + if (datItemFields.Contains(DatItemField.Mask)) + condition.Mask = newItem.Mask; + else if (datItemFields.Contains(DatItemField.Condition_Mask)) + condition.Mask = newItem.Mask; + + if (datItemFields.Contains(DatItemField.Relation)) + condition.Relation = newItem.Relation; + else if (datItemFields.Contains(DatItemField.Condition_Relation)) + condition.Relation = newItem.Relation; + + if (datItemFields.Contains(DatItemField.Value)) + condition.Value = newItem.Value; + else if (datItemFields.Contains(DatItemField.Condition_Value)) + condition.Value = newItem.Value; + } + + #endregion + + #region Configuration + + else if (datItem is Configuration configuration) + { + Configuration newItem = repDatItem as Configuration; + + if (datItemFields.Contains(DatItemField.Name)) + configuration.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Tag)) + configuration.Tag = newItem.Tag; + + if (datItemFields.Contains(DatItemField.Mask)) + configuration.Mask = newItem.Mask; + + // Condition_* doesn't make sense here + // since not every condition under the other item + // can replace every condition under this item + + // Location_* doesn't make sense here + // since not every location under the other item + // can replace every location under this item + + // Setting_* doesn't make sense here + // since not every setting under the other item + // can replace every setting under this item + } + + #endregion + + #region Control + + else if (datItem is Control control) + { + Control newItem = repDatItem as Control; + + if (datItemFields.Contains(DatItemField.Control_Type)) + control.ControlType = newItem.ControlType; + + if (datItemFields.Contains(DatItemField.Control_Player)) + control.Player = newItem.Player; + + if (datItemFields.Contains(DatItemField.Control_Buttons)) + control.Buttons = newItem.Buttons; + + if (datItemFields.Contains(DatItemField.Control_RequiredButtons)) + control.RequiredButtons = newItem.RequiredButtons; + + if (datItemFields.Contains(DatItemField.Control_Minimum)) + control.Minimum = newItem.Minimum; + + if (datItemFields.Contains(DatItemField.Control_Maximum)) + control.Maximum = newItem.Maximum; + + if (datItemFields.Contains(DatItemField.Control_Sensitivity)) + control.Sensitivity = newItem.Sensitivity; + + if (datItemFields.Contains(DatItemField.Control_KeyDelta)) + control.KeyDelta = newItem.KeyDelta; + + if (datItemFields.Contains(DatItemField.Control_Reverse)) + control.Reverse = newItem.Reverse; + + if (datItemFields.Contains(DatItemField.Control_Ways)) + control.Ways = newItem.Ways; + + if (datItemFields.Contains(DatItemField.Control_Ways2)) + control.Ways2 = newItem.Ways2; + + if (datItemFields.Contains(DatItemField.Control_Ways3)) + control.Ways3 = newItem.Ways3; + } + + #endregion + + #region DataArea + + else if (datItem is DataArea dataArea) + { + DataArea newItem = repDatItem as DataArea; + + if (datItemFields.Contains(DatItemField.AreaName)) + dataArea.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.AreaSize)) + dataArea.Size = newItem.Size; + + if (datItemFields.Contains(DatItemField.AreaWidth)) + dataArea.Width = newItem.Width; + + if (datItemFields.Contains(DatItemField.AreaEndianness)) + dataArea.Endianness = newItem.Endianness; + } + + #endregion + + #region Device + + else if (datItem is Device device) + { + Device newItem = repDatItem as Device; + + if (datItemFields.Contains(DatItemField.DeviceType)) + device.DeviceType = newItem.DeviceType; + + if (datItemFields.Contains(DatItemField.Tag)) + device.Tag = newItem.Tag; + + if (datItemFields.Contains(DatItemField.FixedImage)) + device.FixedImage = newItem.FixedImage; + + if (datItemFields.Contains(DatItemField.Mandatory)) + device.Mandatory = newItem.Mandatory; + + if (datItemFields.Contains(DatItemField.Interface)) + device.Interface = newItem.Interface; + + // Instance_* doesn't make sense here + // since not every instance under the other item + // can replace every instance under this item + + // Extension_* doesn't make sense here + // since not every extension under the other item + // can replace every extension under this item + } + + #endregion + + #region DeviceReference + + else if (datItem is DeviceReference deviceReference) + { + DeviceReference newItem = repDatItem as DeviceReference; + + if (datItemFields.Contains(DatItemField.Name)) + deviceReference.Name = newItem.Name; + } + + #endregion + + #region DipSwitch + + else if (datItem is DipSwitch dipSwitch) + { + DipSwitch newItem = repDatItem as DipSwitch; + + #region Common + + if (datItemFields.Contains(DatItemField.Name)) + dipSwitch.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Tag)) + dipSwitch.Tag = newItem.Tag; + + if (datItemFields.Contains(DatItemField.Mask)) + dipSwitch.Mask = newItem.Mask; + + // Condition_* doesn't make sense here + // since not every condition under the other item + // can replace every condition under this item + + // Location_* doesn't make sense here + // since not every location under the other item + // can replace every location under this item + + // Setting_* doesn't make sense here + // since not every value under the other item + // can replace every value under this item + + #endregion + + #region SoftwareList + + if (dipSwitch.PartSpecified && newItem.PartSpecified) + ReplaceFields(dipSwitch.Part, newItem.Part, datItemFields); + + #endregion + } + + #endregion + + #region Disk + + else if (datItem is Disk disk) + { + Disk newItem = repDatItem as Disk; + + #region Common + + if (datItemFields.Contains(DatItemField.Name)) + disk.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.MD5)) + { + if (string.IsNullOrEmpty(disk.MD5) && !string.IsNullOrEmpty(newItem.MD5)) + disk.MD5 = newItem.MD5; + } + + if (datItemFields.Contains(DatItemField.SHA1)) + { + if (string.IsNullOrEmpty(disk.SHA1) && !string.IsNullOrEmpty(newItem.SHA1)) + disk.SHA1 = newItem.SHA1; + } + + if (datItemFields.Contains(DatItemField.Merge)) + disk.MergeTag = newItem.MergeTag; + + if (datItemFields.Contains(DatItemField.Region)) + disk.Region = newItem.Region; + + if (datItemFields.Contains(DatItemField.Index)) + disk.Index = newItem.Index; + + if (datItemFields.Contains(DatItemField.Writable)) + disk.Writable = newItem.Writable; + + if (datItemFields.Contains(DatItemField.Status)) + disk.ItemStatus = newItem.ItemStatus; + + if (datItemFields.Contains(DatItemField.Optional)) + disk.Optional = newItem.Optional; + + #endregion + + #region SoftwareList + + if (disk.DiskAreaSpecified && newItem.DiskAreaSpecified) + ReplaceFields(disk.DiskArea, newItem.DiskArea, datItemFields); + + if (disk.PartSpecified && newItem.PartSpecified) + ReplaceFields(disk.Part, newItem.Part, datItemFields); + + #endregion + } + + #endregion + + #region DiskArea + + else if (datItem is DiskArea diskArea) + { + DiskArea newItem = repDatItem as DiskArea; + + if (datItemFields.Contains(DatItemField.AreaName)) + diskArea.Name = newItem.Name; + } + + #endregion + + #region Display + + else if (datItem is Display display) + { + Display newItem = repDatItem as Display; + + if (datItemFields.Contains(DatItemField.Tag)) + display.Tag = newItem.Tag; + + if (datItemFields.Contains(DatItemField.DisplayType)) + display.DisplayType = newItem.DisplayType; + + if (datItemFields.Contains(DatItemField.Rotate)) + display.Rotate = newItem.Rotate; + + if (datItemFields.Contains(DatItemField.FlipX)) + display.FlipX = newItem.FlipX; + + if (datItemFields.Contains(DatItemField.Width)) + display.Width = newItem.Width; + + if (datItemFields.Contains(DatItemField.Height)) + display.Height = newItem.Height; + + if (datItemFields.Contains(DatItemField.Refresh)) + display.Refresh = newItem.Refresh; + + if (datItemFields.Contains(DatItemField.PixClock)) + display.PixClock = newItem.PixClock; + + if (datItemFields.Contains(DatItemField.HTotal)) + display.HTotal = newItem.HTotal; + + if (datItemFields.Contains(DatItemField.HBEnd)) + display.HBEnd = newItem.HBEnd; + + if (datItemFields.Contains(DatItemField.HBStart)) + display.HBStart = newItem.HBStart; + + if (datItemFields.Contains(DatItemField.VTotal)) + display.VTotal = newItem.VTotal; + + if (datItemFields.Contains(DatItemField.VBEnd)) + display.VBEnd = newItem.VBEnd; + + if (datItemFields.Contains(DatItemField.VBStart)) + display.VBStart = newItem.VBStart; + } + + #endregion + + #region Driver + + else if (datItem is Driver driver) + { + Driver newItem = repDatItem as Driver; + + if (datItemFields.Contains(DatItemField.SupportStatus)) + driver.Status = newItem.Status; + + if (datItemFields.Contains(DatItemField.EmulationStatus)) + driver.Emulation = newItem.Emulation; + + if (datItemFields.Contains(DatItemField.CocktailStatus)) + driver.Cocktail = newItem.Cocktail; + + if (datItemFields.Contains(DatItemField.SaveStateStatus)) + driver.SaveState = newItem.SaveState; + } + + #endregion + + #region Extension + + else if (datItem is Extension extension) + { + Extension newItem = repDatItem as Extension; + + if (datItemFields.Contains(DatItemField.Extension_Name)) + extension.Name = newItem.Name; + } + + #endregion + + #region Feature + + else if (datItem is Feature feature) + { + Feature newItem = repDatItem as Feature; + + if (datItemFields.Contains(DatItemField.FeatureType)) + feature.Type = newItem.Type; + + if (datItemFields.Contains(DatItemField.FeatureStatus)) + feature.Status = newItem.Status; + + if (datItemFields.Contains(DatItemField.FeatureOverall)) + feature.Overall = newItem.Overall; + } + + #endregion + + #region Info + + else if (datItem is Info info) + { + Info newItem = repDatItem as Info; + + if (datItemFields.Contains(DatItemField.Name)) + info.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Value)) + info.Value = newItem.Value; + } + + #endregion + + #region Input + + else if (datItem is Input input) + { + Input newItem = repDatItem as Input; + + if (datItemFields.Contains(DatItemField.Service)) + input.Service = newItem.Service; + + if (datItemFields.Contains(DatItemField.Tilt)) + input.Tilt = newItem.Tilt; + + if (datItemFields.Contains(DatItemField.Players)) + input.Players = newItem.Players; + + if (datItemFields.Contains(DatItemField.Coins)) + input.Coins = newItem.Coins; + + // Control_* doesn't make sense here + // since not every control under the other item + // can replace every control under this item + } + + #endregion + + #region Instance + + else if (datItem is Instance instance) + { + Instance newItem = repDatItem as Instance; + + if (datItemFields.Contains(DatItemField.Instance_Name)) + instance.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Instance_BriefName)) + instance.BriefName = newItem.BriefName; + } + + #endregion + + #region Location + + else if (datItem is Location location) + { + Location newItem = repDatItem as Location; + + if (datItemFields.Contains(DatItemField.Location_Name)) + location.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Location_Number)) + location.Number = newItem.Number; + + if (datItemFields.Contains(DatItemField.Location_Inverted)) + location.Inverted = newItem.Inverted; + } + + #endregion + + #region Media + + else if (datItem is Media media) + { + Media newItem = repDatItem as Media; + + if (datItemFields.Contains(DatItemField.Name)) + media.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.MD5)) + { + if (string.IsNullOrEmpty(media.MD5) && !string.IsNullOrEmpty(newItem.MD5)) + media.MD5 = newItem.MD5; + } + + if (datItemFields.Contains(DatItemField.SHA1)) + { + if (string.IsNullOrEmpty(media.SHA1) && !string.IsNullOrEmpty(newItem.SHA1)) + media.SHA1 = newItem.SHA1; + } + + if (datItemFields.Contains(DatItemField.SHA256)) + { + if (string.IsNullOrEmpty(media.SHA256) && !string.IsNullOrEmpty(newItem.SHA256)) + media.SHA256 = newItem.SHA256; + } + + if (datItemFields.Contains(DatItemField.SpamSum)) + { + if (string.IsNullOrEmpty(media.SpamSum) && !string.IsNullOrEmpty(newItem.SpamSum)) + media.SpamSum = newItem.SpamSum; + } + } + + #endregion + + #region Part + + else if (datItem is Part part) + { + Part newItem = repDatItem as Part; + + if (datItemFields.Contains(DatItemField.Part_Name)) + part.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Part_Interface)) + part.Interface = newItem.Interface; + + // Part_Feature_* doesn't make sense here + // since not every part feature under the other item + // can replace every part feature under this item + } + + #endregion + + #region PartFeature + + else if (datItem is PartFeature partFeature) + { + PartFeature newItem = repDatItem as PartFeature; + + if (datItemFields.Contains(DatItemField.Part_Feature_Name)) + partFeature.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Part_Feature_Value)) + partFeature.Value = newItem.Value; + } + + #endregion + + #region Port + + else if (datItem is Port port) + { + Port newItem = repDatItem as Port; + + if (datItemFields.Contains(DatItemField.Name)) + port.Tag = newItem.Tag; + + // Analog_* doesn't make sense here + // since not every analog under the other item + // can replace every analog under this item + } + + #endregion + + #region RamOption + + else if (datItem is RamOption ramOption) + { + RamOption newItem = repDatItem as RamOption; + + if (datItemFields.Contains(DatItemField.Name)) + ramOption.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Default)) + ramOption.Default = newItem.Default; + + if (datItemFields.Contains(DatItemField.Content)) + ramOption.Content = newItem.Content; + } + + #endregion + + #region Release + + else if (datItem is Release release) + { + Release newItem = repDatItem as Release; + + if (datItemFields.Contains(DatItemField.Name)) + release.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Region)) + release.Region = newItem.Region; + + if (datItemFields.Contains(DatItemField.Language)) + release.Language = newItem.Language; + + if (datItemFields.Contains(DatItemField.Date)) + release.Date = newItem.Date; + + if (datItemFields.Contains(DatItemField.Default)) + release.Default = newItem.Default; + } + + #endregion + + #region Rom + + else if (datItem is Rom rom) + { + Rom newItem = repDatItem as Rom; + + #region Common + + if (datItemFields.Contains(DatItemField.Name)) + rom.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Bios)) + rom.Bios = newItem.Bios; + + if (datItemFields.Contains(DatItemField.Size)) + rom.Size = newItem.Size; + + if (datItemFields.Contains(DatItemField.CRC)) + { + if (string.IsNullOrEmpty(rom.CRC) && !string.IsNullOrEmpty(newItem.CRC)) + rom.CRC = newItem.CRC; + } + + if (datItemFields.Contains(DatItemField.MD5)) + { + if (string.IsNullOrEmpty(rom.MD5) && !string.IsNullOrEmpty(newItem.MD5)) + rom.MD5 = newItem.MD5; + } + +#if NET_FRAMEWORK + if (datItemFields.Contains(DatItemField.RIPEMD160)) + { + if (string.IsNullOrEmpty(rom.RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160)) + rom.RIPEMD160 = newItem.RIPEMD160; + } +#endif + + if (datItemFields.Contains(DatItemField.SHA1)) + { + if (string.IsNullOrEmpty(rom.SHA1) && !string.IsNullOrEmpty(newItem.SHA1)) + rom.SHA1 = newItem.SHA1; + } + + if (datItemFields.Contains(DatItemField.SHA256)) + { + if (string.IsNullOrEmpty(rom.SHA256) && !string.IsNullOrEmpty(newItem.SHA256)) + rom.SHA256 = newItem.SHA256; + } + + if (datItemFields.Contains(DatItemField.SHA384)) + { + if (string.IsNullOrEmpty(rom.SHA384) && !string.IsNullOrEmpty(newItem.SHA384)) + rom.SHA384 = newItem.SHA384; + } + + if (datItemFields.Contains(DatItemField.SHA512)) + { + if (string.IsNullOrEmpty(rom.SHA512) && !string.IsNullOrEmpty(newItem.SHA512)) + rom.SHA512 = newItem.SHA512; + } + + if (datItemFields.Contains(DatItemField.SpamSum)) + { + if (string.IsNullOrEmpty(rom.SpamSum) && !string.IsNullOrEmpty(newItem.SpamSum)) + rom.SpamSum = newItem.SpamSum; + } + + if (datItemFields.Contains(DatItemField.Merge)) + rom.MergeTag = newItem.MergeTag; + + if (datItemFields.Contains(DatItemField.Region)) + rom.Region = newItem.Region; + + if (datItemFields.Contains(DatItemField.Offset)) + rom.Offset = newItem.Offset; + + if (datItemFields.Contains(DatItemField.Date)) + rom.Date = newItem.Date; + + if (datItemFields.Contains(DatItemField.Status)) + rom.ItemStatus = newItem.ItemStatus; + + if (datItemFields.Contains(DatItemField.Optional)) + rom.Optional = newItem.Optional; + + if (datItemFields.Contains(DatItemField.Inverted)) + rom.Inverted = newItem.Inverted; + + #endregion + + #region AttractMode + + if (datItemFields.Contains(DatItemField.AltName)) + rom.AltName = newItem.AltName; + + if (datItemFields.Contains(DatItemField.AltTitle)) + rom.AltTitle = newItem.AltTitle; + + #endregion + + #region OpenMSX + + if (datItemFields.Contains(DatItemField.Original)) + rom.Original = newItem.Original; + + if (datItemFields.Contains(DatItemField.OpenMSXSubType)) + rom.OpenMSXSubType = newItem.OpenMSXSubType; + + if (datItemFields.Contains(DatItemField.OpenMSXType)) + rom.OpenMSXType = newItem.OpenMSXType; + + if (datItemFields.Contains(DatItemField.Remark)) + rom.Remark = newItem.Remark; + + if (datItemFields.Contains(DatItemField.Boot)) + rom.Boot = newItem.Boot; + + #endregion + + #region SoftwareList + + if (datItemFields.Contains(DatItemField.LoadFlag)) + rom.LoadFlag = newItem.LoadFlag; + + if (datItemFields.Contains(DatItemField.Value)) + rom.Value = newItem.Value; + + if (rom.DataAreaSpecified && newItem.DataAreaSpecified) + ReplaceFields(rom.DataArea, newItem.DataArea, datItemFields); + + if (rom.PartSpecified && newItem.PartSpecified) + ReplaceFields(rom.Part, newItem.Part, datItemFields); + + #endregion + } + + #endregion + + #region Sample + + else if (datItem is Sample sample) + { + Sample newItem = repDatItem as Sample; + + if (datItemFields.Contains(DatItemField.Name)) + sample.Name = newItem.Name; + } + + #endregion + + #region Setting + + else if (datItem is Setting setting) + { + Setting newItem = repDatItem as Setting; + + if (datItemFields.Contains(DatItemField.Setting_Name)) + setting.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Setting_Value)) + setting.Value = newItem.Value; + + if (datItemFields.Contains(DatItemField.Setting_Default)) + setting.Default = newItem.Default; + + // Condition_* doesn't make sense here + // since not every condition under the other item + // can replace every condition under this item + } + + #endregion + + #region SharedFeature + + else if (datItem is SharedFeature sharedFeature) + { + SharedFeature newItem = repDatItem as SharedFeature; + + if (datItemFields.Contains(DatItemField.Name)) + sharedFeature.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.Value)) + sharedFeature.Value = newItem.Value; + } + + #endregion + + #region Slot + + else if (datItem is Slot slot) + { + Slot newItem = repDatItem as Slot; + + if (datItemFields.Contains(DatItemField.Name)) + slot.Name = newItem.Name; + + // SlotOption_* doesn't make sense here + // since not every slot option under the other item + // can replace every slot option under this item + } + + #endregion + + #region SlotOption + + else if (datItem is SlotOption slotOption) + { + SlotOption newItem = repDatItem as SlotOption; + + if (datItemFields.Contains(DatItemField.SlotOption_Name)) + slotOption.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.SlotOption_DeviceName)) + slotOption.DeviceName = newItem.DeviceName; + + if (datItemFields.Contains(DatItemField.SlotOption_Default)) + slotOption.Default = newItem.Default; + } + + #endregion + + #region SoftwareList + + else if (datItem is SoftwareList softwareList) + { + SoftwareList newItem = repDatItem as SoftwareList; + + if (datItemFields.Contains(DatItemField.Name)) + softwareList.Name = newItem.Name; + + if (datItemFields.Contains(DatItemField.SoftwareListStatus)) + softwareList.Status = newItem.Status; + + if (datItemFields.Contains(DatItemField.Filter)) + softwareList.Filter = newItem.Filter; + } + + #endregion + + #region Sound + + else if (datItem is Sound sound) + { + Sound newItem = repDatItem as Sound; + + if (datItemFields.Contains(DatItemField.Channels)) + sound.Channels = newItem.Channels; + } + + #endregion } /// @@ -1064,142 +1983,142 @@ namespace SabreTools.DatItems /// /// Machine to replace fields in /// Machine to pull new information from - /// List of fields representing what should be updated + /// List of fields representing what should be updated /// True if descriptions should only be replaced if the game name is the same, false otherwise - public static void ReplaceFields(Machine machine, Machine repMachine, List fields, bool onlySame) + public static void ReplaceFields(Machine machine, Machine repMachine, List machineFields, bool onlySame) { #region Common - if (fields.Contains(MachineField.Name)) + if (machineFields.Contains(MachineField.Name)) machine.Name = repMachine.Name; - if (fields.Contains(MachineField.Comment)) + if (machineFields.Contains(MachineField.Comment)) machine.Comment = repMachine.Comment; - if (fields.Contains(MachineField.Description)) + if (machineFields.Contains(MachineField.Description)) { if (!onlySame || (onlySame && machine.Name == machine.Description)) machine.Description = repMachine.Description; } - if (fields.Contains(MachineField.Year)) + if (machineFields.Contains(MachineField.Year)) machine.Year = repMachine.Year; - if (fields.Contains(MachineField.Manufacturer)) + if (machineFields.Contains(MachineField.Manufacturer)) machine.Manufacturer = repMachine.Manufacturer; - if (fields.Contains(MachineField.Publisher)) + if (machineFields.Contains(MachineField.Publisher)) machine.Publisher = repMachine.Publisher; - if (fields.Contains(MachineField.Category)) + if (machineFields.Contains(MachineField.Category)) machine.Category = repMachine.Category; - if (fields.Contains(MachineField.RomOf)) + if (machineFields.Contains(MachineField.RomOf)) machine.RomOf = repMachine.RomOf; - if (fields.Contains(MachineField.CloneOf)) + if (machineFields.Contains(MachineField.CloneOf)) machine.CloneOf = repMachine.CloneOf; - if (fields.Contains(MachineField.SampleOf)) + if (machineFields.Contains(MachineField.SampleOf)) machine.SampleOf = repMachine.SampleOf; - if (fields.Contains(MachineField.Type)) + if (machineFields.Contains(MachineField.Type)) machine.MachineType = repMachine.MachineType; #endregion #region AttractMode - if (fields.Contains(MachineField.Players)) + if (machineFields.Contains(MachineField.Players)) machine.Players = repMachine.Players; - if (fields.Contains(MachineField.Rotation)) + if (machineFields.Contains(MachineField.Rotation)) machine.Rotation = repMachine.Rotation; - if (fields.Contains(MachineField.Control)) + if (machineFields.Contains(MachineField.Control)) machine.Control = repMachine.Control; - if (fields.Contains(MachineField.Status)) + if (machineFields.Contains(MachineField.Status)) machine.Status = repMachine.Status; - if (fields.Contains(MachineField.DisplayCount)) + if (machineFields.Contains(MachineField.DisplayCount)) machine.DisplayCount = repMachine.DisplayCount; - if (fields.Contains(MachineField.DisplayType)) + if (machineFields.Contains(MachineField.DisplayType)) machine.DisplayType = repMachine.DisplayType; - if (fields.Contains(MachineField.Buttons)) + if (machineFields.Contains(MachineField.Buttons)) machine.Buttons = repMachine.Buttons; #endregion #region ListXML - if (fields.Contains(MachineField.SourceFile)) + if (machineFields.Contains(MachineField.SourceFile)) machine.SourceFile = repMachine.SourceFile; - if (fields.Contains(MachineField.Runnable)) + if (machineFields.Contains(MachineField.Runnable)) machine.Runnable = repMachine.Runnable; #endregion #region Logiqx - if (fields.Contains(MachineField.Board)) + if (machineFields.Contains(MachineField.Board)) machine.Board = repMachine.Board; - if (fields.Contains(MachineField.RebuildTo)) + if (machineFields.Contains(MachineField.RebuildTo)) machine.RebuildTo = repMachine.RebuildTo; #endregion #region Logiqx EmuArc - if (fields.Contains(MachineField.TitleID)) + if (machineFields.Contains(MachineField.TitleID)) machine.TitleID = repMachine.TitleID; - if (fields.Contains(MachineField.Developer)) + if (machineFields.Contains(MachineField.Developer)) machine.Developer = repMachine.Developer; - if (fields.Contains(MachineField.Genre)) + if (machineFields.Contains(MachineField.Genre)) machine.Genre = repMachine.Genre; - if (fields.Contains(MachineField.Subgenre)) + if (machineFields.Contains(MachineField.Subgenre)) machine.Subgenre = repMachine.Subgenre; - if (fields.Contains(MachineField.Ratings)) + if (machineFields.Contains(MachineField.Ratings)) machine.Ratings = repMachine.Ratings; - if (fields.Contains(MachineField.Score)) + if (machineFields.Contains(MachineField.Score)) machine.Score = repMachine.Score; - if (fields.Contains(MachineField.Enabled)) + if (machineFields.Contains(MachineField.Enabled)) machine.Enabled = repMachine.Enabled; - if (fields.Contains(MachineField.CRC)) + if (machineFields.Contains(MachineField.CRC)) machine.Crc = repMachine.Crc; - if (fields.Contains(MachineField.RelatedTo)) + if (machineFields.Contains(MachineField.RelatedTo)) machine.RelatedTo = repMachine.RelatedTo; #endregion #region OpenMSX - if (fields.Contains(MachineField.GenMSXID)) + if (machineFields.Contains(MachineField.GenMSXID)) machine.GenMSXID = repMachine.GenMSXID; - if (fields.Contains(MachineField.System)) + if (machineFields.Contains(MachineField.System)) machine.System = repMachine.System; - if (fields.Contains(MachineField.Country)) + if (machineFields.Contains(MachineField.Country)) machine.Country = repMachine.Country; #endregion #region SoftwareList - if (fields.Contains(MachineField.Supported)) + if (machineFields.Contains(MachineField.Supported)) machine.Supported = repMachine.Supported; #endregion diff --git a/SabreTools.DatItems/DataArea.cs b/SabreTools.DatItems/DataArea.cs index e117adfc..bd88f6a3 100644 --- a/SabreTools.DatItems/DataArea.cs +++ b/SabreTools.DatItems/DataArea.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -118,39 +117,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a DataArea to replace from, ignore specific fields - if (item.ItemType != ItemType.DataArea) - return; - - // Cast for easier access - DataArea newItem = item as DataArea; - - // Replace the fields - if (datItemFields.Contains(DatItemField.AreaName)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.AreaSize)) - Size = newItem.Size; - - if (datItemFields.Contains(DatItemField.AreaWidth)) - Width = newItem.Width; - - if (datItemFields.Contains(DatItemField.AreaEndianness)) - Endianness = newItem.Endianness; - } - - #endregion } } diff --git a/SabreTools.DatItems/Device.cs b/SabreTools.DatItems/Device.cs index 69d49eee..82e4f728 100644 --- a/SabreTools.DatItems/Device.cs +++ b/SabreTools.DatItems/Device.cs @@ -159,50 +159,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Device to replace from, ignore specific fields - if (item.ItemType != ItemType.Device) - return; - - // Cast for easier access - Device newItem = item as Device; - - // Replace the fields - if (datItemFields.Contains(DatItemField.DeviceType)) - DeviceType = newItem.DeviceType; - - if (datItemFields.Contains(DatItemField.Tag)) - Tag = newItem.Tag; - - if (datItemFields.Contains(DatItemField.FixedImage)) - FixedImage = newItem.FixedImage; - - if (datItemFields.Contains(DatItemField.Mandatory)) - Mandatory = newItem.Mandatory; - - if (datItemFields.Contains(DatItemField.Interface)) - Interface = newItem.Interface; - - // DatItem_Instance_* doesn't make sense here - // since not every instance under the other item - // can replace every instance under this item - - // DatItem_Extension_* doesn't make sense here - // since not every extension under the other item - // can replace every extension under this item - } - - #endregion } } diff --git a/SabreTools.DatItems/DeviceReference.cs b/SabreTools.DatItems/DeviceReference.cs index 0bc8dbbf..3606d924 100644 --- a/SabreTools.DatItems/DeviceReference.cs +++ b/SabreTools.DatItems/DeviceReference.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -81,30 +80,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a DeviceReference to replace from, ignore specific fields - if (item.ItemType != ItemType.DeviceReference) - return; - - // Cast for easier access - DeviceReference newItem = item as DeviceReference; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - } - - #endregion } } diff --git a/SabreTools.DatItems/DipSwitch.cs b/SabreTools.DatItems/DipSwitch.cs index c18a93b0..7a816dc2 100644 --- a/SabreTools.DatItems/DipSwitch.cs +++ b/SabreTools.DatItems/DipSwitch.cs @@ -195,60 +195,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a DipSwitch to replace from, ignore specific fields - if (item.ItemType != ItemType.DipSwitch) - return; - - // Cast for easier access - DipSwitch newItem = item as DipSwitch; - - // Replace the fields - - #region Common - - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Tag)) - Tag = newItem.Tag; - - if (datItemFields.Contains(DatItemField.Mask)) - Mask = newItem.Mask; - - // DatItem_Condition_* doesn't make sense here - // since not every condition under the other item - // can replace every condition under this item - - // DatItem_Location_* doesn't make sense here - // since not every location under the other item - // can replace every location under this item - - // DatItem_Setting_* doesn't make sense here - // since not every value under the other item - // can replace every value under this item - - #endregion - - #region SoftwareList - - if (PartSpecified && newItem.PartSpecified) - Part.ReplaceFields(newItem.Part, datItemFields, machineFields); - - #endregion - } - - #endregion } } diff --git a/SabreTools.DatItems/Disk.cs b/SabreTools.DatItems/Disk.cs index deb7d94a..cd6a02c9 100644 --- a/SabreTools.DatItems/Disk.cs +++ b/SabreTools.DatItems/Disk.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; @@ -402,72 +401,6 @@ namespace SabreTools.DatItems return key; } - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Disk to replace from, ignore specific fields - if (item.ItemType != ItemType.Disk) - return; - - // Cast for easier access - Disk newItem = item as Disk; - - // Replace the fields - - #region Common - - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.MD5)) - { - if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5)) - MD5 = newItem.MD5; - } - - if (datItemFields.Contains(DatItemField.SHA1)) - { - if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1)) - SHA1 = newItem.SHA1; - } - - if (datItemFields.Contains(DatItemField.Merge)) - MergeTag = newItem.MergeTag; - - if (datItemFields.Contains(DatItemField.Region)) - Region = newItem.Region; - - if (datItemFields.Contains(DatItemField.Index)) - Index = newItem.Index; - - if (datItemFields.Contains(DatItemField.Writable)) - Writable = newItem.Writable; - - if (datItemFields.Contains(DatItemField.Status)) - ItemStatus = newItem.ItemStatus; - - if (datItemFields.Contains(DatItemField.Optional)) - Optional = newItem.Optional; - - #endregion - - #region SoftwareList - - if (DiskAreaSpecified && newItem.DiskAreaSpecified) - DiskArea.ReplaceFields(newItem.DiskArea, datItemFields, machineFields); - - if (PartSpecified && newItem.PartSpecified) - Part.ReplaceFields(newItem.Part, datItemFields, machineFields); - - #endregion - } - #endregion } } diff --git a/SabreTools.DatItems/DiskArea.cs b/SabreTools.DatItems/DiskArea.cs index 7c89da3e..3c07ece8 100644 --- a/SabreTools.DatItems/DiskArea.cs +++ b/SabreTools.DatItems/DiskArea.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -82,30 +81,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a DiskArea to replace from, ignore specific fields - if (item.ItemType != ItemType.DiskArea) - return; - - // Cast for easier access - DiskArea newItem = item as DiskArea; - - // Replace the fields - if (datItemFields.Contains(DatItemField.AreaName)) - Name = newItem.Name; - } - - #endregion } } diff --git a/SabreTools.DatItems/Display.cs b/SabreTools.DatItems/Display.cs index 45241db4..78945cfc 100644 --- a/SabreTools.DatItems/Display.cs +++ b/SabreTools.DatItems/Display.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -228,69 +227,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Display to replace from, ignore specific fields - if (item.ItemType != ItemType.Display) - return; - - // Cast for easier access - Display newItem = item as Display; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Tag)) - Tag = newItem.Tag; - - if (datItemFields.Contains(DatItemField.DisplayType)) - DisplayType = newItem.DisplayType; - - if (datItemFields.Contains(DatItemField.Rotate)) - Rotate = newItem.Rotate; - - if (datItemFields.Contains(DatItemField.FlipX)) - FlipX = newItem.FlipX; - - if (datItemFields.Contains(DatItemField.Width)) - Width = newItem.Width; - - if (datItemFields.Contains(DatItemField.Height)) - Height = newItem.Height; - - if (datItemFields.Contains(DatItemField.Refresh)) - Refresh = newItem.Refresh; - - if (datItemFields.Contains(DatItemField.PixClock)) - PixClock = newItem.PixClock; - - if (datItemFields.Contains(DatItemField.HTotal)) - HTotal = newItem.HTotal; - - if (datItemFields.Contains(DatItemField.HBEnd)) - HBEnd = newItem.HBEnd; - - if (datItemFields.Contains(DatItemField.HBStart)) - HBStart = newItem.HBStart; - - if (datItemFields.Contains(DatItemField.VTotal)) - VTotal = newItem.VTotal; - - if (datItemFields.Contains(DatItemField.VBEnd)) - VBEnd = newItem.VBEnd; - - if (datItemFields.Contains(DatItemField.VBStart)) - VBStart = newItem.VBStart; - } - - #endregion } } diff --git a/SabreTools.DatItems/Driver.cs b/SabreTools.DatItems/Driver.cs index 6fa17404..1588258e 100644 --- a/SabreTools.DatItems/Driver.cs +++ b/SabreTools.DatItems/Driver.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -114,39 +113,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Driver to replace from, ignore specific fields - if (item.ItemType != ItemType.Driver) - return; - - // Cast for easier access - Driver newItem = item as Driver; - - // Replace the fields - if (datItemFields.Contains(DatItemField.SupportStatus)) - Status = newItem.Status; - - if (datItemFields.Contains(DatItemField.EmulationStatus)) - Emulation = newItem.Emulation; - - if (datItemFields.Contains(DatItemField.CocktailStatus)) - Cocktail = newItem.Cocktail; - - if (datItemFields.Contains(DatItemField.SaveStateStatus)) - SaveState = newItem.SaveState; - } - - #endregion } } diff --git a/SabreTools.DatItems/Extension.cs b/SabreTools.DatItems/Extension.cs index a6a538b2..09b29b6b 100644 --- a/SabreTools.DatItems/Extension.cs +++ b/SabreTools.DatItems/Extension.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -81,30 +80,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Extension to replace from, ignore specific fields - if (item.ItemType != ItemType.Extension) - return; - - // Cast for easier access - Extension newItem = item as Extension; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Extension_Name)) - Name = newItem.Name; - } - - #endregion } } diff --git a/SabreTools.DatItems/Feature.cs b/SabreTools.DatItems/Feature.cs index 096b8247..4184b7ae 100644 --- a/SabreTools.DatItems/Feature.cs +++ b/SabreTools.DatItems/Feature.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -99,36 +98,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Feature to replace from, ignore specific fields - if (item.ItemType != ItemType.Feature) - return; - - // Cast for easier access - Feature newItem = item as Feature; - - // Replace the fields - if (datItemFields.Contains(DatItemField.FeatureType)) - Type = newItem.Type; - - if (datItemFields.Contains(DatItemField.FeatureStatus)) - Status = newItem.Status; - - if (datItemFields.Contains(DatItemField.FeatureOverall)) - Overall = newItem.Overall; - } - - #endregion } } diff --git a/SabreTools.DatItems/Info.cs b/SabreTools.DatItems/Info.cs index 202d305c..d30ab650 100644 --- a/SabreTools.DatItems/Info.cs +++ b/SabreTools.DatItems/Info.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -89,33 +88,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Info to replace from, ignore specific fields - if (item.ItemType != ItemType.Info) - return; - - // Cast for easier access - Info newItem = item as Info; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Value)) - Value = newItem.Value; - } - - #endregion } } diff --git a/SabreTools.DatItems/Input.cs b/SabreTools.DatItems/Input.cs index 950c5c4f..456b7986 100644 --- a/SabreTools.DatItems/Input.cs +++ b/SabreTools.DatItems/Input.cs @@ -133,43 +133,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Input to replace from, ignore specific fields - if (item.ItemType != ItemType.Input) - return; - - // Cast for easier access - Input newItem = item as Input; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Service)) - Service = newItem.Service; - - if (datItemFields.Contains(DatItemField.Tilt)) - Tilt = newItem.Tilt; - - if (datItemFields.Contains(DatItemField.Players)) - Players = newItem.Players; - - if (datItemFields.Contains(DatItemField.Coins)) - Coins = newItem.Coins; - - // DatItem_Control_* doesn't make sense here - // since not every control under the other item - // can replace every control under this item - } - - #endregion } } diff --git a/SabreTools.DatItems/Instance.cs b/SabreTools.DatItems/Instance.cs index 4923b25f..994d81a5 100644 --- a/SabreTools.DatItems/Instance.cs +++ b/SabreTools.DatItems/Instance.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -89,33 +88,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Instance to replace from, ignore specific fields - if (item.ItemType != ItemType.Instance) - return; - - // Cast for easier access - Instance newItem = item as Instance; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Instance_Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Instance_BriefName)) - BriefName = newItem.BriefName; - } - - #endregion } } diff --git a/SabreTools.DatItems/Location.cs b/SabreTools.DatItems/Location.cs index b65f34eb..b7c609dc 100644 --- a/SabreTools.DatItems/Location.cs +++ b/SabreTools.DatItems/Location.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -105,36 +104,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Location to replace from, ignore specific fields - if (item.ItemType != ItemType.Location) - return; - - // Cast for easier access - Location newItem = item as Location; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Location_Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Location_Number)) - Number = newItem.Number; - - if (datItemFields.Contains(DatItemField.Location_Inverted)) - Inverted = newItem.Inverted; - } - - #endregion } } diff --git a/SabreTools.DatItems/Media.cs b/SabreTools.DatItems/Media.cs index 494c83a1..6e166cf9 100644 --- a/SabreTools.DatItems/Media.cs +++ b/SabreTools.DatItems/Media.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Text; +using System.Text; using System.Xml.Serialization; using SabreTools.Core; @@ -333,51 +332,6 @@ namespace SabreTools.DatItems return key; } - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Media to replace from, ignore specific fields - if (item.ItemType != ItemType.Media) - return; - - // Cast for easier access - Media newItem = item as Media; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.MD5)) - { - if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5)) - MD5 = newItem.MD5; - } - - if (datItemFields.Contains(DatItemField.SHA1)) - { - if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1)) - SHA1 = newItem.SHA1; - } - - if (datItemFields.Contains(DatItemField.SHA256)) - { - if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256)) - SHA256 = newItem.SHA256; - } - - if (datItemFields.Contains(DatItemField.SpamSum)) - { - if (string.IsNullOrEmpty(SpamSum) && !string.IsNullOrEmpty(newItem.SpamSum)) - SpamSum = newItem.SpamSum; - } - } - #endregion } } diff --git a/SabreTools.DatItems/Part.cs b/SabreTools.DatItems/Part.cs index 8392fb6b..fcb083ad 100644 --- a/SabreTools.DatItems/Part.cs +++ b/SabreTools.DatItems/Part.cs @@ -106,37 +106,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Part to replace from, ignore specific fields - if (item.ItemType != ItemType.Part) - return; - - // Cast for easier access - Part newItem = item as Part; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Part_Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Part_Interface)) - Interface = newItem.Interface; - - // DatItem_Part_Feature_* doesn't make sense here - // since not every part feature under the other item - // can replace every part feature under this item - } - - #endregion } } diff --git a/SabreTools.DatItems/PartFeature.cs b/SabreTools.DatItems/PartFeature.cs index 1b984ce6..56423e9b 100644 --- a/SabreTools.DatItems/PartFeature.cs +++ b/SabreTools.DatItems/PartFeature.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -89,33 +88,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a PartFeature to replace from, ignore specific fields - if (item.ItemType != ItemType.PartFeature) - return; - - // Cast for easier access - PartFeature newItem = item as PartFeature; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Part_Feature_Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Part_Feature_Value)) - Value = newItem.Value; - } - - #endregion } } diff --git a/SabreTools.DatItems/Port.cs b/SabreTools.DatItems/Port.cs index 4f297576..2266336f 100644 --- a/SabreTools.DatItems/Port.cs +++ b/SabreTools.DatItems/Port.cs @@ -94,34 +94,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Port to replace from, ignore specific fields - if (item.ItemType != ItemType.Port) - return; - - // Cast for easier access - Port newItem = item as Port; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Tag = newItem.Tag; - - // DatItem_Analog_* doesn't make sense here - // since not every analog under the other item - // can replace every analog under this item - } - - #endregion } } diff --git a/SabreTools.DatItems/RamOption.cs b/SabreTools.DatItems/RamOption.cs index c5a328ca..b0c264d2 100644 --- a/SabreTools.DatItems/RamOption.cs +++ b/SabreTools.DatItems/RamOption.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -100,36 +99,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a RamOption to replace from, ignore specific fields - if (item.ItemType != ItemType.RamOption) - return; - - // Cast for easier access - RamOption newItem = item as RamOption; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Default)) - Default = newItem.Default; - - if (datItemFields.Contains(DatItemField.Content)) - Content = newItem.Content; - } - - #endregion } } diff --git a/SabreTools.DatItems/Release.cs b/SabreTools.DatItems/Release.cs index 1a73e777..876a9f37 100644 --- a/SabreTools.DatItems/Release.cs +++ b/SabreTools.DatItems/Release.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -124,42 +123,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Release to replace from, ignore specific fields - if (item.ItemType != ItemType.Release) - return; - - // Cast for easier access - Release newItem = item as Release; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Region)) - Region = newItem.Region; - - if (datItemFields.Contains(DatItemField.Language)) - Language = newItem.Language; - - if (datItemFields.Contains(DatItemField.Date)) - Date = newItem.Date; - - if (datItemFields.Contains(DatItemField.Default)) - Default = newItem.Default; - } - - #endregion } } diff --git a/SabreTools.DatItems/Rom.cs b/SabreTools.DatItems/Rom.cs index 46f2e53a..e531e927 100644 --- a/SabreTools.DatItems/Rom.cs +++ b/SabreTools.DatItems/Rom.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Serialization; @@ -729,154 +728,6 @@ namespace SabreTools.DatItems return key; } - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Rom to replace from, ignore specific fields - if (item.ItemType != ItemType.Rom) - return; - - // Cast for easier access - Rom newItem = item as Rom; - - // Replace the fields - - #region Common - - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Bios)) - Bios = newItem.Bios; - - if (datItemFields.Contains(DatItemField.Size)) - Size = newItem.Size; - - if (datItemFields.Contains(DatItemField.CRC)) - { - if (string.IsNullOrEmpty(CRC) && !string.IsNullOrEmpty(newItem.CRC)) - CRC = newItem.CRC; - } - - if (datItemFields.Contains(DatItemField.MD5)) - { - if (string.IsNullOrEmpty(MD5) && !string.IsNullOrEmpty(newItem.MD5)) - MD5 = newItem.MD5; - } - -#if NET_FRAMEWORK - if (datItemFields.Contains(DatItemField.RIPEMD160)) - { - if (string.IsNullOrEmpty(RIPEMD160) && !string.IsNullOrEmpty(newItem.RIPEMD160)) - RIPEMD160 = newItem.RIPEMD160; - } -#endif - - if (datItemFields.Contains(DatItemField.SHA1)) - { - if (string.IsNullOrEmpty(SHA1) && !string.IsNullOrEmpty(newItem.SHA1)) - SHA1 = newItem.SHA1; - } - - if (datItemFields.Contains(DatItemField.SHA256)) - { - if (string.IsNullOrEmpty(SHA256) && !string.IsNullOrEmpty(newItem.SHA256)) - SHA256 = newItem.SHA256; - } - - if (datItemFields.Contains(DatItemField.SHA384)) - { - if (string.IsNullOrEmpty(SHA384) && !string.IsNullOrEmpty(newItem.SHA384)) - SHA384 = newItem.SHA384; - } - - if (datItemFields.Contains(DatItemField.SHA512)) - { - if (string.IsNullOrEmpty(SHA512) && !string.IsNullOrEmpty(newItem.SHA512)) - SHA512 = newItem.SHA512; - } - - if (datItemFields.Contains(DatItemField.SpamSum)) - { - if (string.IsNullOrEmpty(SpamSum) && !string.IsNullOrEmpty(newItem.SpamSum)) - SpamSum = newItem.SpamSum; - } - - if (datItemFields.Contains(DatItemField.Merge)) - MergeTag = newItem.MergeTag; - - if (datItemFields.Contains(DatItemField.Region)) - Region = newItem.Region; - - if (datItemFields.Contains(DatItemField.Offset)) - Offset = newItem.Offset; - - if (datItemFields.Contains(DatItemField.Date)) - Date = newItem.Date; - - if (datItemFields.Contains(DatItemField.Status)) - ItemStatus = newItem.ItemStatus; - - if (datItemFields.Contains(DatItemField.Optional)) - Optional = newItem.Optional; - - if (datItemFields.Contains(DatItemField.Inverted)) - Inverted = newItem.Inverted; - - #endregion - - #region AttractMode - - if (datItemFields.Contains(DatItemField.AltName)) - AltName = newItem.AltName; - - if (datItemFields.Contains(DatItemField.AltTitle)) - AltTitle = newItem.AltTitle; - - #endregion - - #region OpenMSX - - if (datItemFields.Contains(DatItemField.Original)) - Original = newItem.Original; - - if (datItemFields.Contains(DatItemField.OpenMSXSubType)) - OpenMSXSubType = newItem.OpenMSXSubType; - - if (datItemFields.Contains(DatItemField.OpenMSXType)) - OpenMSXType = newItem.OpenMSXType; - - if (datItemFields.Contains(DatItemField.Remark)) - Remark = newItem.Remark; - - if (datItemFields.Contains(DatItemField.Boot)) - Boot = newItem.Boot; - - #endregion - - #region SoftwareList - - if (datItemFields.Contains(DatItemField.LoadFlag)) - LoadFlag = newItem.LoadFlag; - - if (datItemFields.Contains(DatItemField.Value)) - Value = newItem.Value; - - if (DataAreaSpecified && newItem.DataAreaSpecified) - DataArea.ReplaceFields(newItem.DataArea, datItemFields, machineFields); - - if (PartSpecified && newItem.PartSpecified) - Part.ReplaceFields(newItem.Part, datItemFields, machineFields); - - #endregion - } - #endregion } } diff --git a/SabreTools.DatItems/Sample.cs b/SabreTools.DatItems/Sample.cs index 4f95acc5..44cbac77 100644 --- a/SabreTools.DatItems/Sample.cs +++ b/SabreTools.DatItems/Sample.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -81,30 +80,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Sample to replace from, ignore specific fields - if (item.ItemType != ItemType.Sample) - return; - - // Cast for easier access - Sample newItem = item as Sample; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - } - - #endregion } } diff --git a/SabreTools.DatItems/Setting.cs b/SabreTools.DatItems/Setting.cs index 0ff26c2f..203104e2 100644 --- a/SabreTools.DatItems/Setting.cs +++ b/SabreTools.DatItems/Setting.cs @@ -126,40 +126,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Setting to replace from, ignore specific fields - if (item.ItemType != ItemType.Setting) - return; - - // Cast for easier access - Setting newItem = item as Setting; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Setting_Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Setting_Value)) - Value = newItem.Value; - - if (datItemFields.Contains(DatItemField.Setting_Default)) - Default = newItem.Default; - - // DatItem_Condition_* doesn't make sense here - // since not every condition under the other item - // can replace every condition under this item - } - - #endregion } } diff --git a/SabreTools.DatItems/SharedFeature.cs b/SabreTools.DatItems/SharedFeature.cs index 505f5ed8..cbb4cb93 100644 --- a/SabreTools.DatItems/SharedFeature.cs +++ b/SabreTools.DatItems/SharedFeature.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -89,33 +88,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a SharedFeature to replace from, ignore specific fields - if (item.ItemType != ItemType.SharedFeature) - return; - - // Cast for easier access - SharedFeature newItem = item as SharedFeature; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.Value)) - Value = newItem.Value; - } - - #endregion } } diff --git a/SabreTools.DatItems/Slot.cs b/SabreTools.DatItems/Slot.cs index 7fffa8c3..315c44fc 100644 --- a/SabreTools.DatItems/Slot.cs +++ b/SabreTools.DatItems/Slot.cs @@ -105,34 +105,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Slot to replace from, ignore specific fields - if (item.ItemType != ItemType.Slot) - return; - - // Cast for easier access - Slot newItem = item as Slot; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - // DatItem_SlotOption_* doesn't make sense here - // since not every slot option under the other item - // can replace every slot option under this item - } - - #endregion } } diff --git a/SabreTools.DatItems/SlotOption.cs b/SabreTools.DatItems/SlotOption.cs index a953c243..81a73f60 100644 --- a/SabreTools.DatItems/SlotOption.cs +++ b/SabreTools.DatItems/SlotOption.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -102,36 +101,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a SlotOption to replace from, ignore specific fields - if (item.ItemType != ItemType.SlotOption) - return; - - // Cast for easier access - SlotOption newItem = item as SlotOption; - - // Replace the fields - if (datItemFields.Contains(DatItemField.SlotOption_Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.SlotOption_DeviceName)) - DeviceName = newItem.DeviceName; - - if (datItemFields.Contains(DatItemField.SlotOption_Default)) - Default = newItem.Default; - } - - #endregion } } diff --git a/SabreTools.DatItems/SoftwareList.cs b/SabreTools.DatItems/SoftwareList.cs index 0f993874..9bd9104d 100644 --- a/SabreTools.DatItems/SoftwareList.cs +++ b/SabreTools.DatItems/SoftwareList.cs @@ -1,9 +1,6 @@ -using System.Collections.Generic; -using System.Linq; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -106,36 +103,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a SoftwareList to replace from, ignore specific fields - if (item.ItemType != ItemType.SoftwareList) - return; - - // Cast for easier access - SoftwareList newItem = item as SoftwareList; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = newItem.Name; - - if (datItemFields.Contains(DatItemField.SoftwareListStatus)) - Status = newItem.Status; - - if (datItemFields.Contains(DatItemField.Filter)) - Filter = newItem.Filter; - } - - #endregion } } diff --git a/SabreTools.DatItems/Sound.cs b/SabreTools.DatItems/Sound.cs index 048a1fdb..98fbf7cd 100644 --- a/SabreTools.DatItems/Sound.cs +++ b/SabreTools.DatItems/Sound.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Xml.Serialization; +using System.Xml.Serialization; using SabreTools.Core; using Newtonsoft.Json; @@ -73,30 +72,5 @@ namespace SabreTools.DatItems } #endregion - - #region Sorting and Merging - - /// - public override void ReplaceFields( - DatItem item, - List datItemFields, - List machineFields) - { - // Replace common fields first - base.ReplaceFields(item, datItemFields, machineFields); - - // If we don't have a Sound to replace from, ignore specific fields - if (item.ItemType != ItemType.Sound) - return; - - // Cast for easier access - Sound newItem = item as Sound; - - // Replace the fields - if (datItemFields.Contains(DatItemField.Channels)) - Channels = newItem.Channels; - } - - #endregion } } diff --git a/SabreTools.DatTools/DatFileTool.cs b/SabreTools.DatTools/DatFileTool.cs index 7c2c8c52..b6fff246 100644 --- a/SabreTools.DatTools/DatFileTool.cs +++ b/SabreTools.DatTools/DatFileTool.cs @@ -60,7 +60,7 @@ namespace SabreTools.DatTools // Replace fields from the first duplicate, if we have one if (dupes.Count > 0) - newDatItem.ReplaceFields(dupes.First(), datItemFields, null); + DatItemTool.ReplaceFields(newDatItem, dupes.First(), datItemFields); newDatItems.Add(newDatItem); } diff --git a/SabreTools.DatTools/DatFromDir.cs b/SabreTools.DatTools/DatFromDir.cs index 3480e8a9..cbd2c497 100644 --- a/SabreTools.DatTools/DatFromDir.cs +++ b/SabreTools.DatTools/DatFromDir.cs @@ -434,7 +434,7 @@ namespace SabreTools.DatTools } // Set the item name back - DatItemTool.SetFields(datItem, new Dictionary { [DatItemField.Name] = itemName }); + datItem.SetName(itemName); } } } \ No newline at end of file