diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs
index 3de34d06..96a982a9 100644
--- a/SabreTools.Data.Extensions/MetadataExtensions.cs
+++ b/SabreTools.Data.Extensions/MetadataExtensions.cs
@@ -63,7 +63,6 @@ namespace SabreTools.Data.Extensions
SharedFeat sharedFeat => sharedFeat.Name,
Slot slot => slot.Name,
SlotOption slotOption => slotOption.Name,
- Software software => software.Name,
SoftwareList softwareList => softwareList.Name,
Sound => null,
SourceDetails => null,
@@ -124,7 +123,6 @@ namespace SabreTools.Data.Extensions
case SharedFeat sharedFeat: sharedFeat.Name = name; break;
case Slot slot: slot.Name = name; break;
case SlotOption slotOption: slotOption.Name = name; break;
- case Software software: software.Name = name; break;
case SoftwareList softwareList: softwareList.Name = name; break;
case Sound: break;
case SourceDetails: break;
@@ -186,6 +184,8 @@ namespace SabreTools.Data.Extensions
return sharedFeat.Clone() as SharedFeat;
else if (self is SlotOption slotOption)
return slotOption.Clone() as SlotOption;
+ else if (self is SoftwareList softwareList)
+ return softwareList.Clone() as SoftwareList;
else if (self is Sound sound)
return sound.Clone() as Sound;
else if (self is Video video)
@@ -329,19 +329,6 @@ namespace SabreTools.Data.Extensions
cloneRom.Status = selfRom.Status;
cloneRom.Value = selfRom.Value;
}
- else if (self is Software selfSoftware && clone is Software cloneSoftware)
- {
- cloneSoftware.Description = selfSoftware.Description;
- cloneSoftware.Supported = selfSoftware.Supported;
- }
- else if (self is SoftwareList selfSoftwareList && clone is SoftwareList cloneSoftwareList)
- {
- cloneSoftwareList.Description = selfSoftwareList.Description;
- cloneSoftwareList.Filter = selfSoftwareList.Filter;
- cloneSoftwareList.Notes = selfSoftwareList.Notes;
- cloneSoftwareList.Status = selfSoftwareList.Status;
- cloneSoftwareList.Tag = selfSoftwareList.Tag;
- }
// Handle known properties
clone.SetName(self.GetName());
diff --git a/SabreTools.Data.Models/Metadata/Enums.cs b/SabreTools.Data.Models/Metadata/Enums.cs
index c359dd18..aaa2e679 100644
--- a/SabreTools.Data.Models/Metadata/Enums.cs
+++ b/SabreTools.Data.Models/Metadata/Enums.cs
@@ -309,7 +309,6 @@ namespace SabreTools.Data.Models.Metadata
SharedFeat,
Slot,
SlotOption,
- Software,
SoftwareList,
Sound,
SourceDetails,
diff --git a/SabreTools.Data.Models/Metadata/Software.cs b/SabreTools.Data.Models/Metadata/Software.cs
deleted file mode 100644
index feb7d209..00000000
--- a/SabreTools.Data.Models/Metadata/Software.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using System.Xml.Serialization;
-using Newtonsoft.Json;
-
-namespace SabreTools.Data.Models.Metadata
-{
- [JsonObject("software"), XmlRoot("software")]
- public class Software : DatItem
- {
- #region Properties
-
- public string? Description { get; set; }
-
- public string? Name { get; set; }
-
- /// (yes|partial|no) "yes"
- public Supported? Supported { get; set; }
-
- #endregion
-
- #region Keys
-
- /// string
- public const string CloneOfKey = "cloneof";
-
- /// Info[]
- [NoFilter]
- public const string InfoKey = "info";
-
- /// string
- public const string NotesKey = "notes";
-
- /// Part[]
- [NoFilter]
- public const string PartKey = "part";
-
- /// string
- public const string PublisherKey = "publisher";
-
- /// SharedFeat[]
- [NoFilter]
- public const string SharedFeatKey = "sharedfeat";
-
- /// string
- public const string YearKey = "year";
-
- #endregion
-
- public Software() => ItemType = ItemType.Software;
- }
-}
diff --git a/SabreTools.Data.Models/Metadata/SoftwareList.cs b/SabreTools.Data.Models/Metadata/SoftwareList.cs
index 5b5c5b88..fe197759 100644
--- a/SabreTools.Data.Models/Metadata/SoftwareList.cs
+++ b/SabreTools.Data.Models/Metadata/SoftwareList.cs
@@ -1,21 +1,18 @@
+using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
namespace SabreTools.Data.Models.Metadata
{
[JsonObject("softwarelist"), XmlRoot("softwarelist")]
- public class SoftwareList : DatItem
+ public class SoftwareList : DatItem, ICloneable, IEquatable
{
#region Properties
- public string? Description { get; set; }
-
public string? Filter { get; set; }
public string? Name { get; set; }
- public string? Notes { get; set; }
-
/// (original|compatible)
public SoftwareListStatus? Status { get; set; }
@@ -23,14 +20,48 @@ namespace SabreTools.Data.Models.Metadata
#endregion
- #region Keys
-
- /// Software[]
- [NoFilter]
- public const string SoftwareKey = "software";
-
- #endregion
-
public SoftwareList() => ItemType = ItemType.SoftwareList;
+
+ ///
+ public object Clone()
+ {
+ var obj = new SoftwareList();
+
+ obj.Filter = Filter;
+ obj.Name = Name;
+ obj.Status = Status;
+ obj.Tag = Tag;
+
+ return obj;
+ }
+
+ ///
+ public bool Equals(SoftwareList? other)
+ {
+ // Null never matches
+ if (other is null)
+ return false;
+
+ // Properties
+ if ((Filter is null) ^ (other.Filter is null))
+ return false;
+ else if (Filter is not null && !Filter.Equals(other.Filter, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if ((Name is null) ^ (other.Name is null))
+ return false;
+ else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ if (Status != other.Status)
+ return false;
+
+ if ((Tag is null) ^ (other.Tag is null))
+ return false;
+ else if (Tag is not null && !Tag.Equals(other.Tag, StringComparison.OrdinalIgnoreCase))
+ return false;
+
+ return true;
+ }
}
}
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
index f8d003bc..32671ad9 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
@@ -928,32 +928,12 @@ namespace SabreTools.Metadata.DatFiles.Test
};
}
- private static Data.Models.Metadata.Software CreateMetadataSoftware()
- {
- return new Data.Models.Metadata.Software
- {
- [Data.Models.Metadata.Software.CloneOfKey] = "cloneof",
- Description = "description",
- [Data.Models.Metadata.Software.InfoKey] = new Data.Models.Metadata.Info[] { CreateMetadataInfo() },
- Name = "name",
- [Data.Models.Metadata.Software.NotesKey] = "notes",
- [Data.Models.Metadata.Software.PartKey] = new Data.Models.Metadata.Part[] { CreateMetadataPart() },
- [Data.Models.Metadata.Software.PublisherKey] = "publisher",
- [Data.Models.Metadata.Software.SharedFeatKey] = new Data.Models.Metadata.SharedFeat[] { CreateMetadataSharedFeat() },
- Supported = Data.Models.Metadata.Supported.Yes,
- [Data.Models.Metadata.Software.YearKey] = "year",
- };
- }
-
private static Data.Models.Metadata.SoftwareList CreateMetadataSoftwareList()
{
return new Data.Models.Metadata.SoftwareList
{
- Description = "description",
Filter = "filter",
Name = "name",
- Notes = "notes",
- [Data.Models.Metadata.SoftwareList.SoftwareKey] = new Data.Models.Metadata.Software[] { CreateMetadataSoftware() },
Status = Data.Models.Metadata.SoftwareListStatus.Original,
Tag = "tag",
};
@@ -1627,44 +1607,10 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateSoftwareList(SoftwareList? softwareList)
{
Assert.NotNull(softwareList);
- Assert.Equal("description", softwareList.Description);
Assert.Equal("filter", softwareList.Filter);
Assert.Equal("name", softwareList.Name);
- Assert.Equal("notes", softwareList.Notes);
Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status);
Assert.Equal("tag", softwareList.Tag);
-
- Software[]? softwares = softwareList.Read(Data.Models.Metadata.SoftwareList.SoftwareKey);
- Assert.NotNull(softwares);
- Software? software = Assert.Single(softwares);
- ValidateSoftware(software);
- }
-
- private static void ValidateSoftware(Software? software)
- {
- Assert.NotNull(software);
- Assert.Equal("cloneof", software.ReadString(Data.Models.Metadata.Software.CloneOfKey));
- Assert.Equal("description", software.Description);
- Assert.Equal("name", software.Name);
- Assert.Equal("notes", software.ReadString(Data.Models.Metadata.Software.NotesKey));
- Assert.Equal("publisher", software.ReadString(Data.Models.Metadata.Software.PublisherKey));
- Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported);
- Assert.Equal("year", software.ReadString(Data.Models.Metadata.Software.YearKey));
-
- Info[]? infos = software.Read(Data.Models.Metadata.Software.InfoKey);
- Assert.NotNull(infos);
- Info? info = Assert.Single(infos);
- ValidateInfo(info);
-
- Part[]? parts = software.Read(Data.Models.Metadata.Software.PartKey);
- Assert.NotNull(parts);
- Part? part = Assert.Single(parts);
- ValidatePart(part);
-
- SharedFeat[]? sharedFeats = software.Read(Data.Models.Metadata.Software.SharedFeatKey);
- Assert.NotNull(sharedFeats);
- SharedFeat? sharedFeat = Assert.Single(sharedFeats);
- ValidateSharedFeat(sharedFeat);
}
private static void ValidateSound(Sound? sound)
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
index ef0d89a5..3cb740ac 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
@@ -1189,46 +1189,10 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataSoftwareList(Data.Models.Metadata.SoftwareList? softwareList)
{
Assert.NotNull(softwareList);
- Assert.Equal("description", softwareList.Description);
Assert.Equal("filter", softwareList.Filter);
Assert.Equal("name", softwareList.Name);
- Assert.Equal("notes", softwareList.Notes);
Assert.Equal(Data.Models.Metadata.SoftwareListStatus.Original, softwareList.Status);
Assert.Equal("tag", softwareList.Tag);
-
- Data.Models.Metadata.Software[]? softwares = softwareList.ReadArray(Data.Models.Metadata.SoftwareList.SoftwareKey);
- Assert.NotNull(softwares);
- Data.Models.Metadata.Software? software = Assert.Single(softwares);
-
- // TODO: Reenable when the mess that is the Software tree can be fixed
- // ValidateMetadataSoftware(software);
- }
-
- private static void ValidateMetadataSoftware(Data.Models.Metadata.Software? software)
- {
- Assert.NotNull(software);
- Assert.Equal("cloneof", software.ReadString(Data.Models.Metadata.Software.CloneOfKey));
- Assert.Equal("description", software.Description);
- Assert.Equal("name", software.Name);
- Assert.Equal("notes", software.ReadString(Data.Models.Metadata.Software.NotesKey));
- Assert.Equal("publisher", software.ReadString(Data.Models.Metadata.Software.PublisherKey));
- Assert.Equal(Data.Models.Metadata.Supported.Yes, software.Supported);
- Assert.Equal("year", software.ReadString(Data.Models.Metadata.Software.YearKey));
-
- Data.Models.Metadata.Info[]? infos = software.Read(Data.Models.Metadata.Software.InfoKey);
- Assert.NotNull(infos);
- Data.Models.Metadata.Info? info = Assert.Single(infos);
- ValidateMetadataInfo(info);
-
- Data.Models.Metadata.Part[]? parts = software.Read(Data.Models.Metadata.Software.PartKey);
- Assert.NotNull(parts);
- Data.Models.Metadata.Part? part = Assert.Single(parts);
- ValidateMetadataPart(part);
-
- Data.Models.Metadata.SharedFeat[]? sharedFeats = software.Read(Data.Models.Metadata.Software.SharedFeatKey);
- Assert.NotNull(sharedFeats);
- Data.Models.Metadata.SharedFeat? sharedFeat = Assert.Single(sharedFeats);
- ValidateMetadataSharedFeat(sharedFeat);
}
private static void ValidateMetadataSound(Data.Models.Metadata.Sound? sound)
diff --git a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs
index 50b39bfb..6c7a0732 100644
--- a/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/SabreJSON.cs
@@ -389,7 +389,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
// TODO: Implement these?
case Data.Models.Metadata.ItemType.Dump:
- case Data.Models.Metadata.ItemType.Software:
case Data.Models.Metadata.ItemType.Video:
case Data.Models.Metadata.ItemType.NULL:
default:
diff --git a/SabreTools.Metadata.DatItems/DatItem.cs b/SabreTools.Metadata.DatItems/DatItem.cs
index abbefc81..604e2dec 100644
--- a/SabreTools.Metadata.DatItems/DatItem.cs
+++ b/SabreTools.Metadata.DatItems/DatItem.cs
@@ -51,7 +51,6 @@ namespace SabreTools.Metadata.DatItems
[XmlInclude(typeof(SharedFeat))]
[XmlInclude(typeof(Slot))]
[XmlInclude(typeof(SlotOption))]
- [XmlInclude(typeof(Software))]
[XmlInclude(typeof(SoftwareList))]
[XmlInclude(typeof(Sound))]
[XmlInclude(typeof(SourceDetails))]
diff --git a/SabreTools.Metadata.DatItems/Extensions.cs b/SabreTools.Metadata.DatItems/Extensions.cs
index f64ee29a..5a7f0def 100644
--- a/SabreTools.Metadata.DatItems/Extensions.cs
+++ b/SabreTools.Metadata.DatItems/Extensions.cs
@@ -57,7 +57,6 @@ namespace SabreTools.Metadata.DatItems
"sharedfeat" or "shared_feat" or "sharedfeature" or "shared_feature" => Data.Models.Metadata.ItemType.SharedFeat,
"slot" => Data.Models.Metadata.ItemType.Slot,
"slotoption" or "slot_option" => Data.Models.Metadata.ItemType.SlotOption,
- "software" => Data.Models.Metadata.ItemType.Software,
"softwarelist" or "software_list" => Data.Models.Metadata.ItemType.SoftwareList,
"sound" => Data.Models.Metadata.ItemType.Sound,
"source_details" or "sourcedetails" => Data.Models.Metadata.ItemType.SourceDetails,
@@ -141,7 +140,6 @@ namespace SabreTools.Metadata.DatItems
Data.Models.Metadata.ItemType.SharedFeat => "sharedfeat",
Data.Models.Metadata.ItemType.Slot => "slot",
Data.Models.Metadata.ItemType.SlotOption => "slotoption",
- Data.Models.Metadata.ItemType.Software => "software",
Data.Models.Metadata.ItemType.SoftwareList => "softwarelist",
Data.Models.Metadata.ItemType.Sound => "sound",
Data.Models.Metadata.ItemType.SourceDetails => "source_details",
diff --git a/SabreTools.Metadata.DatItems/Formats/Software.cs b/SabreTools.Metadata.DatItems/Formats/Software.cs
deleted file mode 100644
index a040c78c..00000000
--- a/SabreTools.Metadata.DatItems/Formats/Software.cs
+++ /dev/null
@@ -1,115 +0,0 @@
-using System;
-using System.Xml.Serialization;
-using Newtonsoft.Json;
-using SabreTools.Data.Extensions;
-
-namespace SabreTools.Metadata.DatItems.Formats
-{
- ///
- /// Represents one ListXML software
- ///
- [JsonObject("software"), XmlRoot("software")]
- public sealed class Software : DatItem
- {
- #region Properties
-
- public string? Description
- {
- get => (_internal as Data.Models.Metadata.Software)?.Description;
- set => (_internal as Data.Models.Metadata.Software)?.Description = value;
- }
-
- /// />
- public override Data.Models.Metadata.ItemType ItemType
- => Data.Models.Metadata.ItemType.Software;
-
- public string? Name
- {
- get => (_internal as Data.Models.Metadata.Software)?.Name;
- set => (_internal as Data.Models.Metadata.Software)?.Name = value;
- }
-
- public Data.Models.Metadata.Supported? Supported
- {
- get => (_internal as Data.Models.Metadata.Software)?.Supported;
- set => (_internal as Data.Models.Metadata.Software)?.Supported = value;
- }
-
- #endregion
-
- #region Constructors
-
- public Software() : base() { }
-
- public Software(Data.Models.Metadata.Software item) : base(item)
- {
- // Handle subitems
- var infos = item.ReadArray(Data.Models.Metadata.Software.InfoKey);
- if (infos is not null)
- {
- Info[] infoItems = Array.ConvertAll(infos, info => new Info(info));
- Write(Data.Models.Metadata.Software.InfoKey, infoItems);
- }
-
- var parts = item.ReadArray(Data.Models.Metadata.Software.PartKey);
- if (parts is not null)
- {
- Part[] partItems = Array.ConvertAll(parts, part => new Part(part));
- Write(Data.Models.Metadata.Software.PartKey, partItems);
- }
-
- var sharedFeats = item.ReadArray(Data.Models.Metadata.Software.SharedFeatKey);
- if (sharedFeats is not null)
- {
- SharedFeat[] sharedFeatItems = Array.ConvertAll(sharedFeats, sharedFeat => new SharedFeat(sharedFeat));
- Write(Data.Models.Metadata.Software.SharedFeatKey, sharedFeatItems);
- }
- }
-
- public Software(Data.Models.Metadata.Software item, Machine machine, Source source) : this(item)
- {
- Source = source;
- CopyMachineInformation(machine);
- }
-
- #endregion
-
- #region Cloning Methods
-
- ///
-
- ///
- public override object Clone() => new Software(_internal.DeepClone() as Data.Models.Metadata.Software ?? []);
-
- ///
- public override Data.Models.Metadata.Software GetInternalClone()
- {
- var softwareItem = base.GetInternalClone();
-
- var infos = Read(Data.Models.Metadata.Software.InfoKey);
- if (infos is not null)
- {
- Data.Models.Metadata.Info[] infoItems = Array.ConvertAll(infos, info => info.GetInternalClone());
- softwareItem[Data.Models.Metadata.Software.InfoKey] = infoItems;
- }
-
- var parts = Read(Data.Models.Metadata.Software.PartKey);
- if (parts is not null)
- {
- Data.Models.Metadata.Part[] partItems = Array.ConvertAll(parts, part => part.GetInternalClone());
- softwareItem[Data.Models.Metadata.Software.PartKey] = partItems;
- }
-
- var sharedFeats = Read(Data.Models.Metadata.Software.SharedFeatKey);
- if (sharedFeats is not null)
- {
- Data.Models.Metadata.SharedFeat[] sharedFeatItems = Array.ConvertAll(sharedFeats, sharedFeat => sharedFeat.GetInternalClone());
- softwareItem[Data.Models.Metadata.Software.SharedFeatKey] = sharedFeatItems;
- }
-
- return softwareItem;
- }
-
- #endregion
- }
-}
diff --git a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
index 0e1ae432..3d90fb67 100644
--- a/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
+++ b/SabreTools.Metadata.DatItems/Formats/SoftwareList.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Xml.Serialization;
+using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
@@ -13,12 +12,6 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
- public string? Description
- {
- get => (_internal as Data.Models.Metadata.SoftwareList)?.Description;
- set => (_internal as Data.Models.Metadata.SoftwareList)?.Description = value;
- }
-
public string? Filter
{
get => (_internal as Data.Models.Metadata.SoftwareList)?.Filter;
@@ -35,12 +28,6 @@ namespace SabreTools.Metadata.DatItems.Formats
set => (_internal as Data.Models.Metadata.SoftwareList)?.Name = value;
}
- public string? Notes
- {
- get => (_internal as Data.Models.Metadata.SoftwareList)?.Notes;
- set => (_internal as Data.Models.Metadata.SoftwareList)?.Notes = value;
- }
-
public Data.Models.Metadata.SoftwareListStatus? Status
{
get => (_internal as Data.Models.Metadata.SoftwareList)?.Status;
@@ -59,16 +46,7 @@ namespace SabreTools.Metadata.DatItems.Formats
public SoftwareList() : base() { }
- public SoftwareList(Data.Models.Metadata.SoftwareList item) : base(item)
- {
- // Handle subitems
- var softwares = item.ReadArray(Data.Models.Metadata.SoftwareList.SoftwareKey);
- if (softwares is not null)
- {
- Software[] softwareItems = Array.ConvertAll(softwares, software => new Software(software));
- Write(Data.Models.Metadata.SoftwareList.SoftwareKey, softwareItems);
- }
- }
+ public SoftwareList(Data.Models.Metadata.SoftwareList item) : base(item) { }
public SoftwareList(Data.Models.Metadata.SoftwareList item, Machine machine, Source source) : this(item)
{
@@ -83,21 +61,6 @@ namespace SabreTools.Metadata.DatItems.Formats
///
public override object Clone() => new SoftwareList(_internal.DeepClone() as Data.Models.Metadata.SoftwareList ?? []);
- ///
- public override Data.Models.Metadata.SoftwareList GetInternalClone()
- {
- var softwareListItem = base.GetInternalClone();
-
- var softwares = Read(Data.Models.Metadata.SoftwareList.SoftwareKey);
- if (softwares is not null)
- {
- Data.Models.Metadata.Software[] softwareItems = Array.ConvertAll(softwares, software => software.GetInternalClone());
- softwareListItem[Data.Models.Metadata.SoftwareList.SoftwareKey] = softwareItems;
- }
-
- return softwareListItem;
- }
-
#endregion
}
}
diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs
index 2728e346..4f62a17d 100644
--- a/SabreTools.Metadata.Filter/FilterObject.cs
+++ b/SabreTools.Metadata.Filter/FilterObject.cs
@@ -829,22 +829,9 @@ namespace SabreTools.Metadata.Filter
checkValue = item.DevName;
return true;
- case Software item when fieldName == "description":
- checkValue = item.Description;
- return true;
- case Software item when fieldName == "supported":
- checkValue = item.Supported?.AsStringValue();
- return true;
-
- case SoftwareList item when fieldName == "description":
- checkValue = item.Description;
- return true;
case SoftwareList item when fieldName == "filter":
checkValue = item.Filter;
return true;
- case SoftwareList item when fieldName == "notes":
- checkValue = item.Notes;
- return true;
case SoftwareList item when fieldName == "status":
checkValue = item.Status?.AsStringValue();
return true;
diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs
index 471f086d..1587ddf2 100644
--- a/SabreTools.Metadata/DictionaryBaseExtensions.cs
+++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs
@@ -328,24 +328,9 @@ namespace SabreTools.Metadata
if (!selfSlotOption.Equals(otherSlotOption))
return false;
}
- else if (self is Software selfSoftware && other is Software otherSoftware)
- {
- if (selfSoftware.Description != otherSoftware.Description)
- return false;
- if (selfSoftware.Supported != otherSoftware.Supported)
- return false;
- }
else if (self is SoftwareList selfSoftwareList && other is SoftwareList otherSoftwareList)
{
- if (selfSoftwareList.Description != otherSoftwareList.Description)
- return false;
- if (selfSoftwareList.Filter != otherSoftwareList.Filter)
- return false;
- if (selfSoftwareList.Notes != otherSoftwareList.Notes)
- return false;
- if (selfSoftwareList.Status != otherSoftwareList.Status)
- return false;
- if (selfSoftwareList.Tag != otherSoftwareList.Tag)
+ if (!selfSoftwareList.Equals(otherSoftwareList))
return false;
}
else if (self is Sound selfSound && other is Sound otherSound)