using System; using SabreTools.Data.Models.EverdriveSMDB; namespace SabreTools.Serialization.CrossModel { public partial class EverdriveSMDB : BaseMetadataSerializer { /// public override Data.Models.Metadata.MetadataFile? Serialize(MetadataFile? obj) { if (obj is null) return null; var metadataFile = new Data.Models.Metadata.MetadataFile { [Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(), }; if (obj?.Row is not null && obj.Row.Length > 0) { metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel); } return metadataFile; } /// /// Convert from to /// private static Data.Models.Metadata.Header ConvertHeaderToInternalModel() { var header = new Data.Models.Metadata.Header { Name = "Everdrive SMDB", }; return header; } /// /// Convert from to /// private static Data.Models.Metadata.Machine ConvertMachineToInternalModel(Row item) { var machine = new Data.Models.Metadata.Machine { [Data.Models.Metadata.Machine.RomKey] = new Data.Models.Metadata.Rom[] { ConvertToInternalModel(item) }, }; return machine; } /// /// Convert from to /// private static Data.Models.Metadata.Rom ConvertToInternalModel(Row item) { var rom = new Data.Models.Metadata.Rom { [Data.Models.Metadata.Rom.SHA256Key] = item.SHA256, Name = item.Name, [Data.Models.Metadata.Rom.SHA1Key] = item.SHA1, [Data.Models.Metadata.Rom.MD5Key] = item.MD5, [Data.Models.Metadata.Rom.CRCKey] = item.CRC32, Size = item.Size, }; return rom; } } }