diff --git a/SabreTools.Serialization/Internal.RomCenter.cs b/SabreTools.Serialization/Internal.RomCenter.cs index acf7491d..85a3a569 100644 --- a/SabreTools.Serialization/Internal.RomCenter.cs +++ b/SabreTools.Serialization/Internal.RomCenter.cs @@ -1,3 +1,6 @@ +using System.Collections.Generic; +using System.Linq; + namespace SabreTools.Serialization { /// @@ -7,6 +10,23 @@ namespace SabreTools.Serialization { #region Serialize + /// + /// Convert from to + /// + public static Models.Internal.Machine ConvertMachineFromRomCenter(Models.RomCenter.Rom item) + { + var machine = new Models.Internal.Machine + { + [Models.Internal.Machine.RomOfKey] = item.ParentName, + //[Models.Internal.Machine.RomOfKey] = item.ParentDescription, // This is unmappable + [Models.Internal.Machine.NameKey] = item.GameName, + [Models.Internal.Machine.DescriptionKey] = item.GameDescription, + [Models.Internal.Machine.RomKey] = new Models.Internal.Rom[] { ConvertFromRomCenter(item) }, + }; + + return machine; + } + /// /// Convert from to /// @@ -26,6 +46,31 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to an array of + /// + public static Models.RomCenter.Rom[] ConvertMachineToRomCenter(Models.Internal.Machine item) + { + var romItems = new List(); + + if (item.ContainsKey(Models.Internal.Machine.RomKey) && item[Models.Internal.Machine.RomKey] is Models.Internal.Rom[] roms) + { + foreach (var rom in roms) + { + var romItem = ConvertToRomCenter(rom); + + romItem.ParentName = rom.ReadString(Models.Internal.Machine.RomOfKey); + //romItem.ParentDescription = rom.ReadString(Models.Internal.Machine.RomOfKey); // This is unmappable + romItem.GameName = rom.ReadString(Models.Internal.Machine.NameKey); + romItem.GameDescription = rom.ReadString(Models.Internal.Machine.DescriptionKey); + + romItems.Add(romItem); + } + } + + return romItems.ToArray(); + } + /// /// Convert from to ///