From 8a354e915624724d856853488ebd03b187dc5b72 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 13 Dec 2020 23:09:24 -0800 Subject: [PATCH] DatItems don't know about removing fields or ORPG --- RombaSharp/Features/Diffdat.cs | 2 +- RombaSharp/Features/EDiffdat.cs | 2 +- SabreTools.DatItems/Adjuster.cs | 39 - SabreTools.DatItems/Analog.cs | 17 - SabreTools.DatItems/Archive.cs | 28 - SabreTools.DatItems/BiosSet.cs | 34 - SabreTools.DatItems/Chip.cs | 37 - SabreTools.DatItems/Condition.cs | 57 - SabreTools.DatItems/Configuration.cs | 58 - SabreTools.DatItems/Control.cs | 50 - SabreTools.DatItems/DatItem.cs | 19 - SabreTools.DatItems/DataArea.cs | 37 - SabreTools.DatItems/Device.cs | 45 - SabreTools.DatItems/DeviceReference.cs | 28 - SabreTools.DatItems/DipSwitch.cs | 70 - SabreTools.DatItems/Disk.cs | 67 - SabreTools.DatItems/DiskArea.cs | 28 - SabreTools.DatItems/Display.cs | 56 - SabreTools.DatItems/Driver.cs | 26 - SabreTools.DatItems/Extension.cs | 28 - SabreTools.DatItems/Feature.cs | 23 - SabreTools.DatItems/Info.cs | 31 - SabreTools.DatItems/Input.cs | 34 - SabreTools.DatItems/Instance.cs | 31 - SabreTools.DatItems/Location.cs | 34 - SabreTools.DatItems/Media.cs | 40 - SabreTools.DatItems/Part.cs | 39 - SabreTools.DatItems/PartFeature.cs | 31 - SabreTools.DatItems/Port.cs | 25 - SabreTools.DatItems/RamOption.cs | 34 - SabreTools.DatItems/Release.cs | 40 - SabreTools.DatItems/Rom.cs | 131 -- SabreTools.DatItems/Sample.cs | 28 - SabreTools.DatItems/Setting.cs | 42 - SabreTools.DatItems/SharedFeature.cs | 31 - SabreTools.DatItems/Slot.cs | 36 - SabreTools.DatItems/SlotOption.cs | 34 - SabreTools.DatItems/SoftwareList.cs | 34 - SabreTools.DatItems/Sound.cs | 17 - .../{DatTool.cs => DatFileTool.cs} | 4 +- SabreTools.DatTools/DatItemTool.cs | 1377 +++++++++++++++++ SabreTools.DatTools/Modification.cs | 7 +- SabreTools.Filtering/Cleaner.cs | 469 ------ SabreTools/Features/Update.cs | 16 +- 44 files changed, 1392 insertions(+), 1924 deletions(-) rename SabreTools.DatTools/{DatTool.cs => DatFileTool.cs} (99%) create mode 100644 SabreTools.DatTools/DatItemTool.cs diff --git a/RombaSharp/Features/Diffdat.cs b/RombaSharp/Features/Diffdat.cs index 5c8d369f..c1b5b325 100644 --- a/RombaSharp/Features/Diffdat.cs +++ b/RombaSharp/Features/Diffdat.cs @@ -64,7 +64,7 @@ in -old DAT file. Ignores those entries in -old that are not in -new."; // Diff against the new datfile DatFile intDat = Parser.CreateAndParse(newdat); - DatTool.DiffAgainst(datfile, intDat, false); + DatFileTool.DiffAgainst(datfile, intDat, false); Writer.Write(intDat, outdat); } } diff --git a/RombaSharp/Features/EDiffdat.cs b/RombaSharp/Features/EDiffdat.cs index e945c6ba..33ee8997 100644 --- a/RombaSharp/Features/EDiffdat.cs +++ b/RombaSharp/Features/EDiffdat.cs @@ -56,7 +56,7 @@ namespace RombaSharp.Features // Diff against the new datfile DatFile intDat = Parser.CreateAndParse(newdat); - DatTool.DiffAgainst(datfile, intDat, false); + DatFileTool.DiffAgainst(datfile, intDat, false); Writer.Write(intDat, outdat); } } diff --git a/SabreTools.DatItems/Adjuster.cs b/SabreTools.DatItems/Adjuster.cs index 72090dba..69e37f8b 100644 --- a/SabreTools.DatItems/Adjuster.cs +++ b/SabreTools.DatItems/Adjuster.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -151,44 +150,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Default)) - Default = null; - - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - condition.RemoveFields(datItemFields, machineFields, true); - } - } - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Analog.cs b/SabreTools.DatItems/Analog.cs index 6416a541..879d9a00 100644 --- a/SabreTools.DatItems/Analog.cs +++ b/SabreTools.DatItems/Analog.cs @@ -89,23 +89,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Analog_Mask)) - Mask = null; - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Archive.cs b/SabreTools.DatItems/Archive.cs index 7ea0746c..119233a5 100644 --- a/SabreTools.DatItems/Archive.cs +++ b/SabreTools.DatItems/Archive.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -103,33 +102,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/BiosSet.cs b/SabreTools.DatItems/BiosSet.cs index fa181358..7574fa55 100644 --- a/SabreTools.DatItems/BiosSet.cs +++ b/SabreTools.DatItems/BiosSet.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -131,39 +130,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Description)) - Description = null; - - if (datItemFields.Contains(DatItemField.Default)) - Default = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Chip.cs b/SabreTools.DatItems/Chip.cs index d2f5ee04..cd746b00 100644 --- a/SabreTools.DatItems/Chip.cs +++ b/SabreTools.DatItems/Chip.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -149,42 +148,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Tag)) - Tag = null; - - if (datItemFields.Contains(DatItemField.ChipType)) - ChipType = ChipType.NULL; - - if (datItemFields.Contains(DatItemField.Clock)) - Clock = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Condition.cs b/SabreTools.DatItems/Condition.cs index 30e9dc27..d04b9306 100644 --- a/SabreTools.DatItems/Condition.cs +++ b/SabreTools.DatItems/Condition.cs @@ -162,63 +162,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - RemoveFields(datItemFields, machineFields, false); - } - - /// - /// Remove fields from the DatItem - /// - /// DatItem fields to remove - /// Machine fields to remove - /// True if this is a subitem, false otherwise - public void RemoveFields( - List datItemFields, - List machineFields, - bool sub) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (sub) - { - if (datItemFields.Contains(DatItemField.Condition_Tag)) - Tag = null; - - if (datItemFields.Contains(DatItemField.Condition_Mask)) - Mask = null; - - if (datItemFields.Contains(DatItemField.Condition_Relation)) - Relation = Relation.NULL; - - if (datItemFields.Contains(DatItemField.Condition_Value)) - Value = null; - } - else - { - if (datItemFields.Contains(DatItemField.Tag)) - Tag = null; - - if (datItemFields.Contains(DatItemField.Mask)) - Mask = null; - - if (datItemFields.Contains(DatItemField.Relation)) - Relation = Relation.NULL; - - if (datItemFields.Contains(DatItemField.Value)) - Value = null; - } - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Configuration.cs b/SabreTools.DatItems/Configuration.cs index cafca099..30b9de7d 100644 --- a/SabreTools.DatItems/Configuration.cs +++ b/SabreTools.DatItems/Configuration.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -215,63 +214,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Tag)) - Tag = null; - - if (datItemFields.Contains(DatItemField.Mask)) - Mask = null; - - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - condition.RemoveFields(datItemFields, machineFields, true); - } - } - - if (LocationsSpecified) - { - foreach (Location location in Locations) - { - location.RemoveFields(datItemFields, machineFields); - } - } - - if (SettingsSpecified) - { - foreach (Setting setting in Settings) - { - setting.RemoveFields(datItemFields, machineFields); - } - } - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Control.cs b/SabreTools.DatItems/Control.cs index 394e1b19..1346fa35 100644 --- a/SabreTools.DatItems/Control.cs +++ b/SabreTools.DatItems/Control.cs @@ -252,56 +252,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Control_Type)) - ControlType = ControlType.NULL; - - if (datItemFields.Contains(DatItemField.Control_Player)) - Player = null; - - if (datItemFields.Contains(DatItemField.Control_Buttons)) - Buttons = null; - - if (datItemFields.Contains(DatItemField.Control_RequiredButtons)) - RequiredButtons = null; - - if (datItemFields.Contains(DatItemField.Control_Minimum)) - Minimum = null; - - if (datItemFields.Contains(DatItemField.Control_Maximum)) - Maximum = null; - - if (datItemFields.Contains(DatItemField.Control_Sensitivity)) - Sensitivity = null; - - if (datItemFields.Contains(DatItemField.Control_KeyDelta)) - KeyDelta = null; - - if (datItemFields.Contains(DatItemField.Control_Reverse)) - Reverse = null; - - if (datItemFields.Contains(DatItemField.Control_Ways)) - Ways = null; - - if (datItemFields.Contains(DatItemField.Control_Ways2)) - Ways2 = null; - - if (datItemFields.Contains(DatItemField.Control_Ways3)) - Ways3 = null; - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs index 2e29852b..d85cc146 100644 --- a/SabreTools.DatItems/DatItem.cs +++ b/SabreTools.DatItems/DatItem.cs @@ -455,25 +455,6 @@ namespace SabreTools.DatItems #region Filtering - /// - /// Remove fields from the DatItem - /// - /// DatItem fields to remove - /// Machine fields to remove - /// TODO: Fix case where datItemFields is null - public virtual void RemoveFields( - List datItemFields, - List machineFields) - { - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public virtual void SetOneRomPerGame() - { - } - /// /// Clean a CRC32 string and pad to the correct size /// diff --git a/SabreTools.DatItems/DataArea.cs b/SabreTools.DatItems/DataArea.cs index 90da76f6..cf97b0f8 100644 --- a/SabreTools.DatItems/DataArea.cs +++ b/SabreTools.DatItems/DataArea.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -151,42 +150,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.AreaName)) - Name = null; - - if (datItemFields.Contains(DatItemField.AreaSize)) - Size = null; - - if (datItemFields.Contains(DatItemField.AreaWidth)) - Width = null; - - if (datItemFields.Contains(DatItemField.AreaEndianness)) - Endianness = Endianness.NULL; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Device.cs b/SabreTools.DatItems/Device.cs index 90dd6c10..ae71816c 100644 --- a/SabreTools.DatItems/Device.cs +++ b/SabreTools.DatItems/Device.cs @@ -207,51 +207,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.DeviceType)) - DeviceType = DeviceType.NULL; - - if (datItemFields.Contains(DatItemField.Tag)) - Tag = null; - - if (datItemFields.Contains(DatItemField.FixedImage)) - FixedImage = null; - - if (datItemFields.Contains(DatItemField.Mandatory)) - Mandatory = null; - - if (datItemFields.Contains(DatItemField.Interface)) - Interface = null; - - if (InstancesSpecified) - { - foreach (Instance instance in Instances) - { - instance.RemoveFields(datItemFields, machineFields); - } - } - - if (ExtensionsSpecified) - { - foreach (Extension extension in Extensions) - { - extension.RemoveFields(datItemFields, machineFields); - } - } - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/DeviceReference.cs b/SabreTools.DatItems/DeviceReference.cs index 51562fe0..50180871 100644 --- a/SabreTools.DatItems/DeviceReference.cs +++ b/SabreTools.DatItems/DeviceReference.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -103,33 +102,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/DipSwitch.cs b/SabreTools.DatItems/DipSwitch.cs index 629834a5..5d61a2c7 100644 --- a/SabreTools.DatItems/DipSwitch.cs +++ b/SabreTools.DatItems/DipSwitch.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -262,75 +261,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - - #region Common - - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Tag)) - Tag = null; - - if (datItemFields.Contains(DatItemField.Mask)) - Mask = null; - - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - condition.RemoveFields(datItemFields, machineFields, true); - } - } - - if (LocationsSpecified) - { - foreach (Location location in Locations) - { - location.RemoveFields(datItemFields, machineFields); - } - } - - if (ValuesSpecified) - { - foreach (Setting value in Values) - { - value.RemoveFields(datItemFields, machineFields); - } - } - - #endregion - - #region SoftwareList - - if (PartSpecified) - Part.RemoveFields(datItemFields, machineFields); - - #endregion - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Disk.cs b/SabreTools.DatItems/Disk.cs index 24ed23e8..f5cf4b06 100644 --- a/SabreTools.DatItems/Disk.cs +++ b/SabreTools.DatItems/Disk.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -422,72 +421,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - - #region Common - - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.MD5)) - MD5 = null; - - if (datItemFields.Contains(DatItemField.SHA1)) - SHA1 = null; - - if (datItemFields.Contains(DatItemField.Merge)) - MergeTag = null; - - if (datItemFields.Contains(DatItemField.Region)) - Region = null; - - if (datItemFields.Contains(DatItemField.Index)) - Index = null; - - if (datItemFields.Contains(DatItemField.Writable)) - Writable = null; - - if (datItemFields.Contains(DatItemField.Status)) - ItemStatus = ItemStatus.NULL; - - if (datItemFields.Contains(DatItemField.Optional)) - Optional = null; - - #endregion - - #region SoftwareList - - if (DiskAreaSpecified) - DiskArea.RemoveFields(datItemFields, machineFields); - - if (PartSpecified) - Part.RemoveFields(datItemFields, machineFields); - - #endregion - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/DiskArea.cs b/SabreTools.DatItems/DiskArea.cs index 7ad97f8d..77a4891a 100644 --- a/SabreTools.DatItems/DiskArea.cs +++ b/SabreTools.DatItems/DiskArea.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -105,33 +104,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.AreaName)) - Name = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Display.cs b/SabreTools.DatItems/Display.cs index 9e6ed9c0..0ea34c73 100644 --- a/SabreTools.DatItems/Display.cs +++ b/SabreTools.DatItems/Display.cs @@ -291,62 +291,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Tag)) - Tag = null; - - if (datItemFields.Contains(DatItemField.DisplayType)) - DisplayType = DisplayType.NULL; - - if (datItemFields.Contains(DatItemField.Rotate)) - Rotate = null; - - if (datItemFields.Contains(DatItemField.FlipX)) - FlipX = null; - - if (datItemFields.Contains(DatItemField.Width)) - Width = null; - - if (datItemFields.Contains(DatItemField.Height)) - Height = null; - - if (datItemFields.Contains(DatItemField.Refresh)) - Refresh = null; - - if (datItemFields.Contains(DatItemField.PixClock)) - PixClock = null; - - if (datItemFields.Contains(DatItemField.HTotal)) - HTotal = null; - - if (datItemFields.Contains(DatItemField.HBEnd)) - HBEnd = null; - - if (datItemFields.Contains(DatItemField.HBStart)) - HBStart = null; - - if (datItemFields.Contains(DatItemField.VTotal)) - VTotal = null; - - if (datItemFields.Contains(DatItemField.VBEnd)) - VBEnd = null; - - if (datItemFields.Contains(DatItemField.VBStart)) - VBStart = null; - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Driver.cs b/SabreTools.DatItems/Driver.cs index 0e304b10..c04d6be3 100644 --- a/SabreTools.DatItems/Driver.cs +++ b/SabreTools.DatItems/Driver.cs @@ -143,32 +143,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.SupportStatus)) - Status = SupportStatus.NULL; - - if (datItemFields.Contains(DatItemField.EmulationStatus)) - Emulation = SupportStatus.NULL; - - if (datItemFields.Contains(DatItemField.CocktailStatus)) - Cocktail = SupportStatus.NULL; - - if (datItemFields.Contains(DatItemField.SaveStateStatus)) - SaveState = Supported.NULL; - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Extension.cs b/SabreTools.DatItems/Extension.cs index 2ba4cb23..b34fba40 100644 --- a/SabreTools.DatItems/Extension.cs +++ b/SabreTools.DatItems/Extension.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -103,33 +102,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Extension_Name)) - Name = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Feature.cs b/SabreTools.DatItems/Feature.cs index ed62fab4..f8e4f60e 100644 --- a/SabreTools.DatItems/Feature.cs +++ b/SabreTools.DatItems/Feature.cs @@ -125,29 +125,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.FeatureType)) - Type = FeatureType.NULL; - - if (datItemFields.Contains(DatItemField.FeatureStatus)) - Status = FeatureStatus.NULL; - - if (datItemFields.Contains(DatItemField.FeatureOverall)) - Overall = FeatureStatus.NULL; - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Info.cs b/SabreTools.DatItems/Info.cs index 4dbf2e22..1f44734c 100644 --- a/SabreTools.DatItems/Info.cs +++ b/SabreTools.DatItems/Info.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -114,36 +113,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Value)) - Value = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Input.cs b/SabreTools.DatItems/Input.cs index 34c25d82..13913960 100644 --- a/SabreTools.DatItems/Input.cs +++ b/SabreTools.DatItems/Input.cs @@ -171,40 +171,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Service)) - Service = null; - - if (datItemFields.Contains(DatItemField.Tilt)) - Tilt = null; - - if (datItemFields.Contains(DatItemField.Players)) - Players = 0; - - if (datItemFields.Contains(DatItemField.Coins)) - Coins = null; - - if (ControlsSpecified) - { - foreach (Control control in Controls) - { - control.RemoveFields(datItemFields, machineFields); - } - } - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Instance.cs b/SabreTools.DatItems/Instance.cs index df898e38..31f09699 100644 --- a/SabreTools.DatItems/Instance.cs +++ b/SabreTools.DatItems/Instance.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -114,36 +113,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Instance_Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Instance_BriefName)) - BriefName = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Location.cs b/SabreTools.DatItems/Location.cs index 1529862c..1056e877 100644 --- a/SabreTools.DatItems/Location.cs +++ b/SabreTools.DatItems/Location.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -134,39 +133,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Location_Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Location_Number)) - Number = null; - - if (datItemFields.Contains(DatItemField.Location_Inverted)) - Inverted = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Media.cs b/SabreTools.DatItems/Media.cs index 3929b54f..20eddee6 100644 --- a/SabreTools.DatItems/Media.cs +++ b/SabreTools.DatItems/Media.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Text; using System.Xml.Serialization; @@ -321,45 +320,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.MD5)) - MD5 = null; - - if (datItemFields.Contains(DatItemField.SHA1)) - SHA1 = null; - - if (datItemFields.Contains(DatItemField.SHA256)) - SHA256 = null; - - if (datItemFields.Contains(DatItemField.SpamSum)) - SpamSum = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Part.cs b/SabreTools.DatItems/Part.cs index 77de5673..d474f354 100644 --- a/SabreTools.DatItems/Part.cs +++ b/SabreTools.DatItems/Part.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -141,44 +140,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Part_Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Part_Interface)) - Interface = null; - - if (FeaturesSpecified) - { - foreach (PartFeature partFeature in Features) - { - partFeature.RemoveFields(datItemFields, machineFields); - } - } - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/PartFeature.cs b/SabreTools.DatItems/PartFeature.cs index c32e3ef7..e4cbd3ef 100644 --- a/SabreTools.DatItems/PartFeature.cs +++ b/SabreTools.DatItems/PartFeature.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -114,36 +113,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Part_Feature_Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Part_Feature_Value)) - Value = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Port.cs b/SabreTools.DatItems/Port.cs index cc9b9b85..410b9a0e 100644 --- a/SabreTools.DatItems/Port.cs +++ b/SabreTools.DatItems/Port.cs @@ -121,31 +121,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Tag)) - Tag = null; - - if (AnalogsSpecified) - { - foreach (Analog analog in Analogs) - { - analog.RemoveFields(datItemFields, machineFields); - } - } - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/RamOption.cs b/SabreTools.DatItems/RamOption.cs index f074481f..5f6c6d64 100644 --- a/SabreTools.DatItems/RamOption.cs +++ b/SabreTools.DatItems/RamOption.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -129,39 +128,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Default)) - Default = null; - - if (datItemFields.Contains(DatItemField.Content)) - Content = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Release.cs b/SabreTools.DatItems/Release.cs index a5638618..9ac8226b 100644 --- a/SabreTools.DatItems/Release.cs +++ b/SabreTools.DatItems/Release.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -159,45 +158,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Region)) - Region = null; - - if (datItemFields.Contains(DatItemField.Language)) - Language = null; - - if (datItemFields.Contains(DatItemField.Date)) - Date = null; - - if (datItemFields.Contains(DatItemField.Default)) - Default = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Rom.cs b/SabreTools.DatItems/Rom.cs index 0df3af7d..4ebe97af 100644 --- a/SabreTools.DatItems/Rom.cs +++ b/SabreTools.DatItems/Rom.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; using System.Text; using System.Xml.Serialization; @@ -795,136 +794,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - - #region Common - - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Bios)) - Bios = null; - - if (datItemFields.Contains(DatItemField.Size)) - Size = 0; - - if (datItemFields.Contains(DatItemField.CRC)) - CRC = null; - - if (datItemFields.Contains(DatItemField.MD5)) - MD5 = null; - -#if NET_FRAMEWORK - if (datItemFields.Contains(DatItemField.RIPEMD160)) - RIPEMD160 = null; -#endif - - if (datItemFields.Contains(DatItemField.SHA1)) - SHA1 = null; - - if (datItemFields.Contains(DatItemField.SHA256)) - SHA256 = null; - - if (datItemFields.Contains(DatItemField.SHA384)) - SHA384 = null; - - if (datItemFields.Contains(DatItemField.SHA512)) - SHA512 = null; - - if (datItemFields.Contains(DatItemField.SpamSum)) - SpamSum = null; - - if (datItemFields.Contains(DatItemField.Merge)) - MergeTag = null; - - if (datItemFields.Contains(DatItemField.Region)) - Region = null; - - if (datItemFields.Contains(DatItemField.Offset)) - Offset = null; - - if (datItemFields.Contains(DatItemField.Date)) - Date = null; - - if (datItemFields.Contains(DatItemField.Status)) - ItemStatus = ItemStatus.NULL; - - if (datItemFields.Contains(DatItemField.Optional)) - Optional = null; - - if (datItemFields.Contains(DatItemField.Inverted)) - Inverted = null; - - #endregion - - #region AttractMode - - if (datItemFields.Contains(DatItemField.AltName)) - AltName = null; - - if (datItemFields.Contains(DatItemField.AltTitle)) - AltTitle = null; - - #endregion - - #region OpenMSX - - if (datItemFields.Contains(DatItemField.Original)) - Original = null; - - if (datItemFields.Contains(DatItemField.OpenMSXSubType)) - OpenMSXSubType = OpenMSXSubType.NULL; - - if (datItemFields.Contains(DatItemField.OpenMSXType)) - OpenMSXType = null; - - if (datItemFields.Contains(DatItemField.Remark)) - Remark = null; - - if (datItemFields.Contains(DatItemField.Boot)) - Boot = null; - - #endregion - - #region SoftwareList - - if (datItemFields.Contains(DatItemField.LoadFlag)) - LoadFlag = LoadFlag.NULL; - - if (datItemFields.Contains(DatItemField.Value)) - Value = null; - - if (DataAreaSpecified) - DataArea.RemoveFields(datItemFields, machineFields); - - if (PartSpecified) - Part.RemoveFields(datItemFields, machineFields); - - #endregion - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Sample.cs b/SabreTools.DatItems/Sample.cs index 5823673a..4a6264e7 100644 --- a/SabreTools.DatItems/Sample.cs +++ b/SabreTools.DatItems/Sample.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -103,33 +102,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Setting.cs b/SabreTools.DatItems/Setting.cs index c397dc80..4d81600b 100644 --- a/SabreTools.DatItems/Setting.cs +++ b/SabreTools.DatItems/Setting.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -163,47 +162,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Setting_Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Setting_Value)) - Value = null; - - if (datItemFields.Contains(DatItemField.Setting_Default)) - Default = null; - - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - condition.RemoveFields(datItemFields, machineFields, true); - } - } - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/SharedFeature.cs b/SabreTools.DatItems/SharedFeature.cs index e7ea4dbb..3805642b 100644 --- a/SabreTools.DatItems/SharedFeature.cs +++ b/SabreTools.DatItems/SharedFeature.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -114,36 +113,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.Value)) - Value = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Slot.cs b/SabreTools.DatItems/Slot.cs index 6ba1b124..e947d3e7 100644 --- a/SabreTools.DatItems/Slot.cs +++ b/SabreTools.DatItems/Slot.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -135,41 +134,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (SlotOptionsSpecified) - { - foreach (SlotOption slotOption in SlotOptions) - { - slotOption.RemoveFields(datItemFields, machineFields); - } - } - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/SlotOption.cs b/SabreTools.DatItems/SlotOption.cs index e1c2918a..5c77891b 100644 --- a/SabreTools.DatItems/SlotOption.cs +++ b/SabreTools.DatItems/SlotOption.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -131,39 +130,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.SlotOption_Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.SlotOption_DeviceName)) - DeviceName = null; - - if (datItemFields.Contains(DatItemField.SlotOption_Default)) - Default = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/SoftwareList.cs b/SabreTools.DatItems/SoftwareList.cs index 05f27ee0..0fcf51ee 100644 --- a/SabreTools.DatItems/SoftwareList.cs +++ b/SabreTools.DatItems/SoftwareList.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; -using System.IO; using System.Linq; using System.Xml.Serialization; @@ -133,39 +132,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Name)) - Name = null; - - if (datItemFields.Contains(DatItemField.SoftwareListStatus)) - Status = SoftwareListStatus.NULL; - - if (datItemFields.Contains(DatItemField.Filter)) - Filter = null; - } - - /// - /// Set internal names to match One Rom Per Game (ORPG) logic - /// - public override void SetOneRomPerGame() - { - string[] splitname = Name.Split('.'); - Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; - Name = Path.GetFileName(Name); - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatItems/Sound.cs b/SabreTools.DatItems/Sound.cs index bf734ce9..e818fb3a 100644 --- a/SabreTools.DatItems/Sound.cs +++ b/SabreTools.DatItems/Sound.cs @@ -94,23 +94,6 @@ namespace SabreTools.DatItems #endregion - #region Filtering - - /// - public override void RemoveFields( - List datItemFields, - List machineFields) - { - // Remove common fields first - base.RemoveFields(datItemFields, machineFields); - - // Remove the fields - if (datItemFields.Contains(DatItemField.Channels)) - Channels = null; - } - - #endregion - #region Sorting and Merging /// diff --git a/SabreTools.DatTools/DatTool.cs b/SabreTools.DatTools/DatFileTool.cs similarity index 99% rename from SabreTools.DatTools/DatTool.cs rename to SabreTools.DatTools/DatFileTool.cs index 21532a7f..7c2c8c52 100644 --- a/SabreTools.DatTools/DatTool.cs +++ b/SabreTools.DatTools/DatFileTool.cs @@ -13,7 +13,7 @@ using SabreTools.Logging; namespace SabreTools.DatTools { // This file represents all methods related to converting and updating DatFiles - public class DatTool + public class DatFileTool { #region Logging @@ -87,7 +87,7 @@ namespace SabreTools.DatTools { DatItem newDatItem = datItem.Clone() as DatItem; if (datFile.Items.ContainsKey(key) && datFile.Items[key].Count() > 0) - Cleaner.ReplaceFields(newDatItem.Machine, datFile.Items[key][0].Machine, machineFields, onlySame); + DatItemTool.ReplaceFields(newDatItem.Machine, datFile.Items[key][0].Machine, machineFields, onlySame); newDatItems.Add(newDatItem); } diff --git a/SabreTools.DatTools/DatItemTool.cs b/SabreTools.DatTools/DatItemTool.cs new file mode 100644 index 00000000..87a08cfc --- /dev/null +++ b/SabreTools.DatTools/DatItemTool.cs @@ -0,0 +1,1377 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; + +using SabreTools.Core; +using SabreTools.Core.Tools; +using SabreTools.DatItems; + +namespace SabreTools.DatTools +{ + /// + /// Manipulate DatItems + /// + /// TODO: Use these instead of the baked in ones + public static class DatItemTool + { + /// + /// Remove fields with given values + /// + /// DatItem to remove fields from + /// DatItem fields to remove + /// Machine fields to remove + /// True if this is a subitem, false otherwise + /// TODO: Extract out setting name to common + public static void RemoveFields( + DatItem datItem, + List datItemFields = null, + List machineFields = null, + bool sub = false) + { + if (datItem == null) + return; + + #region Common + + if (machineFields != null && datItem.Machine != null) + RemoveFields(datItem.Machine, machineFields); + + if (datItemFields == null) + return; + + #endregion + + #region Adjuster + + if (datItem is Adjuster adjuster) + { + if (datItemFields.Contains(DatItemField.Name)) + adjuster.Name = null; + + if (datItemFields.Contains(DatItemField.Default)) + adjuster.Default = null; + + if (adjuster.ConditionsSpecified) + { + foreach (Condition subCondition in adjuster.Conditions) + { + RemoveFields(subCondition, datItemFields, machineFields, true); + } + } + } + + #endregion + + #region Analog + + else if (datItem is Analog analog) + { + if (datItemFields.Contains(DatItemField.Analog_Mask)) + analog.Mask = null; + } + + #endregion + + #region Archive + + else if (datItem is Archive archive) + { + if (datItemFields.Contains(DatItemField.Name)) + archive.Name = null; + } + + #endregion + + #region BiosSet + + else if (datItem is BiosSet biosSet) + { + if (datItemFields.Contains(DatItemField.Name)) + biosSet.Name = null; + + if (datItemFields.Contains(DatItemField.Description)) + biosSet.Description = null; + + if (datItemFields.Contains(DatItemField.Default)) + biosSet.Default = null; + } + + #endregion + + #region Chip + + else if (datItem is Chip chip) + { + if (datItemFields.Contains(DatItemField.Name)) + chip.Name = null; + + if (datItemFields.Contains(DatItemField.Tag)) + chip.Tag = null; + + if (datItemFields.Contains(DatItemField.ChipType)) + chip.ChipType = ChipType.NULL; + + if (datItemFields.Contains(DatItemField.Clock)) + chip.Clock = null; + } + + #endregion + + #region Condition + + else if (datItem is Condition condition) + { + if (sub) + { + if (datItemFields.Contains(DatItemField.Condition_Tag)) + condition.Tag = null; + + if (datItemFields.Contains(DatItemField.Condition_Mask)) + condition.Mask = null; + + if (datItemFields.Contains(DatItemField.Condition_Relation)) + condition.Relation = Relation.NULL; + + if (datItemFields.Contains(DatItemField.Condition_Value)) + condition.Value = null; + } + else + { + if (datItemFields.Contains(DatItemField.Tag)) + condition.Tag = null; + + if (datItemFields.Contains(DatItemField.Mask)) + condition.Mask = null; + + if (datItemFields.Contains(DatItemField.Relation)) + condition.Relation = Relation.NULL; + + if (datItemFields.Contains(DatItemField.Value)) + condition.Value = null; + } + } + + #endregion + + #region Configuration + + else if (datItem is Configuration configuration) + { + // Remove the fields + if (datItemFields.Contains(DatItemField.Name)) + configuration.Name = null; + + if (datItemFields.Contains(DatItemField.Tag)) + configuration.Tag = null; + + if (datItemFields.Contains(DatItemField.Mask)) + configuration.Mask = null; + + if (configuration.ConditionsSpecified) + { + foreach (Condition subCondition in configuration.Conditions) + { + RemoveFields(subCondition, datItemFields, machineFields, true); + } + } + + if (configuration.LocationsSpecified) + { + foreach (Location subLocation in configuration.Locations) + { + RemoveFields(subLocation, datItemFields, machineFields); + } + } + + if (configuration.SettingsSpecified) + { + foreach (Setting subSetting in configuration.Settings) + { + RemoveFields(subSetting, datItemFields, machineFields); + } + } + } + + #endregion + + #region Control + + else if (datItem is Control control) + { + if (datItemFields.Contains(DatItemField.Control_Type)) + control.ControlType = ControlType.NULL; + + if (datItemFields.Contains(DatItemField.Control_Player)) + control.Player = null; + + if (datItemFields.Contains(DatItemField.Control_Buttons)) + control.Buttons = null; + + if (datItemFields.Contains(DatItemField.Control_RequiredButtons)) + control.RequiredButtons = null; + + if (datItemFields.Contains(DatItemField.Control_Minimum)) + control.Minimum = null; + + if (datItemFields.Contains(DatItemField.Control_Maximum)) + control.Maximum = null; + + if (datItemFields.Contains(DatItemField.Control_Sensitivity)) + control.Sensitivity = null; + + if (datItemFields.Contains(DatItemField.Control_KeyDelta)) + control.KeyDelta = null; + + if (datItemFields.Contains(DatItemField.Control_Reverse)) + control.Reverse = null; + + if (datItemFields.Contains(DatItemField.Control_Ways)) + control.Ways = null; + + if (datItemFields.Contains(DatItemField.Control_Ways2)) + control.Ways2 = null; + + if (datItemFields.Contains(DatItemField.Control_Ways3)) + control.Ways3 = null; + } + + #endregion + + #region DataArea + + else if (datItem is DataArea dataArea) + { + if (datItemFields.Contains(DatItemField.AreaName)) + dataArea.Name = null; + + if (datItemFields.Contains(DatItemField.AreaSize)) + dataArea.Size = null; + + if (datItemFields.Contains(DatItemField.AreaWidth)) + dataArea.Width = null; + + if (datItemFields.Contains(DatItemField.AreaEndianness)) + dataArea.Endianness = Endianness.NULL; + } + + #endregion + + #region Device + + else if (datItem is Device device) + { + if (datItemFields.Contains(DatItemField.DeviceType)) + device.DeviceType = DeviceType.NULL; + + if (datItemFields.Contains(DatItemField.Tag)) + device.Tag = null; + + if (datItemFields.Contains(DatItemField.FixedImage)) + device.FixedImage = null; + + if (datItemFields.Contains(DatItemField.Mandatory)) + device.Mandatory = null; + + if (datItemFields.Contains(DatItemField.Interface)) + device.Interface = null; + + if (device.InstancesSpecified) + { + foreach (Instance subInstance in device.Instances) + { + RemoveFields(subInstance, datItemFields, machineFields); + } + } + + if (device.ExtensionsSpecified) + { + foreach (Extension subExtension in device.Extensions) + { + RemoveFields(subExtension, datItemFields, machineFields); + } + } + } + + #endregion + + #region DeviceReference + + else if (datItem is DeviceReference deviceReference) + { + if (datItemFields.Contains(DatItemField.Name)) + deviceReference.Name = null; + } + + #endregion + + #region DipSwitch + + else if (datItem is DipSwitch dipSwitch) + { + #region Common + + if (datItemFields.Contains(DatItemField.Name)) + dipSwitch.Name = null; + + if (datItemFields.Contains(DatItemField.Tag)) + dipSwitch.Tag = null; + + if (datItemFields.Contains(DatItemField.Mask)) + dipSwitch.Mask = null; + + if (dipSwitch.ConditionsSpecified) + { + foreach (Condition subCondition in dipSwitch.Conditions) + { + RemoveFields(subCondition, datItemFields, machineFields, true); + } + } + + if (dipSwitch.LocationsSpecified) + { + foreach (Location subLocation in dipSwitch.Locations) + { + RemoveFields(subLocation, datItemFields, machineFields); + } + } + + if (dipSwitch.ValuesSpecified) + { + foreach (Setting subValue in dipSwitch.Values) + { + RemoveFields(subValue, datItemFields, machineFields); + } + } + + #endregion + + #region SoftwareList + + if (dipSwitch.PartSpecified) + RemoveFields(dipSwitch.Part, datItemFields, machineFields); + + #endregion + } + + #endregion + + #region Disk + + else if (datItem is Disk disk) + { + #region Common + + if (datItemFields.Contains(DatItemField.Name)) + disk.Name = null; + + if (datItemFields.Contains(DatItemField.MD5)) + disk.MD5 = null; + + if (datItemFields.Contains(DatItemField.SHA1)) + disk.SHA1 = null; + + if (datItemFields.Contains(DatItemField.Merge)) + disk.MergeTag = null; + + if (datItemFields.Contains(DatItemField.Region)) + disk.Region = null; + + if (datItemFields.Contains(DatItemField.Index)) + disk.Index = null; + + if (datItemFields.Contains(DatItemField.Writable)) + disk.Writable = null; + + if (datItemFields.Contains(DatItemField.Status)) + disk.ItemStatus = ItemStatus.NULL; + + if (datItemFields.Contains(DatItemField.Optional)) + disk.Optional = null; + + #endregion + + #region SoftwareList + + if (disk.DiskAreaSpecified) + RemoveFields(disk.DiskArea, datItemFields, machineFields); + + if (disk.PartSpecified) + RemoveFields(disk.Part, datItemFields, machineFields); + + #endregion + } + + #endregion + + #region DiskArea + + else if (datItem is DiskArea diskArea) + { + if (datItemFields.Contains(DatItemField.AreaName)) + diskArea.Name = null; + } + + #endregion + + #region Display + + else if (datItem is Display display) + { + if (datItemFields.Contains(DatItemField.Tag)) + display.Tag = null; + + if (datItemFields.Contains(DatItemField.DisplayType)) + display.DisplayType = DisplayType.NULL; + + if (datItemFields.Contains(DatItemField.Rotate)) + display.Rotate = null; + + if (datItemFields.Contains(DatItemField.FlipX)) + display.FlipX = null; + + if (datItemFields.Contains(DatItemField.Width)) + display.Width = null; + + if (datItemFields.Contains(DatItemField.Height)) + display.Height = null; + + if (datItemFields.Contains(DatItemField.Refresh)) + display.Refresh = null; + + if (datItemFields.Contains(DatItemField.PixClock)) + display.PixClock = null; + + if (datItemFields.Contains(DatItemField.HTotal)) + display.HTotal = null; + + if (datItemFields.Contains(DatItemField.HBEnd)) + display.HBEnd = null; + + if (datItemFields.Contains(DatItemField.HBStart)) + display.HBStart = null; + + if (datItemFields.Contains(DatItemField.VTotal)) + display.VTotal = null; + + if (datItemFields.Contains(DatItemField.VBEnd)) + display.VBEnd = null; + + if (datItemFields.Contains(DatItemField.VBStart)) + display.VBStart = null; + } + + #endregion + + #region Driver + + else if (datItem is Driver driver) + { + if (datItemFields.Contains(DatItemField.SupportStatus)) + driver.Status = SupportStatus.NULL; + + if (datItemFields.Contains(DatItemField.EmulationStatus)) + driver.Emulation = SupportStatus.NULL; + + if (datItemFields.Contains(DatItemField.CocktailStatus)) + driver.Cocktail = SupportStatus.NULL; + + if (datItemFields.Contains(DatItemField.SaveStateStatus)) + driver.SaveState = Supported.NULL; + } + + #endregion + + #region Extension + + else if (datItem is Extension extension) + { + if (datItemFields.Contains(DatItemField.Extension_Name)) + extension.Name = null; + } + + #endregion + + #region Feature + + else if (datItem is Feature feature) + { + if (datItemFields.Contains(DatItemField.FeatureType)) + feature.Type = FeatureType.NULL; + + if (datItemFields.Contains(DatItemField.FeatureStatus)) + feature.Status = FeatureStatus.NULL; + + if (datItemFields.Contains(DatItemField.FeatureOverall)) + feature.Overall = FeatureStatus.NULL; + } + + #endregion + + #region Info + + else if (datItem is Info info) + { + if (datItemFields.Contains(DatItemField.Name)) + info.Name = null; + + if (datItemFields.Contains(DatItemField.Value)) + info.Value = null; + } + + #endregion + + #region Input + + else if (datItem is Input input) + { + if (datItemFields.Contains(DatItemField.Service)) + input.Service = null; + + if (datItemFields.Contains(DatItemField.Tilt)) + input.Tilt = null; + + if (datItemFields.Contains(DatItemField.Players)) + input.Players = 0; + + if (datItemFields.Contains(DatItemField.Coins)) + input.Coins = null; + + if (input.ControlsSpecified) + { + foreach (Control subControl in input.Controls) + { + RemoveFields(subControl, datItemFields, machineFields); + } + } + } + + #endregion + + #region Instance + + else if (datItem is Instance instance) + { + if (datItemFields.Contains(DatItemField.Instance_Name)) + instance.Name = null; + + if (datItemFields.Contains(DatItemField.Instance_BriefName)) + instance.BriefName = null; + } + + #endregion + + #region Location + + else if (datItem is Location location) + { + if (datItemFields.Contains(DatItemField.Location_Name)) + location.Name = null; + + if (datItemFields.Contains(DatItemField.Location_Number)) + location.Number = null; + + if (datItemFields.Contains(DatItemField.Location_Inverted)) + location.Inverted = null; + } + + #endregion + + #region Media + + else if (datItem is Media media) + { + if (datItemFields.Contains(DatItemField.Name)) + media.Name = null; + + if (datItemFields.Contains(DatItemField.MD5)) + media.MD5 = null; + + if (datItemFields.Contains(DatItemField.SHA1)) + media.SHA1 = null; + + if (datItemFields.Contains(DatItemField.SHA256)) + media.SHA256 = null; + + if (datItemFields.Contains(DatItemField.SpamSum)) + media.SpamSum = null; + } + + #endregion + + #region Part + + else if (datItem is Part part) + { + if (datItemFields.Contains(DatItemField.Part_Name)) + part.Name = null; + + if (datItemFields.Contains(DatItemField.Part_Interface)) + part.Interface = null; + + if (part.FeaturesSpecified) + { + foreach (PartFeature subPartFeature in part.Features) + { + RemoveFields(subPartFeature, datItemFields, machineFields); + } + } + } + + #endregion + + #region PartFeature + + else if (datItem is PartFeature partFeature) + { + if (datItemFields.Contains(DatItemField.Part_Feature_Name)) + partFeature.Name = null; + + if (datItemFields.Contains(DatItemField.Part_Feature_Value)) + partFeature.Value = null; + } + + #endregion + + #region Port + + else if (datItem is Port port) + { + if (datItemFields.Contains(DatItemField.Tag)) + port.Tag = null; + + if (port.AnalogsSpecified) + { + foreach (Analog subAnalog in port.Analogs) + { + RemoveFields(subAnalog, datItemFields, machineFields); + } + } + } + + #endregion + + #region RamOption + + else if (datItem is RamOption ramOption) + { + if (datItemFields.Contains(DatItemField.Name)) + ramOption.Name = null; + + if (datItemFields.Contains(DatItemField.Default)) + ramOption.Default = null; + + if (datItemFields.Contains(DatItemField.Content)) + ramOption.Content = null; + } + + #endregion + + #region Release + + else if (datItem is Release release) + { + if (datItemFields.Contains(DatItemField.Name)) + release.Name = null; + + if (datItemFields.Contains(DatItemField.Region)) + release.Region = null; + + if (datItemFields.Contains(DatItemField.Language)) + release.Language = null; + + if (datItemFields.Contains(DatItemField.Date)) + release.Date = null; + + if (datItemFields.Contains(DatItemField.Default)) + release.Default = null; + } + + #endregion + + #region Rom + + else if (datItem is Rom rom) + { + #region Common + + if (datItemFields.Contains(DatItemField.Name)) + rom.Name = null; + + if (datItemFields.Contains(DatItemField.Bios)) + rom.Bios = null; + + if (datItemFields.Contains(DatItemField.Size)) + rom.Size = 0; + + if (datItemFields.Contains(DatItemField.CRC)) + rom.CRC = null; + + if (datItemFields.Contains(DatItemField.MD5)) + rom.MD5 = null; + + #if NET_FRAMEWORK + if (datItemFields.Contains(DatItemField.RIPEMD160)) + rom.RIPEMD160 = null; + #endif + + if (datItemFields.Contains(DatItemField.SHA1)) + rom.SHA1 = null; + + if (datItemFields.Contains(DatItemField.SHA256)) + rom.SHA256 = null; + + if (datItemFields.Contains(DatItemField.SHA384)) + rom.SHA384 = null; + + if (datItemFields.Contains(DatItemField.SHA512)) + rom.SHA512 = null; + + if (datItemFields.Contains(DatItemField.SpamSum)) + rom.SpamSum = null; + + if (datItemFields.Contains(DatItemField.Merge)) + rom.MergeTag = null; + + if (datItemFields.Contains(DatItemField.Region)) + rom.Region = null; + + if (datItemFields.Contains(DatItemField.Offset)) + rom.Offset = null; + + if (datItemFields.Contains(DatItemField.Date)) + rom.Date = null; + + if (datItemFields.Contains(DatItemField.Status)) + rom.ItemStatus = ItemStatus.NULL; + + if (datItemFields.Contains(DatItemField.Optional)) + rom.Optional = null; + + if (datItemFields.Contains(DatItemField.Inverted)) + rom.Inverted = null; + + #endregion + + #region AttractMode + + if (datItemFields.Contains(DatItemField.AltName)) + rom.AltName = null; + + if (datItemFields.Contains(DatItemField.AltTitle)) + rom.AltTitle = null; + + #endregion + + #region OpenMSX + + if (datItemFields.Contains(DatItemField.Original)) + rom.Original = null; + + if (datItemFields.Contains(DatItemField.OpenMSXSubType)) + rom.OpenMSXSubType = OpenMSXSubType.NULL; + + if (datItemFields.Contains(DatItemField.OpenMSXType)) + rom.OpenMSXType = null; + + if (datItemFields.Contains(DatItemField.Remark)) + rom.Remark = null; + + if (datItemFields.Contains(DatItemField.Boot)) + rom.Boot = null; + + #endregion + + #region SoftwareList + + if (datItemFields.Contains(DatItemField.LoadFlag)) + rom.LoadFlag = LoadFlag.NULL; + + if (datItemFields.Contains(DatItemField.Value)) + rom.Value = null; + + if (rom.DataAreaSpecified) + RemoveFields(rom.DataArea, datItemFields, machineFields); + + if (rom.PartSpecified) + RemoveFields(rom.Part, datItemFields, machineFields); + + #endregion + } + + #endregion + + #region Sample + + else if (datItem is Sample sample) + { + if (datItemFields.Contains(DatItemField.Name)) + sample.Name = null; + } + + #endregion + + #region Setting + + else if (datItem is Setting setting) + { + if (datItemFields.Contains(DatItemField.Setting_Name)) + setting.Name = null; + + if (datItemFields.Contains(DatItemField.Setting_Value)) + setting.Value = null; + + if (datItemFields.Contains(DatItemField.Setting_Default)) + setting.Default = null; + + if (setting.ConditionsSpecified) + { + foreach (Condition subCondition in setting.Conditions) + { + RemoveFields(subCondition, datItemFields, machineFields, true); + } + } + } + + #endregion + + #region SharedFeature + + else if (datItem is SharedFeature sharedFeature) + { + if (datItemFields.Contains(DatItemField.Name)) + sharedFeature.Name = null; + + if (datItemFields.Contains(DatItemField.Value)) + sharedFeature.Value = null; + } + + #endregion + + #region Slot + + else if (datItem is Slot slot) + { + if (datItemFields.Contains(DatItemField.Name)) + slot.Name = null; + + if (slot.SlotOptionsSpecified) + { + foreach (SlotOption subSlotOption in slot.SlotOptions) + { + RemoveFields(subSlotOption, datItemFields, machineFields); + } + } + } + + #endregion + + #region SlotOption + + else if (datItem is SlotOption slotOption) + { + if (datItemFields.Contains(DatItemField.SlotOption_Name)) + slotOption.Name = null; + + if (datItemFields.Contains(DatItemField.SlotOption_DeviceName)) + slotOption.DeviceName = null; + + if (datItemFields.Contains(DatItemField.SlotOption_Default)) + slotOption.Default = null; + } + + #endregion + + #region SoftwareList + + else if (datItem is SoftwareList softwareList) + { + if (datItemFields.Contains(DatItemField.Name)) + softwareList.Name = null; + + if (datItemFields.Contains(DatItemField.SoftwareListStatus)) + softwareList.Status = SoftwareListStatus.NULL; + + if (datItemFields.Contains(DatItemField.Filter)) + softwareList.Filter = null; + } + + #endregion + + #region Sound + + else if (datItem is Sound sound) + { + if (datItemFields.Contains(DatItemField.Channels)) + sound.Channels = null; + } + + #endregion + } + + /// + /// Remove fields with given values + /// + /// Machine to remove fields from + /// List of fields to remove + public static void RemoveFields(Machine machine, List fields) + { + #region Common + + if (fields.Contains(MachineField.Name)) + machine.Name = null; + + if (fields.Contains(MachineField.Comment)) + machine.Comment = null; + + if (fields.Contains(MachineField.Description)) + machine.Description = null; + + if (fields.Contains(MachineField.Year)) + machine.Year = null; + + if (fields.Contains(MachineField.Manufacturer)) + machine.Manufacturer = null; + + if (fields.Contains(MachineField.Publisher)) + machine.Publisher = null; + + if (fields.Contains(MachineField.Category)) + machine.Category = null; + + if (fields.Contains(MachineField.RomOf)) + machine.RomOf = null; + + if (fields.Contains(MachineField.CloneOf)) + machine.CloneOf = null; + + if (fields.Contains(MachineField.SampleOf)) + machine.SampleOf = null; + + if (fields.Contains(MachineField.Type)) + machine.MachineType = 0x0; + + #endregion + + #region AttractMode + + if (fields.Contains(MachineField.Players)) + machine.Players = null; + + if (fields.Contains(MachineField.Rotation)) + machine.Rotation = null; + + if (fields.Contains(MachineField.Control)) + machine.Control = null; + + if (fields.Contains(MachineField.Status)) + machine.Status = null; + + if (fields.Contains(MachineField.DisplayCount)) + machine.DisplayCount = null; + + if (fields.Contains(MachineField.DisplayType)) + machine.DisplayType = null; + + if (fields.Contains(MachineField.Buttons)) + machine.Buttons = null; + + #endregion + + #region ListXML + + if (fields.Contains(MachineField.SourceFile)) + machine.SourceFile = null; + + if (fields.Contains(MachineField.Runnable)) + machine.Runnable = Runnable.NULL; + + #endregion + + #region Logiqx + + if (fields.Contains(MachineField.Board)) + machine.Board = null; + + if (fields.Contains(MachineField.RebuildTo)) + machine.RebuildTo = null; + + #endregion + + #region Logiqx EmuArc + + if (fields.Contains(MachineField.TitleID)) + machine.TitleID = null; + + if (fields.Contains(MachineField.Developer)) + machine.Developer = null; + + if (fields.Contains(MachineField.Genre)) + machine.Genre = null; + + if (fields.Contains(MachineField.Subgenre)) + machine.Subgenre = null; + + if (fields.Contains(MachineField.Ratings)) + machine.Ratings = null; + + if (fields.Contains(MachineField.Score)) + machine.Score = null; + + if (fields.Contains(MachineField.Enabled)) + machine.Enabled = null; + + if (fields.Contains(MachineField.CRC)) + machine.Crc = null; + + if (fields.Contains(MachineField.RelatedTo)) + machine.RelatedTo = null; + + #endregion + + #region OpenMSX + + if (fields.Contains(MachineField.GenMSXID)) + machine.GenMSXID = null; + + if (fields.Contains(MachineField.System)) + machine.System = null; + + if (fields.Contains(MachineField.Country)) + machine.Country = null; + + #endregion + + #region SoftwareList + + if (fields.Contains(MachineField.Supported)) + machine.Supported = Supported.NULL; + + #endregion + } + + /// + /// Replace fields with given values + /// + /// 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) + { + + } + + /// + /// Replace fields with given values + /// + /// Machine to replace fields in + /// Machine to pull new information from + /// 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) + { + #region Common + + if (fields.Contains(MachineField.Name)) + machine.Name = repMachine.Name; + + if (fields.Contains(MachineField.Comment)) + machine.Comment = repMachine.Comment; + + if (fields.Contains(MachineField.Description)) + { + if (!onlySame || (onlySame && machine.Name == machine.Description)) + machine.Description = repMachine.Description; + } + + if (fields.Contains(MachineField.Year)) + machine.Year = repMachine.Year; + + if (fields.Contains(MachineField.Manufacturer)) + machine.Manufacturer = repMachine.Manufacturer; + + if (fields.Contains(MachineField.Publisher)) + machine.Publisher = repMachine.Publisher; + + if (fields.Contains(MachineField.Category)) + machine.Category = repMachine.Category; + + if (fields.Contains(MachineField.RomOf)) + machine.RomOf = repMachine.RomOf; + + if (fields.Contains(MachineField.CloneOf)) + machine.CloneOf = repMachine.CloneOf; + + if (fields.Contains(MachineField.SampleOf)) + machine.SampleOf = repMachine.SampleOf; + + if (fields.Contains(MachineField.Type)) + machine.MachineType = repMachine.MachineType; + + #endregion + + #region AttractMode + + if (fields.Contains(MachineField.Players)) + machine.Players = repMachine.Players; + + if (fields.Contains(MachineField.Rotation)) + machine.Rotation = repMachine.Rotation; + + if (fields.Contains(MachineField.Control)) + machine.Control = repMachine.Control; + + if (fields.Contains(MachineField.Status)) + machine.Status = repMachine.Status; + + if (fields.Contains(MachineField.DisplayCount)) + machine.DisplayCount = repMachine.DisplayCount; + + if (fields.Contains(MachineField.DisplayType)) + machine.DisplayType = repMachine.DisplayType; + + if (fields.Contains(MachineField.Buttons)) + machine.Buttons = repMachine.Buttons; + + #endregion + + #region ListXML + + if (fields.Contains(MachineField.SourceFile)) + machine.SourceFile = repMachine.SourceFile; + + if (fields.Contains(MachineField.Runnable)) + machine.Runnable = repMachine.Runnable; + + #endregion + + #region Logiqx + + if (fields.Contains(MachineField.Board)) + machine.Board = repMachine.Board; + + if (fields.Contains(MachineField.RebuildTo)) + machine.RebuildTo = repMachine.RebuildTo; + + #endregion + + #region Logiqx EmuArc + + if (fields.Contains(MachineField.TitleID)) + machine.TitleID = repMachine.TitleID; + + if (fields.Contains(MachineField.Developer)) + machine.Developer = repMachine.Developer; + + if (fields.Contains(MachineField.Genre)) + machine.Genre = repMachine.Genre; + + if (fields.Contains(MachineField.Subgenre)) + machine.Subgenre = repMachine.Subgenre; + + if (fields.Contains(MachineField.Ratings)) + machine.Ratings = repMachine.Ratings; + + if (fields.Contains(MachineField.Score)) + machine.Score = repMachine.Score; + + if (fields.Contains(MachineField.Enabled)) + machine.Enabled = repMachine.Enabled; + + if (fields.Contains(MachineField.CRC)) + machine.Crc = repMachine.Crc; + + if (fields.Contains(MachineField.RelatedTo)) + machine.RelatedTo = repMachine.RelatedTo; + + #endregion + + #region OpenMSX + + if (fields.Contains(MachineField.GenMSXID)) + machine.GenMSXID = repMachine.GenMSXID; + + if (fields.Contains(MachineField.System)) + machine.System = repMachine.System; + + if (fields.Contains(MachineField.Country)) + machine.Country = repMachine.Country; + + #endregion + + #region SoftwareList + + if (fields.Contains(MachineField.Supported)) + machine.Supported = repMachine.Supported; + + #endregion + } + + /// + /// Set fields with given values + /// + /// DatItem to set fields on + /// Mappings dictionary + public static void SetFields(DatItem datItem, Dictionary mappings) + { + + } + + /// + /// Set fields with given values + /// + /// Machine to set fields on + /// Mappings dictionary + public static void SetFields(Machine machine, Dictionary mappings) + { + if (machine == null || mappings == null) + return; + + #region Common + + if (mappings.Keys.Contains(MachineField.Name)) + machine.Name = mappings[MachineField.Name]; + + if (mappings.Keys.Contains(MachineField.Comment)) + machine.Comment = mappings[MachineField.Comment]; + + if (mappings.Keys.Contains(MachineField.Description)) + machine.Description = mappings[MachineField.Description]; + + if (mappings.Keys.Contains(MachineField.Year)) + machine.Year = mappings[MachineField.Year]; + + if (mappings.Keys.Contains(MachineField.Manufacturer)) + machine.Manufacturer = mappings[MachineField.Manufacturer]; + + if (mappings.Keys.Contains(MachineField.Publisher)) + machine.Publisher = mappings[MachineField.Publisher]; + + if (mappings.Keys.Contains(MachineField.Category)) + machine.Category = mappings[MachineField.Category]; + + if (mappings.Keys.Contains(MachineField.RomOf)) + machine.RomOf = mappings[MachineField.RomOf]; + + if (mappings.Keys.Contains(MachineField.CloneOf)) + machine.CloneOf = mappings[MachineField.CloneOf]; + + if (mappings.Keys.Contains(MachineField.SampleOf)) + machine.SampleOf = mappings[MachineField.SampleOf]; + + if (mappings.Keys.Contains(MachineField.Type)) + machine.MachineType = mappings[MachineField.Type].AsMachineType(); + + #endregion + + #region AttractMode + + if (mappings.Keys.Contains(MachineField.Players)) + machine.Players = mappings[MachineField.Players]; + + if (mappings.Keys.Contains(MachineField.Rotation)) + machine.Rotation = mappings[MachineField.Rotation]; + + if (mappings.Keys.Contains(MachineField.Control)) + machine.Control = mappings[MachineField.Control]; + + if (mappings.Keys.Contains(MachineField.Status)) + machine.Status = mappings[MachineField.Status]; + + if (mappings.Keys.Contains(MachineField.DisplayCount)) + machine.DisplayCount = mappings[MachineField.DisplayCount]; + + if (mappings.Keys.Contains(MachineField.DisplayType)) + machine.DisplayType = mappings[MachineField.DisplayType]; + + if (mappings.Keys.Contains(MachineField.Buttons)) + machine.Buttons = mappings[MachineField.Buttons]; + + #endregion + + #region ListXML + + if (mappings.Keys.Contains(MachineField.SourceFile)) + machine.SourceFile = mappings[MachineField.SourceFile]; + + if (mappings.Keys.Contains(MachineField.Runnable)) + machine.Runnable = mappings[MachineField.Runnable].AsRunnable(); + + #endregion + + #region Logiqx + + if (mappings.Keys.Contains(MachineField.Board)) + machine.Board = mappings[MachineField.Board]; + + if (mappings.Keys.Contains(MachineField.RebuildTo)) + machine.RebuildTo = mappings[MachineField.RebuildTo]; + + #endregion + + #region Logiqx EmuArc + + if (mappings.Keys.Contains(MachineField.TitleID)) + machine.TitleID = mappings[MachineField.TitleID]; + + if (mappings.Keys.Contains(MachineField.Developer)) + machine.Developer = mappings[MachineField.Developer]; + + if (mappings.Keys.Contains(MachineField.Genre)) + machine.Genre = mappings[MachineField.Genre]; + + if (mappings.Keys.Contains(MachineField.Subgenre)) + machine.Subgenre = mappings[MachineField.Subgenre]; + + if (mappings.Keys.Contains(MachineField.Ratings)) + machine.Ratings = mappings[MachineField.Ratings]; + + if (mappings.Keys.Contains(MachineField.Score)) + machine.Score = mappings[MachineField.Score]; + + if (mappings.Keys.Contains(MachineField.Enabled)) + machine.Enabled = mappings[MachineField.Enabled]; + + if (mappings.Keys.Contains(MachineField.CRC)) + machine.Crc = mappings[MachineField.CRC].AsYesNo(); + + if (mappings.Keys.Contains(MachineField.RelatedTo)) + machine.RelatedTo = mappings[MachineField.RelatedTo]; + + #endregion + + #region OpenMSX + + if (mappings.Keys.Contains(MachineField.GenMSXID)) + machine.GenMSXID = mappings[MachineField.GenMSXID]; + + if (mappings.Keys.Contains(MachineField.System)) + machine.System = mappings[MachineField.System]; + + if (mappings.Keys.Contains(MachineField.Country)) + machine.Country = mappings[MachineField.Country]; + + #endregion + + #region SoftwareList + + if (mappings.Keys.Contains(MachineField.Supported)) + machine.Supported = mappings[MachineField.Supported].AsSupported(); + + #endregion + } + + /// + /// Set internal names to match One Rom Per Game (ORPG) logic + /// + /// DatItem to run logic on + public static void SetOneRomPerGame(DatItem datItem) + { + if (datItem.GetName() == null) + return; + + string[] splitname = datItem.GetName().Split('.'); + datItem.Machine.Name += $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}"; + datItem.SetName(Path.GetFileName(datItem.GetName())); + } + } +} \ No newline at end of file diff --git a/SabreTools.DatTools/Modification.cs b/SabreTools.DatTools/Modification.cs index b3572523..7b01fcc3 100644 --- a/SabreTools.DatTools/Modification.cs +++ b/SabreTools.DatTools/Modification.cs @@ -146,7 +146,7 @@ namespace SabreTools.DatTools foreach (var datItem in datItems) { - Cleaner.SetFields(datItem.Machine, mappings); + DatItemTool.SetFields(datItem.Machine, mappings); } } @@ -493,7 +493,7 @@ namespace SabreTools.DatTools List items = datFile.Items[key]; for (int i = 0; i < items.Count; i++) { - items[i].SetOneRomPerGame(); + DatItemTool.SetOneRomPerGame(items[i]); } }); } @@ -524,8 +524,7 @@ namespace SabreTools.DatTools List items = datFile.Items[key]; for (int j = 0; j < items.Count; j++) { - items[j].RemoveFields(datItemFields, null); - Cleaner.RemoveFields(items[j].Machine, machineFields); + DatItemTool.RemoveFields(items[j], datItemFields, machineFields); } datFile.Items.Remove(key); diff --git a/SabreTools.Filtering/Cleaner.cs b/SabreTools.Filtering/Cleaner.cs index 2dea6469..095df606 100644 --- a/SabreTools.Filtering/Cleaner.cs +++ b/SabreTools.Filtering/Cleaner.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Text.RegularExpressions; using SabreTools.Core; -using SabreTools.Core.Tools; using SabreTools.DatItems; namespace SabreTools.Filtering @@ -327,474 +326,6 @@ namespace SabreTools.Filtering return input; } - #endregion - - // TODO: Use these instead of the baked in ones - // TODO: Move to new class? - #region Field Manipulation - - /// - /// Remove fields with given values - /// - /// DatItem to remove fields from - /// List of fields to remove - public static void RemoveFields(DatItem datItem, List fields) - { - - } - - /// - /// Remove fields with given values - /// - /// Machine to remove fields from - /// List of fields to remove - public static void RemoveFields(Machine machine, List fields) - { - #region Common - - if (fields.Contains(MachineField.Name)) - machine.Name = null; - - if (fields.Contains(MachineField.Comment)) - machine.Comment = null; - - if (fields.Contains(MachineField.Description)) - machine.Description = null; - - if (fields.Contains(MachineField.Year)) - machine.Year = null; - - if (fields.Contains(MachineField.Manufacturer)) - machine.Manufacturer = null; - - if (fields.Contains(MachineField.Publisher)) - machine.Publisher = null; - - if (fields.Contains(MachineField.Category)) - machine.Category = null; - - if (fields.Contains(MachineField.RomOf)) - machine.RomOf = null; - - if (fields.Contains(MachineField.CloneOf)) - machine.CloneOf = null; - - if (fields.Contains(MachineField.SampleOf)) - machine.SampleOf = null; - - if (fields.Contains(MachineField.Type)) - machine.MachineType = 0x0; - - #endregion - - #region AttractMode - - if (fields.Contains(MachineField.Players)) - machine.Players = null; - - if (fields.Contains(MachineField.Rotation)) - machine.Rotation = null; - - if (fields.Contains(MachineField.Control)) - machine.Control = null; - - if (fields.Contains(MachineField.Status)) - machine.Status = null; - - if (fields.Contains(MachineField.DisplayCount)) - machine.DisplayCount = null; - - if (fields.Contains(MachineField.DisplayType)) - machine.DisplayType = null; - - if (fields.Contains(MachineField.Buttons)) - machine.Buttons = null; - - #endregion - - #region ListXML - - if (fields.Contains(MachineField.SourceFile)) - machine.SourceFile = null; - - if (fields.Contains(MachineField.Runnable)) - machine.Runnable = Runnable.NULL; - - #endregion - - #region Logiqx - - if (fields.Contains(MachineField.Board)) - machine.Board = null; - - if (fields.Contains(MachineField.RebuildTo)) - machine.RebuildTo = null; - - #endregion - - #region Logiqx EmuArc - - if (fields.Contains(MachineField.TitleID)) - machine.TitleID = null; - - if (fields.Contains(MachineField.Developer)) - machine.Developer = null; - - if (fields.Contains(MachineField.Genre)) - machine.Genre = null; - - if (fields.Contains(MachineField.Subgenre)) - machine.Subgenre = null; - - if (fields.Contains(MachineField.Ratings)) - machine.Ratings = null; - - if (fields.Contains(MachineField.Score)) - machine.Score = null; - - if (fields.Contains(MachineField.Enabled)) - machine.Enabled = null; - - if (fields.Contains(MachineField.CRC)) - machine.Crc = null; - - if (fields.Contains(MachineField.RelatedTo)) - machine.RelatedTo = null; - - #endregion - - #region OpenMSX - - if (fields.Contains(MachineField.GenMSXID)) - machine.GenMSXID = null; - - if (fields.Contains(MachineField.System)) - machine.System = null; - - if (fields.Contains(MachineField.Country)) - machine.Country = null; - - #endregion - - #region SoftwareList - - if (fields.Contains(MachineField.Supported)) - machine.Supported = Supported.NULL; - - #endregion - } - - /// - /// Replace fields with given values - /// - /// 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) - { - - } - - /// - /// Replace fields with given values - /// - /// Machine to replace fields in - /// Machine to pull new information from - /// 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) - { - #region Common - - if (fields.Contains(MachineField.Name)) - machine.Name = repMachine.Name; - - if (fields.Contains(MachineField.Comment)) - machine.Comment = repMachine.Comment; - - if (fields.Contains(MachineField.Description)) - { - if (!onlySame || (onlySame && machine.Name == machine.Description)) - machine.Description = repMachine.Description; - } - - if (fields.Contains(MachineField.Year)) - machine.Year = repMachine.Year; - - if (fields.Contains(MachineField.Manufacturer)) - machine.Manufacturer = repMachine.Manufacturer; - - if (fields.Contains(MachineField.Publisher)) - machine.Publisher = repMachine.Publisher; - - if (fields.Contains(MachineField.Category)) - machine.Category = repMachine.Category; - - if (fields.Contains(MachineField.RomOf)) - machine.RomOf = repMachine.RomOf; - - if (fields.Contains(MachineField.CloneOf)) - machine.CloneOf = repMachine.CloneOf; - - if (fields.Contains(MachineField.SampleOf)) - machine.SampleOf = repMachine.SampleOf; - - if (fields.Contains(MachineField.Type)) - machine.MachineType = repMachine.MachineType; - - #endregion - - #region AttractMode - - if (fields.Contains(MachineField.Players)) - machine.Players = repMachine.Players; - - if (fields.Contains(MachineField.Rotation)) - machine.Rotation = repMachine.Rotation; - - if (fields.Contains(MachineField.Control)) - machine.Control = repMachine.Control; - - if (fields.Contains(MachineField.Status)) - machine.Status = repMachine.Status; - - if (fields.Contains(MachineField.DisplayCount)) - machine.DisplayCount = repMachine.DisplayCount; - - if (fields.Contains(MachineField.DisplayType)) - machine.DisplayType = repMachine.DisplayType; - - if (fields.Contains(MachineField.Buttons)) - machine.Buttons = repMachine.Buttons; - - #endregion - - #region ListXML - - if (fields.Contains(MachineField.SourceFile)) - machine.SourceFile = repMachine.SourceFile; - - if (fields.Contains(MachineField.Runnable)) - machine.Runnable = repMachine.Runnable; - - #endregion - - #region Logiqx - - if (fields.Contains(MachineField.Board)) - machine.Board = repMachine.Board; - - if (fields.Contains(MachineField.RebuildTo)) - machine.RebuildTo = repMachine.RebuildTo; - - #endregion - - #region Logiqx EmuArc - - if (fields.Contains(MachineField.TitleID)) - machine.TitleID = repMachine.TitleID; - - if (fields.Contains(MachineField.Developer)) - machine.Developer = repMachine.Developer; - - if (fields.Contains(MachineField.Genre)) - machine.Genre = repMachine.Genre; - - if (fields.Contains(MachineField.Subgenre)) - machine.Subgenre = repMachine.Subgenre; - - if (fields.Contains(MachineField.Ratings)) - machine.Ratings = repMachine.Ratings; - - if (fields.Contains(MachineField.Score)) - machine.Score = repMachine.Score; - - if (fields.Contains(MachineField.Enabled)) - machine.Enabled = repMachine.Enabled; - - if (fields.Contains(MachineField.CRC)) - machine.Crc = repMachine.Crc; - - if (fields.Contains(MachineField.RelatedTo)) - machine.RelatedTo = repMachine.RelatedTo; - - #endregion - - #region OpenMSX - - if (fields.Contains(MachineField.GenMSXID)) - machine.GenMSXID = repMachine.GenMSXID; - - if (fields.Contains(MachineField.System)) - machine.System = repMachine.System; - - if (fields.Contains(MachineField.Country)) - machine.Country = repMachine.Country; - - #endregion - - #region SoftwareList - - if (fields.Contains(MachineField.Supported)) - machine.Supported = repMachine.Supported; - - #endregion - } - - /// - /// Set fields with given values - /// - /// DatItem to set fields on - /// Mappings dictionary - public static void SetFields(DatItem datItem, Dictionary mappings) - { - - } - - /// - /// Set fields with given values - /// - /// Machine to set fields on - /// Mappings dictionary - public static void SetFields(Machine machine, Dictionary mappings) - { - if (machine == null || mappings == null) - return; - - #region Common - - if (mappings.Keys.Contains(MachineField.Name)) - machine.Name = mappings[MachineField.Name]; - - if (mappings.Keys.Contains(MachineField.Comment)) - machine.Comment = mappings[MachineField.Comment]; - - if (mappings.Keys.Contains(MachineField.Description)) - machine.Description = mappings[MachineField.Description]; - - if (mappings.Keys.Contains(MachineField.Year)) - machine.Year = mappings[MachineField.Year]; - - if (mappings.Keys.Contains(MachineField.Manufacturer)) - machine.Manufacturer = mappings[MachineField.Manufacturer]; - - if (mappings.Keys.Contains(MachineField.Publisher)) - machine.Publisher = mappings[MachineField.Publisher]; - - if (mappings.Keys.Contains(MachineField.Category)) - machine.Category = mappings[MachineField.Category]; - - if (mappings.Keys.Contains(MachineField.RomOf)) - machine.RomOf = mappings[MachineField.RomOf]; - - if (mappings.Keys.Contains(MachineField.CloneOf)) - machine.CloneOf = mappings[MachineField.CloneOf]; - - if (mappings.Keys.Contains(MachineField.SampleOf)) - machine.SampleOf = mappings[MachineField.SampleOf]; - - if (mappings.Keys.Contains(MachineField.Type)) - machine.MachineType = mappings[MachineField.Type].AsMachineType(); - - #endregion - - #region AttractMode - - if (mappings.Keys.Contains(MachineField.Players)) - machine.Players = mappings[MachineField.Players]; - - if (mappings.Keys.Contains(MachineField.Rotation)) - machine.Rotation = mappings[MachineField.Rotation]; - - if (mappings.Keys.Contains(MachineField.Control)) - machine.Control = mappings[MachineField.Control]; - - if (mappings.Keys.Contains(MachineField.Status)) - machine.Status = mappings[MachineField.Status]; - - if (mappings.Keys.Contains(MachineField.DisplayCount)) - machine.DisplayCount = mappings[MachineField.DisplayCount]; - - if (mappings.Keys.Contains(MachineField.DisplayType)) - machine.DisplayType = mappings[MachineField.DisplayType]; - - if (mappings.Keys.Contains(MachineField.Buttons)) - machine.Buttons = mappings[MachineField.Buttons]; - - #endregion - - #region ListXML - - if (mappings.Keys.Contains(MachineField.SourceFile)) - machine.SourceFile = mappings[MachineField.SourceFile]; - - if (mappings.Keys.Contains(MachineField.Runnable)) - machine.Runnable = mappings[MachineField.Runnable].AsRunnable(); - - #endregion - - #region Logiqx - - if (mappings.Keys.Contains(MachineField.Board)) - machine.Board = mappings[MachineField.Board]; - - if (mappings.Keys.Contains(MachineField.RebuildTo)) - machine.RebuildTo = mappings[MachineField.RebuildTo]; - - #endregion - - #region Logiqx EmuArc - - if (mappings.Keys.Contains(MachineField.TitleID)) - machine.TitleID = mappings[MachineField.TitleID]; - - if (mappings.Keys.Contains(MachineField.Developer)) - machine.Developer = mappings[MachineField.Developer]; - - if (mappings.Keys.Contains(MachineField.Genre)) - machine.Genre = mappings[MachineField.Genre]; - - if (mappings.Keys.Contains(MachineField.Subgenre)) - machine.Subgenre = mappings[MachineField.Subgenre]; - - if (mappings.Keys.Contains(MachineField.Ratings)) - machine.Ratings = mappings[MachineField.Ratings]; - - if (mappings.Keys.Contains(MachineField.Score)) - machine.Score = mappings[MachineField.Score]; - - if (mappings.Keys.Contains(MachineField.Enabled)) - machine.Enabled = mappings[MachineField.Enabled]; - - if (mappings.Keys.Contains(MachineField.CRC)) - machine.Crc = mappings[MachineField.CRC].AsYesNo(); - - if (mappings.Keys.Contains(MachineField.RelatedTo)) - machine.RelatedTo = mappings[MachineField.RelatedTo]; - - #endregion - - #region OpenMSX - - if (mappings.Keys.Contains(MachineField.GenMSXID)) - machine.GenMSXID = mappings[MachineField.GenMSXID]; - - if (mappings.Keys.Contains(MachineField.System)) - machine.System = mappings[MachineField.System]; - - if (mappings.Keys.Contains(MachineField.Country)) - machine.Country = mappings[MachineField.Country]; - - #endregion - - #region SoftwareList - - if (mappings.Keys.Contains(MachineField.Supported)) - machine.Supported = mappings[MachineField.Supported].AsSupported(); - - #endregion - } - #endregion #region Filtering diff --git a/SabreTools/Features/Update.cs b/SabreTools/Features/Update.cs index 8ae08b4e..88d7354d 100644 --- a/SabreTools/Features/Update.cs +++ b/SabreTools/Features/Update.cs @@ -202,9 +202,9 @@ namespace SabreTools.Features // Populate using the correct set List datHeaders; if (updateMode.HasFlag(UpdateMode.DiffAgainst) || updateMode.HasFlag(UpdateMode.BaseReplace)) - datHeaders = DatTool.PopulateUserData(userInputDat, basePaths); + datHeaders = DatFileTool.PopulateUserData(userInputDat, basePaths); else - datHeaders = DatTool.PopulateUserData(userInputDat, inputPaths); + datHeaders = DatFileTool.PopulateUserData(userInputDat, inputPaths); // Perform additional processing steps Modification.ApplyExtras(userInputDat, Extras); @@ -215,7 +215,7 @@ namespace SabreTools.Features // Output only DatItems that are duplicated across inputs if (updateMode.HasFlag(UpdateMode.DiffDupesOnly)) { - DatFile dupeData = DatTool.DiffDuplicates(userInputDat, inputPaths); + DatFile dupeData = DatFileTool.DiffDuplicates(userInputDat, inputPaths); InternalStopwatch watch = new InternalStopwatch("Outputting duplicate DAT"); Writer.Write(dupeData, OutputDir, overwrite: false); @@ -225,7 +225,7 @@ namespace SabreTools.Features // Output only DatItems that are not duplicated across inputs if (updateMode.HasFlag(UpdateMode.DiffNoDupesOnly)) { - DatFile outerDiffData = DatTool.DiffNoDuplicates(userInputDat, inputPaths); + DatFile outerDiffData = DatFileTool.DiffNoDuplicates(userInputDat, inputPaths); InternalStopwatch watch = new InternalStopwatch("Outputting no duplicate DAT"); Writer.Write(outerDiffData, OutputDir, overwrite: false); @@ -236,7 +236,7 @@ namespace SabreTools.Features if (updateMode.HasFlag(UpdateMode.DiffIndividualsOnly)) { // Get all of the output DatFiles - List datFiles = DatTool.DiffIndividuals(userInputDat, inputPaths); + List datFiles = DatFileTool.DiffIndividuals(userInputDat, inputPaths); // Loop through and output the new DatFiles InternalStopwatch watch = new InternalStopwatch("Outputting all individual DATs"); @@ -271,7 +271,7 @@ namespace SabreTools.Features }); // Get all of the output DatFiles - List datFiles = DatTool.DiffCascade(userInputDat, datHeaders); + List datFiles = DatFileTool.DiffCascade(userInputDat, datHeaders); // Loop through and output the new DatFiles InternalStopwatch watch = new InternalStopwatch("Outputting all created DATs"); @@ -305,7 +305,7 @@ namespace SabreTools.Features Modification.ApplyCleaning(repDat, Cleaner); // Now replace the fields from the base DatFile - DatTool.DiffAgainst(userInputDat, repDat, GetBoolean(Features, ByGameValue)); + DatFileTool.DiffAgainst(userInputDat, repDat, GetBoolean(Features, ByGameValue)); // Finally output the diffed DatFile string interOutDir = inputPath.GetOutputPath(OutputDir, GetBoolean(features, InplaceValue)); @@ -330,7 +330,7 @@ namespace SabreTools.Features Modification.ApplyCleaning(repDat, Cleaner); // Now replace the fields from the base DatFile - DatTool.BaseReplace( + DatFileTool.BaseReplace( userInputDat, repDat, updateMachineFields,