diff --git a/SabreTools.Serialization/EverdriveSMDB.Deserializer.cs b/SabreTools.Serialization/EverdriveSMDB.Deserializer.cs index 9d99757e..b907181e 100644 --- a/SabreTools.Serialization/EverdriveSMDB.Deserializer.cs +++ b/SabreTools.Serialization/EverdriveSMDB.Deserializer.cs @@ -76,5 +76,42 @@ namespace SabreTools.Serialization dat.Row = rows.ToArray(); return dat; } + + // TODO: Add deserialization of entire MetadataFile + #region Internal + + /// + /// Convert from to an array of + /// + public static Row[]? ConvertMachineToEverdriveSMDB(Models.Internal.Machine item) + { + if (item == null) + return null; + + var roms = item.Read(Models.Internal.Machine.RomKey); + return roms?.Select(ConvertToEverdriveSMDB)?.ToArray(); + } + + /// + /// Convert from to + /// + private static Row? ConvertToEverdriveSMDB(Models.Internal.Rom? item) + { + if (item == null) + return null; + + var row = new Row + { + SHA256 = item.ReadString(Models.Internal.Rom.SHA256Key), + Name = item.ReadString(Models.Internal.Rom.NameKey), + SHA1 = item.ReadString(Models.Internal.Rom.SHA1Key), + MD5 = item.ReadString(Models.Internal.Rom.MD5Key), + CRC32 = item.ReadString(Models.Internal.Rom.CRCKey), + Size = item.ReadString(Models.Internal.Rom.SizeKey), + }; + return row; + } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Serialization/EverdriveSMDB.Serializer.cs b/SabreTools.Serialization/EverdriveSMDB.Serializer.cs index f6ed64ba..881be788 100644 --- a/SabreTools.Serialization/EverdriveSMDB.Serializer.cs +++ b/SabreTools.Serialization/EverdriveSMDB.Serializer.cs @@ -82,5 +82,66 @@ namespace SabreTools.Serialization writer.Flush(); } } + + #region Internal + + /// + /// Convert from to + /// + public static Models.Internal.MetadataFile ConvertToInternalModel(MetadataFile item) + { + var metadataFile = new Models.Internal.MetadataFile + { + [Models.Internal.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), + }; + + if (item?.Row != null && item.Row.Any()) + metadataFile[Models.Internal.MetadataFile.MachineKey] = item.Row.Select(ConvertMachineToInternalModel).ToArray(); + + return metadataFile; + } + + /// + /// Convert from to + /// + private static Models.Internal.Header ConvertHeaderToInternalModel(MetadataFile item) + { + var header = new Models.Internal.Header + { + [Models.Internal.Header.NameKey] = "Everdrive SMDB", + }; + return header; + } + + /// + /// Convert from to + /// + private static Models.Internal.Machine ConvertMachineToInternalModel(Row item) + { + var machine = new Models.Internal.Machine + { + [Models.Internal.Machine.RomKey] = ConvertToInternalModel(item), + }; + return machine; + } + + /// + /// Convert from to + /// + private static Models.Internal.Rom ConvertToInternalModel(Row item) + { + var rom = new Models.Internal.Rom + { + [Models.Internal.Rom.SHA256Key] = item.SHA256, + [Models.Internal.Rom.NameKey] = item.Name, + [Models.Internal.Rom.SHA1Key] = item.SHA1, + [Models.Internal.Rom.MD5Key] = item.MD5, + [Models.Internal.Rom.CRCKey] = item.CRC32, + [Models.Internal.Rom.SizeKey] = item.Size, + }; + return rom; + } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Serialization/Internal.EverdriveSMDB.cs b/SabreTools.Serialization/Internal.EverdriveSMDB.cs deleted file mode 100644 index 6f54f39c..00000000 --- a/SabreTools.Serialization/Internal.EverdriveSMDB.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System.Linq; -using SabreTools.Models.Internal; - -namespace SabreTools.Serialization -{ - /// - /// Serializer for EverdriveSMDB models to internal structure - /// - public partial class Internal - { - #region Serialize - - /// - /// Convert from to - /// - public static MetadataFile ConvertToInternalModel(Models.EverdriveSMDB.MetadataFile item) - { - var metadataFile = new MetadataFile - { - [MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item), - }; - - if (item?.Row != null && item.Row.Any()) - metadataFile[MetadataFile.MachineKey] = item.Row.Select(ConvertMachineToInternalModel).ToArray(); - - return metadataFile; - } - - /// - /// Convert from to - /// - private static Header ConvertHeaderToInternalModel(Models.EverdriveSMDB.MetadataFile item) - { - var header = new Header - { - [Header.NameKey] = "Everdrive SMDB", - }; - return header; - } - - /// - /// Convert from to - /// - private static Machine ConvertMachineToInternalModel(Models.EverdriveSMDB.Row item) - { - var machine = new Machine - { - [Machine.RomKey] = ConvertToInternalModel(item), - }; - return machine; - } - - /// - /// Convert from to - /// - private static Rom ConvertToInternalModel(Models.EverdriveSMDB.Row item) - { - var rom = new Rom - { - [Rom.SHA256Key] = item.SHA256, - [Rom.NameKey] = item.Name, - [Rom.SHA1Key] = item.SHA1, - [Rom.MD5Key] = item.MD5, - [Rom.CRCKey] = item.CRC32, - [Rom.SizeKey] = item.Size, - }; - return rom; - } - - #endregion - - #region Deserialize - - /// - /// Convert from to an array of - /// - public static Models.EverdriveSMDB.Row[]? ConvertMachineToEverdriveSMDB(Machine item) - { - if (item == null) - return null; - - var roms = item.Read(Machine.RomKey); - return roms?.Select(ConvertToEverdriveSMDB)?.ToArray(); - } - - /// - /// Convert from to - /// - private static Models.EverdriveSMDB.Row? ConvertToEverdriveSMDB(Rom? item) - { - if (item == null) - return null; - - var row = new Models.EverdriveSMDB.Row - { - SHA256 = item.ReadString(Rom.SHA256Key), - Name = item.ReadString(Rom.NameKey), - SHA1 = item.ReadString(Rom.SHA1Key), - MD5 = item.ReadString(Rom.MD5Key), - CRC32 = item.ReadString(Rom.CRCKey), - Size = item.ReadString(Rom.SizeKey), - }; - return row; - } - - #endregion - } -} \ No newline at end of file