diff --git a/SabreTools.Models/Internal/Machine.cs b/SabreTools.Models/Internal/Machine.cs
index 5458757b..8de9eb7e 100644
--- a/SabreTools.Models/Internal/Machine.cs
+++ b/SabreTools.Models/Internal/Machine.cs
@@ -81,6 +81,9 @@ namespace SabreTools.Models.Internal
/// string
public const string DuplicateIDKey = "duplicateID";
+ /// string
+ public const string EmulatorKey = "emulator";
+
/// string
public const string ExtraKey = "extra";
@@ -132,6 +135,9 @@ namespace SabreTools.Models.Internal
/// Media[]
public const string MediaKey = "media";
+ /// string
+ public const string NameKey = "name";
+
/// string
public const string NotesKey = "notes";
diff --git a/SabreTools.Serialization/Internal.AttractMode.cs b/SabreTools.Serialization/Internal.AttractMode.cs
index 96a368b0..bc6527cd 100644
--- a/SabreTools.Serialization/Internal.AttractMode.cs
+++ b/SabreTools.Serialization/Internal.AttractMode.cs
@@ -1,3 +1,5 @@
+using System.Collections.Generic;
+
namespace SabreTools.Serialization
{
///
@@ -7,6 +9,37 @@ namespace SabreTools.Serialization
{
#region Serialize
+ ///
+ /// Convert from to
+ ///
+ public static Models.Internal.Machine ConvertMachineFromAttractMode(Models.AttractMode.Row item)
+ {
+ var machine = new Models.Internal.Machine
+ {
+ [Models.Internal.Machine.NameKey] = item.Name,
+ [Models.Internal.Machine.EmulatorKey] = item.Emulator,
+ [Models.Internal.Machine.CloneOfKey] = item.CloneOf,
+ [Models.Internal.Machine.YearKey] = item.Year,
+ [Models.Internal.Machine.ManufacturerKey] = item.Manufacturer,
+ [Models.Internal.Machine.CategoryKey] = item.Category,
+ [Models.Internal.Machine.PlayersKey] = item.Players,
+ [Models.Internal.Machine.RotationKey] = item.Rotation,
+ [Models.Internal.Machine.ControlKey] = item.Control,
+ [Models.Internal.Machine.StatusKey] = item.Status,
+ [Models.Internal.Machine.DisplayCountKey] = item.DisplayCount,
+ [Models.Internal.Machine.DisplayTypeKey] = item.DisplayType,
+ [Models.Internal.Machine.ExtraKey] = item.Extra,
+ [Models.Internal.Machine.ButtonsKey] = item.Buttons,
+ [Models.Internal.Machine.FavoriteKey] = item.Favorite,
+ [Models.Internal.Machine.TagsKey] = item.Tags,
+ [Models.Internal.Machine.PlayedCountKey] = item.PlayedCount,
+ [Models.Internal.Machine.PlayedTimeKey] = item.PlayedTime,
+ [Models.Internal.Machine.PlayedTimeKey] = item.PlayedTime,
+ [Models.Internal.Machine.RomKey] = ConvertFromAttractMode(item),
+ };
+ return machine;
+ }
+
///
/// Convert from to
///
@@ -26,6 +59,43 @@ namespace SabreTools.Serialization
#region Deserialize
+ ///
+ /// Convert from to an array of
+ ///
+ public static Models.AttractMode.Row[]? ConvertMachineToAttractMode(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 rowItems = new List();
+ foreach (var rom in roms)
+ {
+ var rowItem = ConvertToAttractMode(rom);
+
+ rowItem.Name = item.ReadString(Models.Internal.Machine.NameKey);
+ rowItem.Emulator = item.ReadString(Models.Internal.Machine.EmulatorKey);
+ rowItem.CloneOf = item.ReadString(Models.Internal.Machine.CloneOfKey);
+ rowItem.Year = item.ReadString(Models.Internal.Machine.YearKey);
+ rowItem.Manufacturer = item.ReadString(Models.Internal.Machine.ManufacturerKey);
+ rowItem.Category = item.ReadString(Models.Internal.Machine.CategoryKey);
+ rowItem.Players = item.ReadString(Models.Internal.Machine.PlayersKey);
+ rowItem.Rotation = item.ReadString(Models.Internal.Machine.RotationKey);
+ rowItem.Control = item.ReadString(Models.Internal.Machine.ControlKey);
+ rowItem.Status = item.ReadString(Models.Internal.Machine.StatusKey);
+ rowItem.DisplayCount = item.ReadString(Models.Internal.Machine.DisplayCountKey);
+ rowItem.DisplayType = item.ReadString(Models.Internal.Machine.DisplayTypeKey);
+ rowItem.Extra = item.ReadString(Models.Internal.Machine.ExtraKey);
+ rowItem.Buttons = item.ReadString(Models.Internal.Machine.ButtonsKey);
+ rowItem.Favorite = item.ReadString(Models.Internal.Machine.FavoriteKey);
+ rowItem.Tags = item.ReadString(Models.Internal.Machine.TagsKey);
+ rowItem.PlayedCount = item.ReadString(Models.Internal.Machine.PlayedCountKey);
+ rowItem.PlayedTime = item.ReadString(Models.Internal.Machine.PlayedTimeKey);
+
+ rowItems.Add(rowItem);
+ }
+ return rowItems.ToArray();
+ }
+
///
/// Convert from to
///