using System.Collections.Generic; using System.Linq; namespace SabreTools.Serialization { /// /// Serializer for RomCenter models to internal structure /// public partial class Internal { #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 /// public static Models.Internal.Rom ConvertFromRomCenter(Models.RomCenter.Rom item) { var rom = new Models.Internal.Rom { [Models.Internal.Rom.NameKey] = item.RomName, [Models.Internal.Rom.CRCKey] = item.RomCRC, [Models.Internal.Rom.SizeKey] = item.RomSize, [Models.Internal.Rom.MergeKey] = item.MergeName, }; return rom; } #endregion #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 /// public static Models.RomCenter.Rom ConvertToRomCenter(Models.Internal.Rom item) { var row = new Models.RomCenter.Rom { RomName = item.ReadString(Models.Internal.Rom.NameKey), RomCRC = item.ReadString(Models.Internal.Rom.CRCKey), RomSize = item.ReadString(Models.Internal.Rom.SizeKey), MergeName = item.ReadString(Models.Internal.Rom.MergeKey), }; return row; } #endregion } }