From d79c58c4af77798346669da2955808ead1d60393 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sat, 5 Aug 2023 01:49:16 -0400 Subject: [PATCH] Add OpenMSX machine serialization --- SabreTools.Serialization/Internal.OpenMSX.cs | 59 ++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/SabreTools.Serialization/Internal.OpenMSX.cs b/SabreTools.Serialization/Internal.OpenMSX.cs index 9df5bd9a..39d5ed35 100644 --- a/SabreTools.Serialization/Internal.OpenMSX.cs +++ b/SabreTools.Serialization/Internal.OpenMSX.cs @@ -1,3 +1,6 @@ +using System.Collections.Generic; +using System.Linq; + namespace SabreTools.Serialization { /// @@ -7,6 +10,34 @@ namespace SabreTools.Serialization { #region Serialize + /// + /// Convert from to + /// + public static Models.Internal.Machine ConvertMachineFromOpenMSX(Models.OpenMSX.Software item) + { + var machine = new Models.Internal.Machine + { + [Models.Internal.Machine.NameKey] = item.Title, + [Models.Internal.Machine.GenMSXIDKey] = item.GenMSXID, + [Models.Internal.Machine.SystemKey] = item.System, + [Models.Internal.Machine.CompanyKey] = item.Company, + [Models.Internal.Machine.YearKey] = item.Year, + [Models.Internal.Machine.CountryKey] = item.Country, + }; + + if (item.Dump != null && item.Dump.Any()) + { + var dumps = new List(); + foreach (var dump in item.Dump) + { + dumps.Add(ConvertFromOpenMSX(dump)); + } + machine[Models.Internal.Machine.DumpKey] = dumps.ToArray(); + } + + return machine; + } + /// /// Convert from to /// @@ -67,6 +98,34 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.OpenMSX.Software ConvertMachineToOpenMSX(Models.Internal.Machine item) + { + var game = new Models.OpenMSX.Software + { + Title = item.ReadString(Models.Internal.Machine.NameKey), + GenMSXID = item.ReadString(Models.Internal.Machine.GenMSXIDKey), + System = item.ReadString(Models.Internal.Machine.SystemKey), + Company = item.ReadString(Models.Internal.Machine.CompanyKey), + Year = item.ReadString(Models.Internal.Machine.YearKey), + Country = item.ReadString(Models.Internal.Machine.CountryKey), + }; + + if (item.ContainsKey(Models.Internal.Machine.DumpKey) && item[Models.Internal.Machine.DumpKey] is Models.Internal.Dump[] dumps) + { + var dumpItems = new List(); + foreach (var dump in dumps) + { + dumpItems.Add(ConvertToOpenMSX(dump)); + } + game.Dump = dumpItems.ToArray(); + } + + return game; + } + /// /// Convert from to ///