using System; using SabreTools.Data.Models.DosCenter; namespace SabreTools.Serialization.CrossModel { public partial class DosCenter : BaseMetadataSerializer { /// public override Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj) { if (obj is null) return null; var metadataFile = new Data.Models.Metadata.MetadataFile(); if (obj?.DosCenter is not null) metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj.DosCenter); if (obj?.Game is not null && obj.Game.Length > 0) { metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel); } return metadataFile; } /// /// Convert from to /// private static Data.Models.Metadata.Header ConvertHeaderToInternalModel(Data.Models.DosCenter.DosCenter item) { var header = new Data.Models.Metadata.Header { [Data.Models.Metadata.Header.NameKey] = item.Name, [Data.Models.Metadata.Header.DescriptionKey] = item.Description, [Data.Models.Metadata.Header.VersionKey] = item.Version, [Data.Models.Metadata.Header.DateKey] = item.Date, [Data.Models.Metadata.Header.AuthorKey] = item.Author, [Data.Models.Metadata.Header.HomepageKey] = item.Homepage, [Data.Models.Metadata.Header.CommentKey] = item.Comment, }; return header; } /// /// Convert from to /// private static Data.Models.Metadata.Machine ConvertMachineToInternalModel(Game item) { var machine = new Data.Models.Metadata.Machine { [Data.Models.Metadata.Machine.NameKey] = item.Name, }; if (item.File is not null && item.File.Length > 0) { machine[Data.Models.Metadata.Machine.RomKey] = Array.ConvertAll(item.File, ConvertToInternalModel); } return machine; } /// /// Convert from to /// private static Data.Models.Metadata.Rom ConvertToInternalModel(File item) { var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.NameKey] = item.Name, [Data.Models.Metadata.Rom.SizeKey] = item.Size, [Data.Models.Metadata.Rom.CRCKey] = item.CRC, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, [Data.Models.Metadata.Rom.DateKey] = item.Date, }; return rom; } } }