From f8b9dfa122e196dc9cc793afd5d979826784e1cc Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 14 Dec 2020 10:11:20 -0800 Subject: [PATCH] DatItems don't know about setting fields --- SabreTools.DatFiles/DatFile.cs | 8 +- SabreTools.DatFiles/Formats/ClrMamePro.cs | 2 +- SabreTools.DatFiles/Formats/SeparatedValue.cs | 2 +- SabreTools.DatItems/Adjuster.cs | 27 - SabreTools.DatItems/Analog.cs | 18 - SabreTools.DatItems/Archive.cs | 14 - SabreTools.DatItems/BiosSet.cs | 21 - SabreTools.DatItems/Chip.cs | 27 +- SabreTools.DatItems/Condition.cs | 59 -- SabreTools.DatItems/Configuration.cs | 44 - SabreTools.DatItems/Control.cs | 55 +- SabreTools.DatItems/DatItem.cs | 18 +- .../DatItemTool.cs | 907 +++++++++++++++++- SabreTools.DatItems/DataArea.cs | 27 +- SabreTools.DatItems/Device.cs | 47 - SabreTools.DatItems/DeviceReference.cs | 14 - SabreTools.DatItems/DipSwitch.cs | 59 -- SabreTools.DatItems/Disk.cs | 50 - SabreTools.DatItems/DiskArea.cs | 17 +- SabreTools.DatItems/Display.cs | 64 +- SabreTools.DatItems/Driver.cs | 28 - SabreTools.DatItems/Extension.cs | 14 - SabreTools.DatItems/Feature.cs | 25 - SabreTools.DatItems/Info.cs | 17 - SabreTools.DatItems/Input.cs | 39 +- SabreTools.DatItems/Instance.cs | 17 - SabreTools.DatItems/Location.cs | 21 - SabreTools.DatItems/Media.cs | 26 - SabreTools.DatItems/Part.cs | 29 +- SabreTools.DatItems/PartFeature.cs | 17 - SabreTools.DatItems/Port.cs | 26 - SabreTools.DatItems/RamOption.cs | 21 - SabreTools.DatItems/Release.cs | 27 - SabreTools.DatItems/Rom.cs | 122 --- SabreTools.DatItems/Sample.cs | 14 - SabreTools.DatItems/Setting.cs | 29 - SabreTools.DatItems/SharedFeature.cs | 17 - SabreTools.DatItems/Slot.cs | 22 - SabreTools.DatItems/SlotOption.cs | 21 - SabreTools.DatItems/SoftwareList.cs | 19 - SabreTools.DatItems/Sound.cs | 22 +- SabreTools.DatTools/DatFromDir.cs | 2 +- SabreTools.DatTools/Modification.cs | 4 +- SabreTools.DatTools/Rebuilder.cs | 2 +- 44 files changed, 923 insertions(+), 1138 deletions(-) rename {SabreTools.DatTools => SabreTools.DatItems}/DatItemTool.cs (55%) diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index 39138b63..8d5d5d8f 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -459,7 +459,7 @@ namespace SabreTools.DatFiles if (!string.IsNullOrWhiteSpace(disk.SHA1)) { name = Utilities.GetDepotPath(disk.SHA1, Header.OutputDepot.Depth).Replace('\\', '/'); - item.SetFields(new Dictionary { [DatItemField.Name] = $"{pre}{name}{post}" }, null); + item.SetName($"{pre}{name}{post}"); } } else if (item.ItemType == ItemType.Media) @@ -470,7 +470,7 @@ namespace SabreTools.DatFiles if (!string.IsNullOrWhiteSpace(media.SHA1)) { name = Utilities.GetDepotPath(media.SHA1, Header.OutputDepot.Depth).Replace('\\', '/'); - item.SetFields(new Dictionary { [DatItemField.Name] = $"{pre}{name}{post}" }, null); + item.SetName($"{pre}{name}{post}"); } } else if (item.ItemType == ItemType.Rom) @@ -481,7 +481,7 @@ namespace SabreTools.DatFiles if (!string.IsNullOrWhiteSpace(rom.SHA1)) { name = Utilities.GetDepotPath(rom.SHA1, Header.OutputDepot.Depth).Replace('\\', '/'); - item.SetFields(new Dictionary { [DatItemField.Name] = $"{pre}{name}{post}" }, null); + item.SetName($"{pre}{name}{post}"); } } @@ -505,7 +505,7 @@ namespace SabreTools.DatFiles name = Path.Combine(item.Machine.Name, name); // Now assign back the item name - item.SetFields(new Dictionary { [DatItemField.Name] = pre + name + post }, null); + item.SetName($"{pre}{name}{post}"); // Restore all relevant values if (forceRemoveQuotes) diff --git a/SabreTools.DatFiles/Formats/ClrMamePro.cs b/SabreTools.DatFiles/Formats/ClrMamePro.cs index a96040da..b25b5465 100644 --- a/SabreTools.DatFiles/Formats/ClrMamePro.cs +++ b/SabreTools.DatFiles/Formats/ClrMamePro.cs @@ -308,7 +308,7 @@ namespace SabreTools.DatFiles.Formats // Regular attributes case "name": - item.SetFields(new Dictionary { [DatItemField.Name] = attrVal }, null); + item.SetName(attrVal); break; case "size": diff --git a/SabreTools.DatFiles/Formats/SeparatedValue.cs b/SabreTools.DatFiles/Formats/SeparatedValue.cs index fdbf6134..7be86b53 100644 --- a/SabreTools.DatFiles/Formats/SeparatedValue.cs +++ b/SabreTools.DatFiles/Formats/SeparatedValue.cs @@ -105,7 +105,7 @@ namespace SabreTools.DatFiles.Formats if (datItemMappings.ContainsKey(DatItemField.Type)) { DatItem datItem = DatItem.Create(datItemMappings[DatItemField.Type].AsItemType()); - datItem.SetFields(datItemMappings, machineMappings); + DatItemTool.SetFields(datItem, datItemMappings, machineMappings); datItem.Source = new Source(indexId, filename); ParseAddHelper(datItem); } diff --git a/SabreTools.DatItems/Adjuster.cs b/SabreTools.DatItems/Adjuster.cs index 69e37f8b..6ce07171 100644 --- a/SabreTools.DatItems/Adjuster.cs +++ b/SabreTools.DatItems/Adjuster.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -59,31 +57,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Adjuster-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Default)) - Default = datItemMappings[DatItemField.Default].AsYesNo(); - - // Field.DatItem_Conditions does not apply here - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - condition.SetFields(datItemMappings, machineMappings, true); - } - } - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Analog.cs b/SabreTools.DatItems/Analog.cs index 879d9a00..2e472466 100644 --- a/SabreTools.DatItems/Analog.cs +++ b/SabreTools.DatItems/Analog.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -24,23 +23,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Analog-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Analog_Mask)) - Mask = datItemMappings[DatItemField.Analog_Mask]; - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatItems/Archive.cs b/SabreTools.DatItems/Archive.cs index 119233a5..a2e4b5e4 100644 --- a/SabreTools.DatItems/Archive.cs +++ b/SabreTools.DatItems/Archive.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -38,19 +37,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Archive-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/BiosSet.cs b/SabreTools.DatItems/BiosSet.cs index 7574fa55..552c83ec 100644 --- a/SabreTools.DatItems/BiosSet.cs +++ b/SabreTools.DatItems/BiosSet.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -56,25 +54,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle BiosSet-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Description)) - Description = datItemMappings[DatItemField.Description]; - - if (datItemMappings.Keys.Contains(DatItemField.Default)) - Default = datItemMappings[DatItemField.Default].AsYesNo(); - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Chip.cs b/SabreTools.DatItems/Chip.cs index cd746b00..a3aaafec 100644 --- a/SabreTools.DatItems/Chip.cs +++ b/SabreTools.DatItems/Chip.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -69,28 +66,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Chip-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Tag)) - Tag = datItemMappings[DatItemField.Tag]; - - if (datItemMappings.Keys.Contains(DatItemField.ChipType)) - ChipType = datItemMappings[DatItemField.ChipType].AsChipType(); - - if (datItemMappings.Keys.Contains(DatItemField.Clock)) - Clock = Utilities.CleanLong(datItemMappings[DatItemField.Clock]); - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Condition.cs b/SabreTools.DatItems/Condition.cs index d04b9306..1085f1f6 100644 --- a/SabreTools.DatItems/Condition.cs +++ b/SabreTools.DatItems/Condition.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -51,63 +49,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - SetFields(datItemMappings, machineMappings, false); - } - - /// - /// Set fields with given values - /// - /// DatItem mappings dictionary - /// Machine mappings dictionary - /// True if this is a subitem, false otherwise - public void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings, - bool sub) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Condition-specific fields - if (sub) - { - if (datItemMappings.Keys.Contains(DatItemField.Condition_Tag)) - Tag = datItemMappings[DatItemField.Condition_Tag]; - - if (datItemMappings.Keys.Contains(DatItemField.Condition_Mask)) - Mask = datItemMappings[DatItemField.Condition_Mask]; - - if (datItemMappings.Keys.Contains(DatItemField.Condition_Relation)) - Relation = datItemMappings[DatItemField.Condition_Relation].AsRelation(); - - if (datItemMappings.Keys.Contains(DatItemField.Condition_Value)) - Value = datItemMappings[DatItemField.Condition_Value]; - } - else - { - if (datItemMappings.Keys.Contains(DatItemField.Tag)) - Tag = datItemMappings[DatItemField.Tag]; - - if (datItemMappings.Keys.Contains(DatItemField.Mask)) - Mask = datItemMappings[DatItemField.Mask]; - - if (datItemMappings.Keys.Contains(DatItemField.Relation)) - Relation = datItemMappings[DatItemField.Relation].AsRelation(); - - if (datItemMappings.Keys.Contains(DatItemField.Value)) - Value = datItemMappings[DatItemField.Value]; - } - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatItems/Configuration.cs b/SabreTools.DatItems/Configuration.cs index 30b9de7d..7b149003 100644 --- a/SabreTools.DatItems/Configuration.cs +++ b/SabreTools.DatItems/Configuration.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -82,49 +81,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Configuration-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Tag)) - Tag = datItemMappings[DatItemField.Tag]; - - if (datItemMappings.Keys.Contains(DatItemField.Mask)) - Mask = datItemMappings[DatItemField.Mask]; - - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - condition.SetFields(datItemMappings, machineMappings, true); - } - } - - if (LocationsSpecified) - { - foreach (Location location in Locations) - { - location.SetFields(datItemMappings, machineMappings); - } - } - - if (SettingsSpecified) - { - foreach (Setting setting in Settings) - { - setting.SetFields(datItemMappings, machineMappings); - } - } - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Control.cs b/SabreTools.DatItems/Control.cs index 1346fa35..cb149e3b 100644 --- a/SabreTools.DatItems/Control.cs +++ b/SabreTools.DatItems/Control.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -132,56 +129,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Control-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Control_Type)) - ControlType = datItemMappings[DatItemField.Control_Type].AsControlType(); - - if (datItemMappings.Keys.Contains(DatItemField.Control_Player)) - Player = Utilities.CleanLong(datItemMappings[DatItemField.Control_Player]); - - if (datItemMappings.Keys.Contains(DatItemField.Control_Buttons)) - Buttons = Utilities.CleanLong(datItemMappings[DatItemField.Control_Buttons]); - - if (datItemMappings.Keys.Contains(DatItemField.Control_RequiredButtons)) - RequiredButtons = Utilities.CleanLong(datItemMappings[DatItemField.Control_RequiredButtons]); - - if (datItemMappings.Keys.Contains(DatItemField.Control_Minimum)) - Minimum = Utilities.CleanLong(datItemMappings[DatItemField.Control_Minimum]); - - if (datItemMappings.Keys.Contains(DatItemField.Control_Maximum)) - Maximum = Utilities.CleanLong(datItemMappings[DatItemField.Control_Maximum]); - - if (datItemMappings.Keys.Contains(DatItemField.Control_Sensitivity)) - Sensitivity = Utilities.CleanLong(datItemMappings[DatItemField.Control_Sensitivity]); - - if (datItemMappings.Keys.Contains(DatItemField.Control_KeyDelta)) - KeyDelta = Utilities.CleanLong(datItemMappings[DatItemField.Control_KeyDelta]); - - if (datItemMappings.Keys.Contains(DatItemField.Control_Reverse)) - Reverse = datItemMappings[DatItemField.Control_Reverse].AsYesNo(); - - if (datItemMappings.Keys.Contains(DatItemField.Control_Ways)) - Ways = datItemMappings[DatItemField.Control_Ways]; - - if (datItemMappings.Keys.Contains(DatItemField.Control_Ways2)) - Ways2 = datItemMappings[DatItemField.Control_Ways2]; - - if (datItemMappings.Keys.Contains(DatItemField.Control_Ways3)) - Ways3 = datItemMappings[DatItemField.Control_Ways3]; - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs index d85cc146..99710956 100644 --- a/SabreTools.DatItems/DatItem.cs +++ b/SabreTools.DatItems/DatItem.cs @@ -142,18 +142,6 @@ namespace SabreTools.DatItems { } - /// - /// Set fields with given values - /// - /// DatItem mappings dictionary - /// Machine mappings dictionary - /// TODO: Fix case where datItemMappings is null - public virtual void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - } - #endregion #region Constructors @@ -774,14 +762,14 @@ namespace SabreTools.DatItems { saveditem.Source = file.Source.Clone() as Source; saveditem.CopyMachineInformation(file); - saveditem.SetFields(new Dictionary { [DatItemField.Name] = file.GetName() }, null); + saveditem.SetName(file.GetName()); } // If the current machine is a child of the new machine, use the new machine instead if (saveditem.Machine.CloneOf == file.Machine.Name || saveditem.Machine.RomOf == file.Machine.Name) { saveditem.CopyMachineInformation(file); - saveditem.SetFields(new Dictionary { [DatItemField.Name] = file.GetName() }, null); + saveditem.SetName(file.GetName()); } break; @@ -877,7 +865,7 @@ namespace SabreTools.DatItems } // Set the item name back to the datItem - datItem.SetFields(new Dictionary { [DatItemField.Name] = datItemName }, null); + datItem.SetName(datItemName); output.Add(datItem); } diff --git a/SabreTools.DatTools/DatItemTool.cs b/SabreTools.DatItems/DatItemTool.cs similarity index 55% rename from SabreTools.DatTools/DatItemTool.cs rename to SabreTools.DatItems/DatItemTool.cs index 87a08cfc..accfc4ce 100644 --- a/SabreTools.DatTools/DatItemTool.cs +++ b/SabreTools.DatItems/DatItemTool.cs @@ -1,12 +1,12 @@ +using System; using System.Collections.Generic; using System.IO; using System.Linq; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.DatItems; -namespace SabreTools.DatTools +namespace SabreTools.DatItems { /// /// Manipulate DatItems @@ -157,7 +157,6 @@ namespace SabreTools.DatTools else if (datItem is Configuration configuration) { - // Remove the fields if (datItemFields.Contains(DatItemField.Name)) configuration.Name = null; @@ -1210,10 +1209,908 @@ namespace SabreTools.DatTools /// Set fields with given values /// /// DatItem to set fields on - /// Mappings dictionary - public static void SetFields(DatItem datItem, Dictionary mappings) + /// DatItem mappings dictionary + /// Machine mappings dictionary + /// True if this is a subitem, false otherwise + /// TODO: Extract out setting name to common + public static void SetFields( + DatItem datItem, + Dictionary datItemMappings, + Dictionary machineMappings, + bool sub = false) { + if (datItem == null) + return; + #region Common + + if (machineMappings != null && datItem.Machine != null) + SetFields(datItem.Machine, machineMappings); + + if (datItemMappings == null) + return; + + #endregion + + #region Adjuster + + if (datItem is Adjuster adjuster) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + adjuster.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Default)) + adjuster.Default = datItemMappings[DatItemField.Default].AsYesNo(); + + // Field.DatItem_Conditions does not apply here + if (adjuster.ConditionsSpecified) + { + foreach (Condition subCondition in adjuster.Conditions) + { + SetFields(subCondition, datItemMappings, machineMappings, true); + } + } + } + + #endregion + + #region Analog + + else if (datItem is Analog analog) + { + if (datItemMappings.Keys.Contains(DatItemField.Analog_Mask)) + analog.Mask = datItemMappings[DatItemField.Analog_Mask]; + } + + #endregion + + #region Archive + + else if (datItem is Archive archive) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + archive.Name = datItemMappings[DatItemField.Name]; + } + + #endregion + + #region BiosSet + + else if (datItem is BiosSet biosSet) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + biosSet.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Description)) + biosSet.Description = datItemMappings[DatItemField.Description]; + + if (datItemMappings.Keys.Contains(DatItemField.Default)) + biosSet.Default = datItemMappings[DatItemField.Default].AsYesNo(); + } + + #endregion + + #region Chip + + else if (datItem is Chip chip) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + chip.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Tag)) + chip.Tag = datItemMappings[DatItemField.Tag]; + + if (datItemMappings.Keys.Contains(DatItemField.ChipType)) + chip.ChipType = datItemMappings[DatItemField.ChipType].AsChipType(); + + if (datItemMappings.Keys.Contains(DatItemField.Clock)) + chip.Clock = Utilities.CleanLong(datItemMappings[DatItemField.Clock]); + } + + #endregion + + #region Condition + + else if (datItem is Condition condition) + { + if (sub) + { + if (datItemMappings.Keys.Contains(DatItemField.Condition_Tag)) + condition.Tag = datItemMappings[DatItemField.Condition_Tag]; + + if (datItemMappings.Keys.Contains(DatItemField.Condition_Mask)) + condition.Mask = datItemMappings[DatItemField.Condition_Mask]; + + if (datItemMappings.Keys.Contains(DatItemField.Condition_Relation)) + condition.Relation = datItemMappings[DatItemField.Condition_Relation].AsRelation(); + + if (datItemMappings.Keys.Contains(DatItemField.Condition_Value)) + condition.Value = datItemMappings[DatItemField.Condition_Value]; + } + else + { + if (datItemMappings.Keys.Contains(DatItemField.Tag)) + condition.Tag = datItemMappings[DatItemField.Tag]; + + if (datItemMappings.Keys.Contains(DatItemField.Mask)) + condition.Mask = datItemMappings[DatItemField.Mask]; + + if (datItemMappings.Keys.Contains(DatItemField.Relation)) + condition.Relation = datItemMappings[DatItemField.Relation].AsRelation(); + + if (datItemMappings.Keys.Contains(DatItemField.Value)) + condition.Value = datItemMappings[DatItemField.Value]; + } + } + + #endregion + + #region Configuration + + else if (datItem is Configuration configuration) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + configuration.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Tag)) + configuration.Tag = datItemMappings[DatItemField.Tag]; + + if (datItemMappings.Keys.Contains(DatItemField.Mask)) + configuration.Mask = datItemMappings[DatItemField.Mask]; + + if (configuration.ConditionsSpecified) + { + foreach (Condition subCondition in configuration.Conditions) + { + SetFields(subCondition, datItemMappings, machineMappings, true); + } + } + + if (configuration.LocationsSpecified) + { + foreach (Location subLocation in configuration.Locations) + { + SetFields(subLocation, datItemMappings, machineMappings); + } + } + + if (configuration.SettingsSpecified) + { + foreach (Setting subSetting in configuration.Settings) + { + SetFields(subSetting, datItemMappings, machineMappings); + } + } + } + + #endregion + + #region Control + + else if (datItem is Control control) + { + if (datItemMappings.Keys.Contains(DatItemField.Control_Type)) + control.ControlType = datItemMappings[DatItemField.Control_Type].AsControlType(); + + if (datItemMappings.Keys.Contains(DatItemField.Control_Player)) + control.Player = Utilities.CleanLong(datItemMappings[DatItemField.Control_Player]); + + if (datItemMappings.Keys.Contains(DatItemField.Control_Buttons)) + control.Buttons = Utilities.CleanLong(datItemMappings[DatItemField.Control_Buttons]); + + if (datItemMappings.Keys.Contains(DatItemField.Control_RequiredButtons)) + control.RequiredButtons = Utilities.CleanLong(datItemMappings[DatItemField.Control_RequiredButtons]); + + if (datItemMappings.Keys.Contains(DatItemField.Control_Minimum)) + control.Minimum = Utilities.CleanLong(datItemMappings[DatItemField.Control_Minimum]); + + if (datItemMappings.Keys.Contains(DatItemField.Control_Maximum)) + control.Maximum = Utilities.CleanLong(datItemMappings[DatItemField.Control_Maximum]); + + if (datItemMappings.Keys.Contains(DatItemField.Control_Sensitivity)) + control.Sensitivity = Utilities.CleanLong(datItemMappings[DatItemField.Control_Sensitivity]); + + if (datItemMappings.Keys.Contains(DatItemField.Control_KeyDelta)) + control.KeyDelta = Utilities.CleanLong(datItemMappings[DatItemField.Control_KeyDelta]); + + if (datItemMappings.Keys.Contains(DatItemField.Control_Reverse)) + control.Reverse = datItemMappings[DatItemField.Control_Reverse].AsYesNo(); + + if (datItemMappings.Keys.Contains(DatItemField.Control_Ways)) + control.Ways = datItemMappings[DatItemField.Control_Ways]; + + if (datItemMappings.Keys.Contains(DatItemField.Control_Ways2)) + control.Ways2 = datItemMappings[DatItemField.Control_Ways2]; + + if (datItemMappings.Keys.Contains(DatItemField.Control_Ways3)) + control.Ways3 = datItemMappings[DatItemField.Control_Ways3]; + } + + #endregion + + #region DataArea + + else if (datItem is DataArea dataArea) + { + if (datItemMappings.Keys.Contains(DatItemField.AreaName)) + dataArea.Name = datItemMappings[DatItemField.AreaName]; + + if (datItemMappings.Keys.Contains(DatItemField.AreaSize)) + dataArea.Size = Utilities.CleanLong(datItemMappings[DatItemField.AreaSize]); + + if (datItemMappings.Keys.Contains(DatItemField.AreaWidth)) + dataArea.Width = Utilities.CleanLong(datItemMappings[DatItemField.AreaWidth]); + + if (datItemMappings.Keys.Contains(DatItemField.AreaEndianness)) + dataArea.Endianness = datItemMappings[DatItemField.AreaEndianness].AsEndianness(); + } + + #endregion + + #region Device + + else if (datItem is Device device) + { + if (datItemMappings.Keys.Contains(DatItemField.DeviceType)) + device.DeviceType = datItemMappings[DatItemField.DeviceType].AsDeviceType(); + + if (datItemMappings.Keys.Contains(DatItemField.Tag)) + device.Tag = datItemMappings[DatItemField.Tag]; + + if (datItemMappings.Keys.Contains(DatItemField.FixedImage)) + device.FixedImage = datItemMappings[DatItemField.FixedImage]; + + if (datItemMappings.Keys.Contains(DatItemField.Mandatory)) + device.Mandatory = Utilities.CleanLong(datItemMappings[DatItemField.Mandatory]); + + if (datItemMappings.Keys.Contains(DatItemField.Interface)) + device.Interface = datItemMappings[DatItemField.Interface]; + + if (device.InstancesSpecified) + { + foreach (Instance subInstance in device.Instances) + { + SetFields(subInstance, datItemMappings, machineMappings); + } + } + + if (device.ExtensionsSpecified) + { + foreach (Extension subExtension in device.Extensions) + { + SetFields(subExtension, datItemMappings, machineMappings); + } + } + } + + #endregion + + #region DeviceReference + + else if (datItem is DeviceReference deviceReference) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + deviceReference.Name = datItemMappings[DatItemField.Name]; + } + + #endregion + + #region DipSwitch + + else if (datItem is DipSwitch dipSwitch) + { + #region Common + + if (datItemMappings.Keys.Contains(DatItemField.Name)) + dipSwitch.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Tag)) + dipSwitch.Tag = datItemMappings[DatItemField.Tag]; + + if (datItemMappings.Keys.Contains(DatItemField.Mask)) + dipSwitch.Mask = datItemMappings[DatItemField.Mask]; + + if (dipSwitch.ConditionsSpecified) + { + foreach (Condition subCondition in dipSwitch.Conditions) + { + SetFields(subCondition, datItemMappings, machineMappings, true); + } + } + + if (dipSwitch.LocationsSpecified) + { + foreach (Location subLocation in dipSwitch.Locations) + { + SetFields(subLocation, datItemMappings, machineMappings); + } + } + + if (dipSwitch.ValuesSpecified) + { + foreach (Setting subValue in dipSwitch.Values) + { + SetFields(subValue, datItemMappings, machineMappings); + } + } + + #endregion + + #region SoftwareList + + // Handle Part-specific fields + if (dipSwitch.Part == null) + dipSwitch.Part = new Part(); + + SetFields(dipSwitch.Part, datItemMappings, machineMappings); + + #endregion + } + + #endregion + + #region Disk + + else if (datItem is Disk disk) + { + #region Common + + if (datItemMappings.Keys.Contains(DatItemField.Name)) + disk.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.MD5)) + disk.MD5 = datItemMappings[DatItemField.MD5]; + + if (datItemMappings.Keys.Contains(DatItemField.SHA1)) + disk.SHA1 = datItemMappings[DatItemField.SHA1]; + + if (datItemMappings.Keys.Contains(DatItemField.Merge)) + disk.MergeTag = datItemMappings[DatItemField.Merge]; + + if (datItemMappings.Keys.Contains(DatItemField.Region)) + disk.Region = datItemMappings[DatItemField.Region]; + + if (datItemMappings.Keys.Contains(DatItemField.Index)) + disk.Index = datItemMappings[DatItemField.Index]; + + if (datItemMappings.Keys.Contains(DatItemField.Writable)) + disk.Writable = datItemMappings[DatItemField.Writable].AsYesNo(); + + if (datItemMappings.Keys.Contains(DatItemField.Status)) + disk.ItemStatus = datItemMappings[DatItemField.Status].AsItemStatus(); + + if (datItemMappings.Keys.Contains(DatItemField.Optional)) + disk.Optional = datItemMappings[DatItemField.Optional].AsYesNo(); + + #endregion + + #region SoftwareList + + if (disk.DiskArea == null) + disk.DiskArea = new DiskArea(); + + SetFields(disk.DiskArea, datItemMappings, machineMappings); + + if (disk.Part == null) + disk.Part = new Part(); + + SetFields(disk.Part, datItemMappings, machineMappings); + + #endregion + } + + #endregion + + #region DiskArea + + else if (datItem is DiskArea diskArea) + { + if (datItemMappings.Keys.Contains(DatItemField.AreaName)) + diskArea.Name = datItemMappings[DatItemField.AreaName]; + } + + #endregion + + #region Display + + else if (datItem is Display display) + { + if (datItemMappings.Keys.Contains(DatItemField.Tag)) + display.Tag = datItemMappings[DatItemField.Tag]; + + if (datItemMappings.Keys.Contains(DatItemField.DisplayType)) + display.DisplayType = datItemMappings[DatItemField.DisplayType].AsDisplayType(); + + if (datItemMappings.Keys.Contains(DatItemField.Rotate)) + display.Rotate = Utilities.CleanLong(datItemMappings[DatItemField.Rotate]); + + if (datItemMappings.Keys.Contains(DatItemField.FlipX)) + display.FlipX = datItemMappings[DatItemField.FlipX].AsYesNo(); + + if (datItemMappings.Keys.Contains(DatItemField.Width)) + display.Width = Utilities.CleanLong(datItemMappings[DatItemField.Width]); + + if (datItemMappings.Keys.Contains(DatItemField.Height)) + display.Height = Utilities.CleanLong(datItemMappings[DatItemField.Height]); + + if (datItemMappings.Keys.Contains(DatItemField.Refresh)) + { + if (Double.TryParse(datItemMappings[DatItemField.Refresh], out double refresh)) + display.Refresh = refresh; + } + + if (datItemMappings.Keys.Contains(DatItemField.PixClock)) + display.PixClock = Utilities.CleanLong(datItemMappings[DatItemField.PixClock]); + + if (datItemMappings.Keys.Contains(DatItemField.HTotal)) + display.HTotal = Utilities.CleanLong(datItemMappings[DatItemField.HTotal]); + + if (datItemMappings.Keys.Contains(DatItemField.HBEnd)) + display.HBEnd = Utilities.CleanLong(datItemMappings[DatItemField.HBEnd]); + + if (datItemMappings.Keys.Contains(DatItemField.HBStart)) + display.HBStart = Utilities.CleanLong(datItemMappings[DatItemField.HBStart]); + + if (datItemMappings.Keys.Contains(DatItemField.VTotal)) + display.VTotal = Utilities.CleanLong(datItemMappings[DatItemField.VTotal]); + + if (datItemMappings.Keys.Contains(DatItemField.VBEnd)) + display.VBEnd = Utilities.CleanLong(datItemMappings[DatItemField.VBEnd]); + + if (datItemMappings.Keys.Contains(DatItemField.VBStart)) + display.VBStart = Utilities.CleanLong(datItemMappings[DatItemField.VBStart]); + } + + #endregion + + #region Driver + + else if (datItem is Driver driver) + { + if (datItemMappings.Keys.Contains(DatItemField.SupportStatus)) + driver.Status = datItemMappings[DatItemField.SupportStatus].AsSupportStatus(); + + if (datItemMappings.Keys.Contains(DatItemField.EmulationStatus)) + driver.Emulation = datItemMappings[DatItemField.EmulationStatus].AsSupportStatus(); + + if (datItemMappings.Keys.Contains(DatItemField.CocktailStatus)) + driver.Cocktail = datItemMappings[DatItemField.CocktailStatus].AsSupportStatus(); + + if (datItemMappings.Keys.Contains(DatItemField.SaveStateStatus)) + driver.SaveState = datItemMappings[DatItemField.SaveStateStatus].AsSupported(); + } + + #endregion + + #region Extension + + else if (datItem is Extension extension) + { + if (datItemMappings.Keys.Contains(DatItemField.Extension_Name)) + extension.Name = datItemMappings[DatItemField.Extension_Name]; + } + + #endregion + + #region Feature + + else if (datItem is Feature feature) + { + if (datItemMappings.Keys.Contains(DatItemField.FeatureType)) + feature.Type = datItemMappings[DatItemField.FeatureType].AsFeatureType(); + + if (datItemMappings.Keys.Contains(DatItemField.FeatureStatus)) + feature.Status = datItemMappings[DatItemField.FeatureStatus].AsFeatureStatus(); + + if (datItemMappings.Keys.Contains(DatItemField.FeatureOverall)) + feature.Overall = datItemMappings[DatItemField.FeatureOverall].AsFeatureStatus(); + } + + #endregion + + #region Info + + else if (datItem is Info info) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + info.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Value)) + info.Value = datItemMappings[DatItemField.Value]; + } + + #endregion + + #region Input + + else if (datItem is Input input) + { + if (datItemMappings.Keys.Contains(DatItemField.Service)) + input.Service = datItemMappings[DatItemField.Service].AsYesNo(); + + if (datItemMappings.Keys.Contains(DatItemField.Tilt)) + input.Tilt = datItemMappings[DatItemField.Tilt].AsYesNo(); + + if (datItemMappings.Keys.Contains(DatItemField.Players)) + input.Players = Utilities.CleanLong(datItemMappings[DatItemField.Players]); + + if (datItemMappings.Keys.Contains(DatItemField.Coins)) + input.Coins = Utilities.CleanLong(datItemMappings[DatItemField.Coins]); + + if (input.ControlsSpecified) + { + foreach (Control subControl in input.Controls) + { + SetFields(subControl, datItemMappings, machineMappings); + } + } + } + + #endregion + + #region Instance + + else if (datItem is Instance instance) + { + if (datItemMappings.Keys.Contains(DatItemField.Instance_Name)) + instance.Name = datItemMappings[DatItemField.Instance_Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Instance_BriefName)) + instance.BriefName = datItemMappings[DatItemField.Instance_BriefName]; + } + + #endregion + + #region Location + + else if (datItem is Location location) + { + if (datItemMappings.Keys.Contains(DatItemField.Location_Name)) + location.Name = datItemMappings[DatItemField.Location_Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Location_Number)) + location.Number = Utilities.CleanLong(datItemMappings[DatItemField.Location_Number]); + + if (datItemMappings.Keys.Contains(DatItemField.Location_Inverted)) + location.Inverted = datItemMappings[DatItemField.Location_Inverted].AsYesNo(); + } + + #endregion + + #region Media + + else if (datItem is Media media) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + media.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.MD5)) + media.MD5 = datItemMappings[DatItemField.MD5]; + + if (datItemMappings.Keys.Contains(DatItemField.SHA1)) + media.SHA1 = datItemMappings[DatItemField.SHA1]; + + if (datItemMappings.Keys.Contains(DatItemField.SHA256)) + media.SHA256 = datItemMappings[DatItemField.SHA256]; + + if (datItemMappings.Keys.Contains(DatItemField.SpamSum)) + media.SpamSum = datItemMappings[DatItemField.SpamSum]; + } + + #endregion + + #region Part + + else if (datItem is Part part) + { + if (datItemMappings.Keys.Contains(DatItemField.Part_Name)) + part.Name = datItemMappings[DatItemField.Part_Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Part_Interface)) + part.Interface = datItemMappings[DatItemField.Part_Interface]; + + if (part.FeaturesSpecified) + { + foreach (PartFeature subPartFeature in part.Features) + { + SetFields(subPartFeature, datItemMappings, machineMappings); + } + } + } + + #endregion + + #region PartFeature + + else if (datItem is PartFeature partFeature) + { + if (datItemMappings.Keys.Contains(DatItemField.Part_Feature_Name)) + partFeature.Name = datItemMappings[DatItemField.Part_Feature_Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Part_Feature_Value)) + partFeature.Value = datItemMappings[DatItemField.Part_Feature_Value]; + } + + #endregion + + #region Port + + else if (datItem is Port port) + { + if (datItemMappings.Keys.Contains(DatItemField.Tag)) + port.Tag = datItemMappings[DatItemField.Tag]; + + if (port.AnalogsSpecified) + { + foreach (Analog subAnalog in port.Analogs) + { + SetFields(subAnalog, datItemMappings, machineMappings); + } + } + } + + #endregion + + #region RamOption + + else if (datItem is RamOption ramOption) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + ramOption.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Default)) + ramOption.Default = datItemMappings[DatItemField.Default].AsYesNo(); + + if (datItemMappings.Keys.Contains(DatItemField.Content)) + ramOption.Content = datItemMappings[DatItemField.Content]; + } + + #endregion + + #region Release + + else if (datItem is Release release) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + release.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Region)) + release.Region = datItemMappings[DatItemField.Region]; + + if (datItemMappings.Keys.Contains(DatItemField.Language)) + release.Language = datItemMappings[DatItemField.Language]; + + if (datItemMappings.Keys.Contains(DatItemField.Date)) + release.Date = datItemMappings[DatItemField.Date]; + + if (datItemMappings.Keys.Contains(DatItemField.Default)) + release.Default = datItemMappings[DatItemField.Default].AsYesNo(); + } + + #endregion + + #region Rom + + else if (datItem is Rom rom) + { + #region Common + + if (datItemMappings.Keys.Contains(DatItemField.Name)) + rom.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Bios)) + rom.Bios = datItemMappings[DatItemField.Bios]; + + if (datItemMappings.Keys.Contains(DatItemField.Size)) + rom.Size = Utilities.CleanLong(datItemMappings[DatItemField.Size]); + + if (datItemMappings.Keys.Contains(DatItemField.CRC)) + rom.CRC = datItemMappings[DatItemField.CRC]; + + if (datItemMappings.Keys.Contains(DatItemField.MD5)) + rom.MD5 = datItemMappings[DatItemField.MD5]; + +#if NET_FRAMEWORK + if (datItemMappings.Keys.Contains(DatItemField.RIPEMD160)) + rom.RIPEMD160 = datItemMappings[DatItemField.RIPEMD160]; +#endif + + if (datItemMappings.Keys.Contains(DatItemField.SHA1)) + rom.SHA1 = datItemMappings[DatItemField.SHA1]; + + if (datItemMappings.Keys.Contains(DatItemField.SHA256)) + rom.SHA256 = datItemMappings[DatItemField.SHA256]; + + if (datItemMappings.Keys.Contains(DatItemField.SHA384)) + rom.SHA384 = datItemMappings[DatItemField.SHA384]; + + if (datItemMappings.Keys.Contains(DatItemField.SHA512)) + rom.SHA512 = datItemMappings[DatItemField.SHA512]; + + if (datItemMappings.Keys.Contains(DatItemField.SpamSum)) + rom.SpamSum = datItemMappings[DatItemField.SpamSum]; + + if (datItemMappings.Keys.Contains(DatItemField.Merge)) + rom.MergeTag = datItemMappings[DatItemField.Merge]; + + if (datItemMappings.Keys.Contains(DatItemField.Region)) + rom.Region = datItemMappings[DatItemField.Region]; + + if (datItemMappings.Keys.Contains(DatItemField.Offset)) + rom.Offset = datItemMappings[DatItemField.Offset]; + + if (datItemMappings.Keys.Contains(DatItemField.Date)) + rom.Date = datItemMappings[DatItemField.Date]; + + if (datItemMappings.Keys.Contains(DatItemField.Status)) + rom.ItemStatus = datItemMappings[DatItemField.Status].AsItemStatus(); + + if (datItemMappings.Keys.Contains(DatItemField.Optional)) + rom.Optional = datItemMappings[DatItemField.Optional].AsYesNo(); + + if (datItemMappings.Keys.Contains(DatItemField.Inverted)) + rom.Inverted = datItemMappings[DatItemField.Optional].AsYesNo(); + + #endregion + + #region AttractMode + + if (datItemMappings.Keys.Contains(DatItemField.AltName)) + rom.AltName = datItemMappings[DatItemField.AltName]; + + if (datItemMappings.Keys.Contains(DatItemField.AltTitle)) + rom.AltTitle = datItemMappings[DatItemField.AltTitle]; + + #endregion + + #region OpenMSX + + if (datItemMappings.Keys.Contains(DatItemField.Original)) + rom.Original = new Original() { Content = datItemMappings[DatItemField.Original] }; + + if (datItemMappings.Keys.Contains(DatItemField.OpenMSXSubType)) + rom.OpenMSXSubType = datItemMappings[DatItemField.OpenMSXSubType].AsOpenMSXSubType(); + + if (datItemMappings.Keys.Contains(DatItemField.OpenMSXType)) + rom.OpenMSXType = datItemMappings[DatItemField.OpenMSXType]; + + if (datItemMappings.Keys.Contains(DatItemField.Remark)) + rom.Remark = datItemMappings[DatItemField.Remark]; + + if (datItemMappings.Keys.Contains(DatItemField.Boot)) + rom.Boot = datItemMappings[DatItemField.Boot]; + + #endregion + + #region SoftwareList + + if (datItemMappings.Keys.Contains(DatItemField.LoadFlag)) + rom.LoadFlag = datItemMappings[DatItemField.LoadFlag].AsLoadFlag(); + + if (datItemMappings.Keys.Contains(DatItemField.Value)) + rom.Value = datItemMappings[DatItemField.Value]; + + if (rom.DataArea == null) + rom.DataArea = new DataArea(); + + SetFields(rom.DataArea, datItemMappings, machineMappings); + + if (rom.Part == null) + rom.Part = new Part(); + + SetFields(rom.Part, datItemMappings, machineMappings); + + #endregion + } + + #endregion + + #region Sample + + else if (datItem is Sample sample) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + sample.Name = datItemMappings[DatItemField.Name]; + } + + #endregion + + #region Setting + + else if (datItem is Setting setting) + { + if (datItemMappings.Keys.Contains(DatItemField.Setting_Name)) + setting.Name = datItemMappings[DatItemField.Setting_Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Setting_Value)) + setting.Value = datItemMappings[DatItemField.Setting_Value]; + + if (datItemMappings.Keys.Contains(DatItemField.Setting_Default)) + setting.Default = datItemMappings[DatItemField.Setting_Default].AsYesNo(); + + if (setting.ConditionsSpecified) + { + foreach (Condition subCondition in setting.Conditions) + { + SetFields(subCondition, datItemMappings, machineMappings, true); + } + } + } + + #endregion + + #region SharedFeature + + else if (datItem is SharedFeature sharedFeature) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + sharedFeature.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.Value)) + sharedFeature.Value = datItemMappings[DatItemField.Value]; + } + + #endregion + + #region Slot + + else if (datItem is Slot slot) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + slot.Name = datItemMappings[DatItemField.Name]; + + if (slot.SlotOptionsSpecified) + { + foreach (SlotOption subSlotOption in slot.SlotOptions) + { + SetFields(subSlotOption, datItemMappings, machineMappings); + } + } + } + + #endregion + + #region SlotOption + + else if (datItem is SlotOption slotOption) + { + if (datItemMappings.Keys.Contains(DatItemField.SlotOption_Name)) + slotOption.Name = datItemMappings[DatItemField.SlotOption_Name]; + + if (datItemMappings.Keys.Contains(DatItemField.SlotOption_DeviceName)) + slotOption.DeviceName = datItemMappings[DatItemField.SlotOption_DeviceName]; + + if (datItemMappings.Keys.Contains(DatItemField.SlotOption_Default)) + slotOption.Default = datItemMappings[DatItemField.SlotOption_Default].AsYesNo(); + } + + #endregion + + #region SoftwareList + + else if (datItem is SoftwareList softwareList) + { + if (datItemMappings.Keys.Contains(DatItemField.Name)) + softwareList.Name = datItemMappings[DatItemField.Name]; + + if (datItemMappings.Keys.Contains(DatItemField.SoftwareListStatus)) + softwareList.Status = datItemMappings[DatItemField.SoftwareListStatus].AsSoftwareListStatus(); + + if (datItemMappings.Keys.Contains(DatItemField.Filter)) + softwareList.Filter = datItemMappings[DatItemField.Filter]; + } + + #endregion + + #region Sound + + else if (datItem is Sound sound) + { + if (datItemMappings.Keys.Contains(DatItemField.Channels)) + sound.Channels = Utilities.CleanLong(datItemMappings[DatItemField.Channels]); + } + + #endregion } /// diff --git a/SabreTools.DatItems/DataArea.cs b/SabreTools.DatItems/DataArea.cs index cf97b0f8..b1bb0b37 100644 --- a/SabreTools.DatItems/DataArea.cs +++ b/SabreTools.DatItems/DataArea.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -71,28 +68,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle DataArea-specific fields - if (datItemMappings.Keys.Contains(DatItemField.AreaName)) - Name = datItemMappings[DatItemField.AreaName]; - - if (datItemMappings.Keys.Contains(DatItemField.AreaSize)) - Size = Utilities.CleanLong(datItemMappings[DatItemField.AreaSize]); - - if (datItemMappings.Keys.Contains(DatItemField.AreaWidth)) - Width = Utilities.CleanLong(datItemMappings[DatItemField.AreaWidth]); - - if (datItemMappings.Keys.Contains(DatItemField.AreaEndianness)) - Endianness = datItemMappings[DatItemField.AreaEndianness].AsEndianness(); - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Device.cs b/SabreTools.DatItems/Device.cs index ae71816c..69d49eee 100644 --- a/SabreTools.DatItems/Device.cs +++ b/SabreTools.DatItems/Device.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -82,51 +80,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Device-specific fields - if (datItemMappings.Keys.Contains(DatItemField.DeviceType)) - DeviceType = datItemMappings[DatItemField.DeviceType].AsDeviceType(); - - if (datItemMappings.Keys.Contains(DatItemField.Tag)) - Tag = datItemMappings[DatItemField.Tag]; - - if (datItemMappings.Keys.Contains(DatItemField.FixedImage)) - FixedImage = datItemMappings[DatItemField.FixedImage]; - - if (datItemMappings.Keys.Contains(DatItemField.Mandatory)) - Mandatory = Utilities.CleanLong(datItemMappings[DatItemField.Mandatory]); - - if (datItemMappings.Keys.Contains(DatItemField.Interface)) - Interface = datItemMappings[DatItemField.Interface]; - - if (InstancesSpecified) - { - foreach (Instance instance in Instances) - { - instance.SetFields(datItemMappings, machineMappings); - } - } - - if (ExtensionsSpecified) - { - foreach (Extension extension in Extensions) - { - extension.SetFields(datItemMappings, machineMappings); - } - } - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatItems/DeviceReference.cs b/SabreTools.DatItems/DeviceReference.cs index 50180871..249fdee4 100644 --- a/SabreTools.DatItems/DeviceReference.cs +++ b/SabreTools.DatItems/DeviceReference.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -38,19 +37,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle DeviceReference-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/DipSwitch.cs b/SabreTools.DatItems/DipSwitch.cs index 5d61a2c7..b0478a25 100644 --- a/SabreTools.DatItems/DipSwitch.cs +++ b/SabreTools.DatItems/DipSwitch.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -108,64 +107,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle DipSwitch-specific fields - - #region Common - - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Tag)) - Tag = datItemMappings[DatItemField.Tag]; - - if (datItemMappings.Keys.Contains(DatItemField.Mask)) - Mask = datItemMappings[DatItemField.Mask]; - - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - condition.SetFields(datItemMappings, machineMappings, true); - } - } - - if (LocationsSpecified) - { - foreach (Location location in Locations) - { - location.SetFields(datItemMappings, machineMappings); - } - } - - if (ValuesSpecified) - { - foreach (Setting value in Values) - { - value.SetFields(datItemMappings, machineMappings); - } - } - - #endregion - - #region SoftwareList - - // Handle Part-specific fields - if (Part == null) - Part = new Part(); - - Part.SetFields(datItemMappings, machineMappings); - - #endregion - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Disk.cs b/SabreTools.DatItems/Disk.cs index f5cf4b06..fdfe42db 100644 --- a/SabreTools.DatItems/Disk.cs +++ b/SabreTools.DatItems/Disk.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -165,55 +164,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Disk-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.MD5)) - MD5 = datItemMappings[DatItemField.MD5]; - - if (datItemMappings.Keys.Contains(DatItemField.SHA1)) - SHA1 = datItemMappings[DatItemField.SHA1]; - - if (datItemMappings.Keys.Contains(DatItemField.Merge)) - MergeTag = datItemMappings[DatItemField.Merge]; - - if (datItemMappings.Keys.Contains(DatItemField.Region)) - Region = datItemMappings[DatItemField.Region]; - - if (datItemMappings.Keys.Contains(DatItemField.Index)) - Index = datItemMappings[DatItemField.Index]; - - if (datItemMappings.Keys.Contains(DatItemField.Writable)) - Writable = datItemMappings[DatItemField.Writable].AsYesNo(); - - if (datItemMappings.Keys.Contains(DatItemField.Status)) - ItemStatus = datItemMappings[DatItemField.Status].AsItemStatus(); - - if (datItemMappings.Keys.Contains(DatItemField.Optional)) - Optional = datItemMappings[DatItemField.Optional].AsYesNo(); - - // Handle DiskArea-specific fields - if (DiskArea == null) - DiskArea = new DiskArea(); - - DiskArea.SetFields(datItemMappings, machineMappings); - - // Handle Part-specific fields - if (Part == null) - Part = new Part(); - - Part.SetFields(datItemMappings, machineMappings); - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/DiskArea.cs b/SabreTools.DatItems/DiskArea.cs index 77a4891a..041ca630 100644 --- a/SabreTools.DatItems/DiskArea.cs +++ b/SabreTools.DatItems/DiskArea.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using System.Xml.Serialization; using SabreTools.Core; @@ -40,19 +38,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle DiskArea-specific fields - if (datItemMappings.Keys.Contains(DatItemField.AreaName)) - Name = datItemMappings[DatItemField.AreaName]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Display.cs b/SabreTools.DatItems/Display.cs index 0ea34c73..45241db4 100644 --- a/SabreTools.DatItems/Display.cs +++ b/SabreTools.DatItems/Display.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -158,65 +155,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Display-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Tag)) - Tag = datItemMappings[DatItemField.Tag]; - - if (datItemMappings.Keys.Contains(DatItemField.DisplayType)) - DisplayType = datItemMappings[DatItemField.DisplayType].AsDisplayType(); - - if (datItemMappings.Keys.Contains(DatItemField.Rotate)) - Rotate = Utilities.CleanLong(datItemMappings[DatItemField.Rotate]); - - if (datItemMappings.Keys.Contains(DatItemField.FlipX)) - FlipX = datItemMappings[DatItemField.FlipX].AsYesNo(); - - if (datItemMappings.Keys.Contains(DatItemField.Width)) - Width = Utilities.CleanLong(datItemMappings[DatItemField.Width]); - - if (datItemMappings.Keys.Contains(DatItemField.Height)) - Height = Utilities.CleanLong(datItemMappings[DatItemField.Height]); - - if (datItemMappings.Keys.Contains(DatItemField.Refresh)) - { - if (Double.TryParse(datItemMappings[DatItemField.Refresh], out double refresh)) - Refresh = refresh; - } - - if (datItemMappings.Keys.Contains(DatItemField.PixClock)) - PixClock = Utilities.CleanLong(datItemMappings[DatItemField.PixClock]); - - if (datItemMappings.Keys.Contains(DatItemField.HTotal)) - HTotal = Utilities.CleanLong(datItemMappings[DatItemField.HTotal]); - - if (datItemMappings.Keys.Contains(DatItemField.HBEnd)) - HBEnd = Utilities.CleanLong(datItemMappings[DatItemField.HBEnd]); - - if (datItemMappings.Keys.Contains(DatItemField.HBStart)) - HBStart = Utilities.CleanLong(datItemMappings[DatItemField.HBStart]); - - if (datItemMappings.Keys.Contains(DatItemField.VTotal)) - VTotal = Utilities.CleanLong(datItemMappings[DatItemField.VTotal]); - - if (datItemMappings.Keys.Contains(DatItemField.VBEnd)) - VBEnd = Utilities.CleanLong(datItemMappings[DatItemField.VBEnd]); - - if (datItemMappings.Keys.Contains(DatItemField.VBStart)) - VBStart = Utilities.CleanLong(datItemMappings[DatItemField.VBStart]); - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatItems/Driver.cs b/SabreTools.DatItems/Driver.cs index c04d6be3..6fa17404 100644 --- a/SabreTools.DatItems/Driver.cs +++ b/SabreTools.DatItems/Driver.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -63,32 +61,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Feature-specific fields - if (datItemMappings.Keys.Contains(DatItemField.SupportStatus)) - Status = datItemMappings[DatItemField.SupportStatus].AsSupportStatus(); - - if (datItemMappings.Keys.Contains(DatItemField.EmulationStatus)) - Emulation = datItemMappings[DatItemField.EmulationStatus].AsSupportStatus(); - - if (datItemMappings.Keys.Contains(DatItemField.CocktailStatus)) - Cocktail = datItemMappings[DatItemField.CocktailStatus].AsSupportStatus(); - - if (datItemMappings.Keys.Contains(DatItemField.SaveStateStatus)) - SaveState = datItemMappings[DatItemField.SaveStateStatus].AsSupported(); - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatItems/Extension.cs b/SabreTools.DatItems/Extension.cs index b34fba40..a89e31ab 100644 --- a/SabreTools.DatItems/Extension.cs +++ b/SabreTools.DatItems/Extension.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -38,19 +37,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Sample-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Extension_Name)) - Name = datItemMappings[DatItemField.Extension_Name]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Feature.cs b/SabreTools.DatItems/Feature.cs index f8e4f60e..096b8247 100644 --- a/SabreTools.DatItems/Feature.cs +++ b/SabreTools.DatItems/Feature.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -52,29 +50,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Feature-specific fields - if (datItemMappings.Keys.Contains(DatItemField.FeatureType)) - Type = datItemMappings[DatItemField.FeatureType].AsFeatureType(); - - if (datItemMappings.Keys.Contains(DatItemField.FeatureStatus)) - Status = datItemMappings[DatItemField.FeatureStatus].AsFeatureStatus(); - - if (datItemMappings.Keys.Contains(DatItemField.FeatureOverall)) - Overall = datItemMappings[DatItemField.FeatureOverall].AsFeatureStatus(); - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatItems/Info.cs b/SabreTools.DatItems/Info.cs index 1f44734c..3e5b2105 100644 --- a/SabreTools.DatItems/Info.cs +++ b/SabreTools.DatItems/Info.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -45,22 +44,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Info-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Value)) - Value = datItemMappings[DatItemField.Value]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Input.cs b/SabreTools.DatItems/Input.cs index 13913960..950c5c4f 100644 --- a/SabreTools.DatItems/Input.cs +++ b/SabreTools.DatItems/Input.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -69,40 +66,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Input-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Service)) - Service = datItemMappings[DatItemField.Service].AsYesNo(); - - if (datItemMappings.Keys.Contains(DatItemField.Tilt)) - Tilt = datItemMappings[DatItemField.Tilt].AsYesNo(); - - if (datItemMappings.Keys.Contains(DatItemField.Players)) - Players = Utilities.CleanLong(datItemMappings[DatItemField.Players]); - - if (datItemMappings.Keys.Contains(DatItemField.Coins)) - Coins = Utilities.CleanLong(datItemMappings[DatItemField.Coins]); - - if (ControlsSpecified) - { - foreach (Control control in Controls) - { - control.SetFields(datItemMappings, machineMappings); - } - } - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatItems/Instance.cs b/SabreTools.DatItems/Instance.cs index 31f09699..6864511e 100644 --- a/SabreTools.DatItems/Instance.cs +++ b/SabreTools.DatItems/Instance.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -45,22 +44,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Instance-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Instance_Name)) - Name = datItemMappings[DatItemField.Instance_Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Instance_BriefName)) - BriefName = datItemMappings[DatItemField.Instance_BriefName]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Location.cs b/SabreTools.DatItems/Location.cs index 1056e877..2d53ce5e 100644 --- a/SabreTools.DatItems/Location.cs +++ b/SabreTools.DatItems/Location.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -59,25 +57,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Location-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Location_Name)) - Name = datItemMappings[DatItemField.Location_Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Location_Number)) - Number = Utilities.CleanLong(datItemMappings[DatItemField.Location_Number]); - - if (datItemMappings.Keys.Contains(DatItemField.Location_Inverted)) - Inverted = datItemMappings[DatItemField.Location_Inverted].AsYesNo(); - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Media.cs b/SabreTools.DatItems/Media.cs index 20eddee6..adbc35a3 100644 --- a/SabreTools.DatItems/Media.cs +++ b/SabreTools.DatItems/Media.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Text; using System.Xml.Serialization; @@ -94,31 +93,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Media-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.MD5)) - MD5 = datItemMappings[DatItemField.MD5]; - - if (datItemMappings.Keys.Contains(DatItemField.SHA1)) - SHA1 = datItemMappings[DatItemField.SHA1]; - - if (datItemMappings.Keys.Contains(DatItemField.SHA256)) - SHA256 = datItemMappings[DatItemField.SHA256]; - - if (datItemMappings.Keys.Contains(DatItemField.SpamSum)) - SpamSum = datItemMappings[DatItemField.SpamSum]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Part.cs b/SabreTools.DatItems/Part.cs index d474f354..68e178e7 100644 --- a/SabreTools.DatItems/Part.cs +++ b/SabreTools.DatItems/Part.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using System.Xml.Serialization; using SabreTools.Core; @@ -48,31 +46,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Part-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Part_Name)) - Name = datItemMappings[DatItemField.Part_Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Part_Interface)) - Interface = datItemMappings[DatItemField.Part_Interface]; - - // Handle Feature-specific fields - if (FeaturesSpecified) - { - foreach (PartFeature partFeature in Features) - { - partFeature.SetFields(datItemMappings, machineMappings); - } - } - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/PartFeature.cs b/SabreTools.DatItems/PartFeature.cs index e4cbd3ef..9cd9e051 100644 --- a/SabreTools.DatItems/PartFeature.cs +++ b/SabreTools.DatItems/PartFeature.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -45,22 +44,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle PartFeature-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Part_Feature_Name)) - Name = datItemMappings[DatItemField.Part_Feature_Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Part_Feature_Value)) - Value = datItemMappings[DatItemField.Part_Feature_Value]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Port.cs b/SabreTools.DatItems/Port.cs index 410b9a0e..4f297576 100644 --- a/SabreTools.DatItems/Port.cs +++ b/SabreTools.DatItems/Port.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -34,31 +33,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Port-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Tag)) - Tag = datItemMappings[DatItemField.Tag]; - - if (AnalogsSpecified) - { - foreach (Analog analog in Analogs) - { - analog.SetFields(datItemMappings, machineMappings); - } - } - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatItems/RamOption.cs b/SabreTools.DatItems/RamOption.cs index 5f6c6d64..cf9d968a 100644 --- a/SabreTools.DatItems/RamOption.cs +++ b/SabreTools.DatItems/RamOption.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -56,25 +54,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle BiosSet-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Default)) - Default = datItemMappings[DatItemField.Default].AsYesNo(); - - if (datItemMappings.Keys.Contains(DatItemField.Content)) - Content = datItemMappings[DatItemField.Content]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Release.cs b/SabreTools.DatItems/Release.cs index 9ac8226b..4c1de94f 100644 --- a/SabreTools.DatItems/Release.cs +++ b/SabreTools.DatItems/Release.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -70,31 +68,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Release-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Region)) - Region = datItemMappings[DatItemField.Region]; - - if (datItemMappings.Keys.Contains(DatItemField.Language)) - Language = datItemMappings[DatItemField.Language]; - - if (datItemMappings.Keys.Contains(DatItemField.Date)) - Date = datItemMappings[DatItemField.Date]; - - if (datItemMappings.Keys.Contains(DatItemField.Default)) - Default = datItemMappings[DatItemField.Default].AsYesNo(); - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Rom.cs b/SabreTools.DatItems/Rom.cs index 4ebe97af..e3ca3796 100644 --- a/SabreTools.DatItems/Rom.cs +++ b/SabreTools.DatItems/Rom.cs @@ -353,128 +353,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Rom-specific fields - - #region Common - - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Bios)) - Bios = datItemMappings[DatItemField.Bios]; - - if (datItemMappings.Keys.Contains(DatItemField.Size)) - Size = Utilities.CleanLong(datItemMappings[DatItemField.Size]); - - if (datItemMappings.Keys.Contains(DatItemField.CRC)) - CRC = datItemMappings[DatItemField.CRC]; - - if (datItemMappings.Keys.Contains(DatItemField.MD5)) - MD5 = datItemMappings[DatItemField.MD5]; - -#if NET_FRAMEWORK - if (datItemMappings.Keys.Contains(DatItemField.RIPEMD160)) - RIPEMD160 = datItemMappings[DatItemField.RIPEMD160]; -#endif - - if (datItemMappings.Keys.Contains(DatItemField.SHA1)) - SHA1 = datItemMappings[DatItemField.SHA1]; - - if (datItemMappings.Keys.Contains(DatItemField.SHA256)) - SHA256 = datItemMappings[DatItemField.SHA256]; - - if (datItemMappings.Keys.Contains(DatItemField.SHA384)) - SHA384 = datItemMappings[DatItemField.SHA384]; - - if (datItemMappings.Keys.Contains(DatItemField.SHA512)) - SHA512 = datItemMappings[DatItemField.SHA512]; - - if (datItemMappings.Keys.Contains(DatItemField.SpamSum)) - SpamSum = datItemMappings[DatItemField.SpamSum]; - - if (datItemMappings.Keys.Contains(DatItemField.Merge)) - MergeTag = datItemMappings[DatItemField.Merge]; - - if (datItemMappings.Keys.Contains(DatItemField.Region)) - Region = datItemMappings[DatItemField.Region]; - - if (datItemMappings.Keys.Contains(DatItemField.Offset)) - Offset = datItemMappings[DatItemField.Offset]; - - if (datItemMappings.Keys.Contains(DatItemField.Date)) - Date = datItemMappings[DatItemField.Date]; - - if (datItemMappings.Keys.Contains(DatItemField.Status)) - ItemStatus = datItemMappings[DatItemField.Status].AsItemStatus(); - - if (datItemMappings.Keys.Contains(DatItemField.Optional)) - Optional = datItemMappings[DatItemField.Optional].AsYesNo(); - - if (datItemMappings.Keys.Contains(DatItemField.Inverted)) - Inverted = datItemMappings[DatItemField.Optional].AsYesNo(); - - #endregion - - #region AttractMode - - if (datItemMappings.Keys.Contains(DatItemField.AltName)) - AltName = datItemMappings[DatItemField.AltName]; - - if (datItemMappings.Keys.Contains(DatItemField.AltTitle)) - AltTitle = datItemMappings[DatItemField.AltTitle]; - - #endregion - - #region OpenMSX - - if (datItemMappings.Keys.Contains(DatItemField.Original)) - Original = new Original() { Content = datItemMappings[DatItemField.Original] }; - - if (datItemMappings.Keys.Contains(DatItemField.OpenMSXSubType)) - OpenMSXSubType = datItemMappings[DatItemField.OpenMSXSubType].AsOpenMSXSubType(); - - if (datItemMappings.Keys.Contains(DatItemField.OpenMSXType)) - OpenMSXType = datItemMappings[DatItemField.OpenMSXType]; - - if (datItemMappings.Keys.Contains(DatItemField.Remark)) - Remark = datItemMappings[DatItemField.Remark]; - - if (datItemMappings.Keys.Contains(DatItemField.Boot)) - Boot = datItemMappings[DatItemField.Boot]; - - #endregion - - #region SoftwareList - - if (datItemMappings.Keys.Contains(DatItemField.LoadFlag)) - LoadFlag = datItemMappings[DatItemField.LoadFlag].AsLoadFlag(); - - if (datItemMappings.Keys.Contains(DatItemField.Value)) - Value = datItemMappings[DatItemField.Value]; - - // Handle DataArea-specific fields - if (DataArea == null) - DataArea = new DataArea(); - - DataArea.SetFields(datItemMappings, machineMappings); - - // Handle Part-specific fields - if (Part == null) - Part = new Part(); - - Part.SetFields(datItemMappings, machineMappings); - - #endregion - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Sample.cs b/SabreTools.DatItems/Sample.cs index 4a6264e7..5413f63b 100644 --- a/SabreTools.DatItems/Sample.cs +++ b/SabreTools.DatItems/Sample.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -38,19 +37,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Sample-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Setting.cs b/SabreTools.DatItems/Setting.cs index 4d81600b..41bf248a 100644 --- a/SabreTools.DatItems/Setting.cs +++ b/SabreTools.DatItems/Setting.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -66,33 +64,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Setting-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Setting_Name)) - Name = datItemMappings[DatItemField.Setting_Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Setting_Value)) - Value = datItemMappings[DatItemField.Setting_Value]; - - if (datItemMappings.Keys.Contains(DatItemField.Setting_Default)) - Default = datItemMappings[DatItemField.Setting_Default].AsYesNo(); - - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - condition.SetFields(datItemMappings, machineMappings, true); - } - } - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/SharedFeature.cs b/SabreTools.DatItems/SharedFeature.cs index 3805642b..3666fee8 100644 --- a/SabreTools.DatItems/SharedFeature.cs +++ b/SabreTools.DatItems/SharedFeature.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -45,22 +44,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle SharedFeature-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.Value)) - Value = datItemMappings[DatItemField.Value]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Slot.cs b/SabreTools.DatItems/Slot.cs index e947d3e7..bbef2de9 100644 --- a/SabreTools.DatItems/Slot.cs +++ b/SabreTools.DatItems/Slot.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; @@ -48,27 +47,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Slot-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (SlotOptionsSpecified) - { - foreach (SlotOption slotOption in SlotOptions) - { - slotOption.SetFields(datItemMappings, machineMappings); - } - } - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/SlotOption.cs b/SabreTools.DatItems/SlotOption.cs index 5c77891b..22c15d99 100644 --- a/SabreTools.DatItems/SlotOption.cs +++ b/SabreTools.DatItems/SlotOption.cs @@ -1,9 +1,7 @@ using System.Collections.Generic; -using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -56,25 +54,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle SlotOption-specific fields - if (datItemMappings.Keys.Contains(DatItemField.SlotOption_Name)) - Name = datItemMappings[DatItemField.SlotOption_Name]; - - if (datItemMappings.Keys.Contains(DatItemField.SlotOption_DeviceName)) - DeviceName = datItemMappings[DatItemField.SlotOption_DeviceName]; - - if (datItemMappings.Keys.Contains(DatItemField.SlotOption_Default)) - Default = datItemMappings[DatItemField.SlotOption_Default].AsYesNo(); - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/SoftwareList.cs b/SabreTools.DatItems/SoftwareList.cs index 0fcf51ee..84328b5a 100644 --- a/SabreTools.DatItems/SoftwareList.cs +++ b/SabreTools.DatItems/SoftwareList.cs @@ -58,25 +58,6 @@ namespace SabreTools.DatItems Name = name; } - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle SoftwareList-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Name)) - Name = datItemMappings[DatItemField.Name]; - - if (datItemMappings.Keys.Contains(DatItemField.SoftwareListStatus)) - Status = datItemMappings[DatItemField.SoftwareListStatus].AsSoftwareListStatus(); - - if (datItemMappings.Keys.Contains(DatItemField.Filter)) - Filter = datItemMappings[DatItemField.Filter]; - } - #endregion #region Constructors diff --git a/SabreTools.DatItems/Sound.cs b/SabreTools.DatItems/Sound.cs index e818fb3a..048a1fdb 100644 --- a/SabreTools.DatItems/Sound.cs +++ b/SabreTools.DatItems/Sound.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Collections.Generic; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Core.Tools; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -29,23 +26,6 @@ namespace SabreTools.DatItems #endregion - #region Accessors - - /// - public override void SetFields( - Dictionary datItemMappings, - Dictionary machineMappings) - { - // Set base fields - base.SetFields(datItemMappings, machineMappings); - - // Handle Sound-specific fields - if (datItemMappings.Keys.Contains(DatItemField.Channels)) - Channels = Utilities.CleanLong(datItemMappings[DatItemField.Channels]); - } - - #endregion - #region Constructors /// diff --git a/SabreTools.DatTools/DatFromDir.cs b/SabreTools.DatTools/DatFromDir.cs index 7c9b7c93..3480e8a9 100644 --- a/SabreTools.DatTools/DatFromDir.cs +++ b/SabreTools.DatTools/DatFromDir.cs @@ -434,7 +434,7 @@ namespace SabreTools.DatTools } // Set the item name back - datItem.SetFields(new Dictionary { [DatItemField.Name] = itemName }, null); + DatItemTool.SetFields(datItem, new Dictionary { [DatItemField.Name] = itemName }); } } } \ No newline at end of file diff --git a/SabreTools.DatTools/Modification.cs b/SabreTools.DatTools/Modification.cs index 7b01fcc3..2de0941c 100644 --- a/SabreTools.DatTools/Modification.cs +++ b/SabreTools.DatTools/Modification.cs @@ -162,7 +162,7 @@ namespace SabreTools.DatTools foreach (var datItem in datItems) { - datItem.SetFields(mappings, null); + DatItemTool.SetFields(datItem, mappings, null); } } } @@ -1033,7 +1033,7 @@ namespace SabreTools.DatTools else if (!datFile.Items[parent].Contains(item)) { if (subfolder) - item.SetFields(new Dictionary { [DatItemField.Name] = $"{item.Machine.Name}\\{item.GetName()}" }, null); + item.SetName($"{item.Machine.Name}\\{item.GetName()}"); item.CopyMachineInformation(copyFrom); datFile.Items.Add(parent, item); diff --git a/SabreTools.DatTools/Rebuilder.cs b/SabreTools.DatTools/Rebuilder.cs index 6f4b9398..0c06726b 100644 --- a/SabreTools.DatTools/Rebuilder.cs +++ b/SabreTools.DatTools/Rebuilder.cs @@ -441,7 +441,7 @@ namespace SabreTools.DatTools { // Create a headered item to use as well datItem.CopyMachineInformation(item); - datItem.SetFields(new Dictionary { [DatItemField.Name] = $"{datItem.GetName()}_{crc}" }, null); + datItem.SetName($"{datItem.GetName()}_{crc}"); // Get the output archive, if possible Folder outputArchive = GetPreconfiguredFolder(datFile, date, outputFormat);