using System.Collections.Generic; using System.Linq; namespace SabreTools.Serialization { /// /// Serializer for DosCenter models to internal structure /// public partial class Internal { #region Serialize /// /// Convert from to /// public static Models.Internal.Machine ConvertMachineFromDosCenter(Models.DosCenter.Game item) { var machine = new Models.Internal.Machine { [Models.Internal.Machine.NameKey] = item.Name, }; if (item.File != null && item.File.Any()) { var roms = new List(); foreach (var file in item.File) { roms.Add(ConvertFromDosCenter(file)); } machine[Models.Internal.Machine.RomKey] = roms.ToArray(); } return machine; } /// /// Convert from to /// public static Models.Internal.Rom ConvertFromDosCenter(Models.DosCenter.File item) { var rom = new Models.Internal.Rom { [Models.Internal.Rom.NameKey] = item.Name, [Models.Internal.Rom.SizeKey] = item.Size, [Models.Internal.Rom.CRCKey] = item.CRC, [Models.Internal.Rom.DateKey] = item.Date, }; return rom; } #endregion #region Deserialize /// /// Convert from to /// public static Models.DosCenter.Game ConvertMachineToDosCenter(Models.Internal.Machine item) { var game = new Models.DosCenter.Game { Name = item.ReadString(Models.Internal.Machine.NameKey), }; if (item.ContainsKey(Models.Internal.Machine.RomKey) && item[Models.Internal.Machine.RomKey] is Models.Internal.Rom[] roms) { var fileItems = new List(); foreach (var rom in roms) { fileItems.Add(ConvertToDosCenter(rom)); } game.File = fileItems.ToArray(); } return game; } /// /// Convert from to /// public static Models.DosCenter.File ConvertToDosCenter(Models.Internal.Rom item) { var file = new Models.DosCenter.File { Name = item.ReadString(Models.Internal.Rom.NameKey), Size = item.ReadString(Models.Internal.Rom.SizeKey), CRC = item.ReadString(Models.Internal.Rom.CRCKey), Date = item.ReadString(Models.Internal.Rom.DateKey), }; return file; } #endregion } }