mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-22 06:45:11 +00:00
Get rid of Software metadata item
Apparently this was a mistake that has proliferated over a very long time. The Software item that was being modeled was actually the game/machine equivilent from SoftwareList. But because there's both an item called SoftwareList and a DAT type called SoftwareList, some wire got crossed and they were mentally combined. Undoing this allows for a more proper internal model, including a couple of extraneous keys that were included originally.
This commit is contained in:
@@ -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))]
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -1,115 +0,0 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Data.Extensions;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents one ListXML software
|
||||
/// </summary>
|
||||
[JsonObject("software"), XmlRoot("software")]
|
||||
public sealed class Software : DatItem<Data.Models.Metadata.Software>
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public string? Description
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Software)?.Description;
|
||||
set => (_internal as Data.Models.Metadata.Software)?.Description = value;
|
||||
}
|
||||
|
||||
/// <inheritdoc>/>
|
||||
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.Info>(Data.Models.Metadata.Software.InfoKey);
|
||||
if (infos is not null)
|
||||
{
|
||||
Info[] infoItems = Array.ConvertAll(infos, info => new Info(info));
|
||||
Write<Info[]?>(Data.Models.Metadata.Software.InfoKey, infoItems);
|
||||
}
|
||||
|
||||
var parts = item.ReadArray<Data.Models.Metadata.Part>(Data.Models.Metadata.Software.PartKey);
|
||||
if (parts is not null)
|
||||
{
|
||||
Part[] partItems = Array.ConvertAll(parts, part => new Part(part));
|
||||
Write<Part[]?>(Data.Models.Metadata.Software.PartKey, partItems);
|
||||
}
|
||||
|
||||
var sharedFeats = item.ReadArray<Data.Models.Metadata.SharedFeat>(Data.Models.Metadata.Software.SharedFeatKey);
|
||||
if (sharedFeats is not null)
|
||||
{
|
||||
SharedFeat[] sharedFeatItems = Array.ConvertAll(sharedFeats, sharedFeat => new SharedFeat(sharedFeat));
|
||||
Write<SharedFeat[]?>(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
|
||||
|
||||
/// <inheritdoc/>
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override object Clone() => new Software(_internal.DeepClone() as Data.Models.Metadata.Software ?? []);
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override Data.Models.Metadata.Software GetInternalClone()
|
||||
{
|
||||
var softwareItem = base.GetInternalClone();
|
||||
|
||||
var infos = Read<Info[]?>(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<Part[]?>(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<SharedFeat[]?>(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
|
||||
}
|
||||
}
|
||||
@@ -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.Software>(Data.Models.Metadata.SoftwareList.SoftwareKey);
|
||||
if (softwares is not null)
|
||||
{
|
||||
Software[] softwareItems = Array.ConvertAll(softwares, software => new Software(software));
|
||||
Write<Software[]?>(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
|
||||
/// <inheritdoc/>
|
||||
public override object Clone() => new SoftwareList(_internal.DeepClone() as Data.Models.Metadata.SoftwareList ?? []);
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override Data.Models.Metadata.SoftwareList GetInternalClone()
|
||||
{
|
||||
var softwareListItem = base.GetInternalClone();
|
||||
|
||||
var softwares = Read<Software[]?>(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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user