Add ArchiveDotOrg machine serialization

This commit is contained in:
Matt Nadareski
2023-08-04 23:07:51 -04:00
parent d4af726e0f
commit 31bdc87429

View File

@@ -1,3 +1,5 @@
using System.Collections.Generic;
namespace SabreTools.Serialization
{
/// <summary>
@@ -7,6 +9,18 @@ namespace SabreTools.Serialization
{
#region Serialize
/// <summary>
/// Convert from <cref="Models.ArchiveDotOrg.File"/> to <cref="Models.Internal.Machine"/>
/// </summary>
public static Models.Internal.Machine ConvertMachineFromArchiveDotOrg(Models.ArchiveDotOrg.File item)
{
var machine = new Models.Internal.Machine
{
[Models.Internal.Machine.RomKey] = ConvertFromArchiveDotOrg(item),
};
return machine;
}
/// <summary>
/// Convert from <cref="Models.ArchiveDotOrg.File"/> to <cref="Models.Internal.Rom"/>
/// </summary>
@@ -85,6 +99,22 @@ namespace SabreTools.Serialization
#region Deserialize
/// <summary>
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.ArchiveDotOrg.File"/>
/// </summary>
public static Models.ArchiveDotOrg.File[]? ConvertMachineToArchiveDotOrg(Models.Internal.Machine item)
{
if (!item.ContainsKey(Models.Internal.Machine.RomKey) || item[Models.Internal.Machine.RomKey] is not Models.Internal.Rom[] roms)
return null;
var fileItems = new List<Models.ArchiveDotOrg.File>();
foreach (var rom in roms)
{
fileItems.Add(ConvertToArchiveDotOrg(rom));
}
return fileItems.ToArray();
}
/// <summary>
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.ArchiveDotOrg.File"/>
/// </summary>