diff --git a/SabreTools.Models/Internal/Header.cs b/SabreTools.Models/Internal/Header.cs index 4d47fdc6..fd00f0e6 100644 --- a/SabreTools.Models/Internal/Header.cs +++ b/SabreTools.Models/Internal/Header.cs @@ -26,10 +26,6 @@ namespace SabreTools.Models.Internal /// string public const string CommentKey = "comment"; - /// TODO: This needs an internal model OR mapping to fields - /// Configuration - public const string ConfigurationKey = "configuration"; - /// string public const string DateKey = "date"; diff --git a/SabreTools.Serialization/Internal.AttractMode.cs b/SabreTools.Serialization/Internal.AttractMode.cs index 8f1b5f73..392bef5e 100644 --- a/SabreTools.Serialization/Internal.AttractMode.cs +++ b/SabreTools.Serialization/Internal.AttractMode.cs @@ -71,6 +71,21 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.AttractMode.MetadataFile? ConvertHeaderToAttractMode(Models.Internal.Header? item) + { + if (item == null) + return null; + + var metadataFile = new Models.AttractMode.MetadataFile + { + Header = item.ReadStringArray(Models.Internal.Header.HeaderKey), + }; + return metadataFile; + } + /// /// Convert from to an array of /// diff --git a/SabreTools.Serialization/Internal.ClrMamePro.cs b/SabreTools.Serialization/Internal.ClrMamePro.cs index 45d532c6..5d68f04a 100644 --- a/SabreTools.Serialization/Internal.ClrMamePro.cs +++ b/SabreTools.Serialization/Internal.ClrMamePro.cs @@ -374,7 +374,36 @@ namespace SabreTools.Serialization #region Deserialize /// - /// Convert from to + /// Convert from to + /// + public static Models.ClrMamePro.ClrMamePro? ConvertHeaderToClrMamePro(Models.Internal.Header? item) + { + if (item == null) + return null; + + var clrMamePro = new Models.ClrMamePro.ClrMamePro + { + Name = item.ReadString(Models.Internal.Header.NameKey), + Description = item.ReadString(Models.Internal.Header.DescriptionKey), + RootDir = item.ReadString(Models.Internal.Header.RootDirKey), + Category = item.ReadString(Models.Internal.Header.CategoryKey), + Version = item.ReadString(Models.Internal.Header.VersionKey), + Date = item.ReadString(Models.Internal.Header.DateKey), + Author = item.ReadString(Models.Internal.Header.AuthorKey), + Homepage = item.ReadString(Models.Internal.Header.HomepageKey), + Url = item.ReadString(Models.Internal.Header.UrlKey), + Comment = item.ReadString(Models.Internal.Header.CommentKey), + Header = item.ReadString(Models.Internal.Header.HeaderKey), + Type = item.ReadString(Models.Internal.Header.TypeKey), + ForceMerging = item.ReadString(Models.Internal.Header.ForceMergingKey), + ForceZipping = item.ReadString(Models.Internal.Header.ForceZippingKey), + ForcePacking = item.ReadString(Models.Internal.Header.ForcePackingKey), + }; + return clrMamePro; + } + + /// + /// Convert from to /// public static Models.ClrMamePro.GameBase? ConvertMachineToClrMamePro(Models.Internal.Machine? item, bool game = false) { diff --git a/SabreTools.Serialization/Internal.DosCenter.cs b/SabreTools.Serialization/Internal.DosCenter.cs index 1ec947d4..2ef43386 100644 --- a/SabreTools.Serialization/Internal.DosCenter.cs +++ b/SabreTools.Serialization/Internal.DosCenter.cs @@ -13,7 +13,7 @@ namespace SabreTools.Serialization /// /// Convert from to /// - public static Models.Internal.Header ConvertHeaderFromArchiveDotOrg(Models.DosCenter.DosCenter item) + public static Models.Internal.Header ConvertHeaderFromDosCenter(Models.DosCenter.DosCenter item) { var header = new Models.Internal.Header { @@ -70,6 +70,27 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.DosCenter.DosCenter? ConvertHeaderToDosCenter(Models.Internal.Header? item) + { + if (item == null) + return null; + + var dosCenter = new Models.DosCenter.DosCenter + { + Name = item.ReadString(Models.Internal.Header.NameKey), + Description = item.ReadString(Models.Internal.Header.DescriptionKey), + Version = item.ReadString(Models.Internal.Header.VersionKey), + Date = item.ReadString(Models.Internal.Header.DateKey), + Author = item.ReadString(Models.Internal.Header.AuthorKey), + Homepage = item.ReadString(Models.Internal.Header.HomepageKey), + Comment = item.ReadString(Models.Internal.Header.CommentKey), + }; + return dosCenter; + } + /// /// Convert from to /// diff --git a/SabreTools.Serialization/Internal.Listxml.cs b/SabreTools.Serialization/Internal.Listxml.cs index 93afdd4f..c144973c 100644 --- a/SabreTools.Serialization/Internal.Listxml.cs +++ b/SabreTools.Serialization/Internal.Listxml.cs @@ -810,6 +810,38 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.Listxml.M1? ConvertHeaderToListxmlM1(Models.Internal.Header? item) + { + if (item == null) + return null; + + var m1 = new Models.Listxml.M1 + { + Version = item.ReadString(Models.Internal.Header.VersionKey), + }; + return m1; + } + + /// + /// Convert from to + /// + public static Models.Listxml.Mame? ConvertHeaderToListxmlMame(Models.Internal.Header? item) + { + if (item == null) + return null; + + var mame = new Models.Listxml.Mame + { + Build = item.ReadString(Models.Internal.Header.BuildKey), + Debug = item.ReadString(Models.Internal.Header.DebugKey), + MameConfig = item.ReadString(Models.Internal.Header.MameConfigKey), + }; + return mame; + } + /// /// Convert from to /// @@ -1081,7 +1113,7 @@ namespace SabreTools.Serialization /// /// Convert from to /// - private static Models.Listxml.Device ConvertToListxml(Models.Internal.Device item) + private static Models.Listxml.Device? ConvertToListxml(Models.Internal.Device? item) { if (item == null) return null; diff --git a/SabreTools.Serialization/Internal.Logiqx.cs b/SabreTools.Serialization/Internal.Logiqx.cs index a28f23b5..3567df52 100644 --- a/SabreTools.Serialization/Internal.Logiqx.cs +++ b/SabreTools.Serialization/Internal.Logiqx.cs @@ -352,6 +352,68 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.Logiqx.Header? ConvertHeaderToLogiqx(Models.Internal.Header? item) + { + if (item == null) + return null; + + var header = new Models.Logiqx.Header + { + Id = item.ReadString(Models.Internal.Header.IdKey), + Name = item.ReadString(Models.Internal.Header.NameKey), + Description = item.ReadString(Models.Internal.Header.DescriptionKey), + RootDir = item.ReadString(Models.Internal.Header.RootDirKey), + Category = item.ReadString(Models.Internal.Header.CategoryKey), + Version = item.ReadString(Models.Internal.Header.VersionKey), + Date = item.ReadString(Models.Internal.Header.DateKey), + Author = item.ReadString(Models.Internal.Header.AuthorKey), + Email = item.ReadString(Models.Internal.Header.EmailKey), + Homepage = item.ReadString(Models.Internal.Header.HomepageKey), + Url = item.ReadString(Models.Internal.Header.UrlKey), + Comment = item.ReadString(Models.Internal.Header.CommentKey), + Type = item.ReadString(Models.Internal.Header.TypeKey), + }; + + if (item.ContainsKey(Models.Internal.Header.HeaderKey) + || item.ContainsKey(Models.Internal.Header.ForceMergingKey) + || item.ContainsKey(Models.Internal.Header.ForceNodumpKey) + || item.ContainsKey(Models.Internal.Header.ForcePackingKey)) + { + header.ClrMamePro = new Models.Logiqx.ClrMamePro + { + Header = item.ReadString(Models.Internal.Header.HeaderKey), + ForceMerging = item.ReadString(Models.Internal.Header.ForceMergingKey), + ForceNodump = item.ReadString(Models.Internal.Header.ForceNodumpKey), + ForcePacking = item.ReadString(Models.Internal.Header.ForcePackingKey), + }; + } + + if (item.ContainsKey(Models.Internal.Header.PluginKey) + || item.ContainsKey(Models.Internal.Header.RomModeKey) + || item.ContainsKey(Models.Internal.Header.BiosModeKey) + || item.ContainsKey(Models.Internal.Header.SampleModeKey) + || item.ContainsKey(Models.Internal.Header.LockRomModeKey) + || item.ContainsKey(Models.Internal.Header.LockBiosModeKey) + || item.ContainsKey(Models.Internal.Header.LockSampleModeKey)) + { + header.RomCenter = new Models.Logiqx.RomCenter + { + Plugin = item.ReadString(Models.Internal.Header.PluginKey), + RomMode = item.ReadString(Models.Internal.Header.RomModeKey), + BiosMode = item.ReadString(Models.Internal.Header.BiosModeKey), + SampleMode = item.ReadString(Models.Internal.Header.SampleModeKey), + LockRomMode = item.ReadString(Models.Internal.Header.LockRomModeKey), + LockBiosMode = item.ReadString(Models.Internal.Header.LockBiosModeKey), + LockSampleMode = item.ReadString(Models.Internal.Header.LockSampleModeKey), + }; + } + + return header; + } + /// /// Convert from to /// diff --git a/SabreTools.Serialization/Internal.OfflineList.cs b/SabreTools.Serialization/Internal.OfflineList.cs index 1548140a..e49fdbd1 100644 --- a/SabreTools.Serialization/Internal.OfflineList.cs +++ b/SabreTools.Serialization/Internal.OfflineList.cs @@ -109,6 +109,58 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.OfflineList.Dat? ConvertHeaderToOfflineList(Models.Internal.Header? item) + { + if (item == null) + return null; + + var dat = new Models.OfflineList.Dat + { + NoNamespaceSchemaLocation = item.ReadString(Models.Internal.Header.NoNamespaceSchemaLocationKey), + }; + + if (item.ContainsKey(Models.Internal.Header.NameKey) + || item.ContainsKey(Models.Internal.Header.ImFolderKey) + || item.ContainsKey(Models.Internal.Header.DatVersionKey) + || item.ContainsKey(Models.Internal.Header.SystemKey) + || item.ContainsKey(Models.Internal.Header.ScreenshotsWidthKey) + || item.ContainsKey(Models.Internal.Header.ScreenshotsHeightKey) + || item.ContainsKey(Models.Internal.Header.InfosKey) + || item.ContainsKey(Models.Internal.Header.CanOpenKey) + || item.ContainsKey(Models.Internal.Header.NewDatKey) + || item.ContainsKey(Models.Internal.Header.SearchKey) + || item.ContainsKey(Models.Internal.Header.RomTitleKey)) + { + dat.Configuration = new Models.OfflineList.Configuration + { + DatName = item.ReadString(Models.Internal.Header.NameKey), + ImFolder = item.ReadString(Models.Internal.Header.ImFolderKey), + DatVersion = item.ReadString(Models.Internal.Header.DatVersionKey), + System = item.ReadString(Models.Internal.Header.SystemKey), + ScreenshotsWidth = item.ReadString(Models.Internal.Header.ScreenshotsWidthKey), + ScreenshotsHeight = item.ReadString(Models.Internal.Header.ScreenshotsHeightKey), + Infos = item.Read(Models.Internal.Header.InfosKey), + CanOpen = item.Read(Models.Internal.Header.CanOpenKey), + NewDat = item.Read(Models.Internal.Header.NewDatKey), + Search = item.Read(Models.Internal.Header.SearchKey), + RomTitle = item.ReadString(Models.Internal.Header.RomTitleKey), + }; + } + + if (item.ContainsKey(Models.Internal.Header.ImagesKey)) + { + dat.GUI = new Models.OfflineList.GUI + { + Images = item.Read(Models.Internal.Header.ImagesKey), + }; + } + + return dat; + } + /// /// Convert from to /// diff --git a/SabreTools.Serialization/Internal.OpenMSX.cs b/SabreTools.Serialization/Internal.OpenMSX.cs index eaf9d5ed..ebd915f7 100644 --- a/SabreTools.Serialization/Internal.OpenMSX.cs +++ b/SabreTools.Serialization/Internal.OpenMSX.cs @@ -110,6 +110,21 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.OpenMSX.SoftwareDb? ConvertHeaderToOpenMSX(Models.Internal.Header? item) + { + if (item == null) + return null; + + var softwareDb = new Models.OpenMSX.SoftwareDb + { + Timestamp = item.ReadString(Models.Internal.Header.TimestampKey), + }; + return softwareDb; + } + /// /// Convert from to /// diff --git a/SabreTools.Serialization/Internal.RomCenter.cs b/SabreTools.Serialization/Internal.RomCenter.cs index 53ce7d63..829a5eef 100644 --- a/SabreTools.Serialization/Internal.RomCenter.cs +++ b/SabreTools.Serialization/Internal.RomCenter.cs @@ -83,6 +83,62 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.RomCenter.MetadataFile? ConvertHeaderToRomCenter(Models.Internal.Header? item) + { + if (item == null) + return null; + + var metadataFile = new Models.RomCenter.MetadataFile(); + + if (item.ContainsKey(Models.Internal.Header.AuthorKey) + || item.ContainsKey(Models.Internal.Header.VersionKey) + || item.ContainsKey(Models.Internal.Header.EmailKey) + || item.ContainsKey(Models.Internal.Header.HomepageKey) + || item.ContainsKey(Models.Internal.Header.UrlKey) + || item.ContainsKey(Models.Internal.Header.DateKey) + || item.ContainsKey(Models.Internal.Header.CommentKey)) + { + metadataFile.Credits = new Models.RomCenter.Credits + { + Author = item.ReadString(Models.Internal.Header.AuthorKey), + Version = item.ReadString(Models.Internal.Header.VersionKey), + Email = item.ReadString(Models.Internal.Header.EmailKey), + Homepage = item.ReadString(Models.Internal.Header.HomepageKey), + Url = item.ReadString(Models.Internal.Header.UrlKey), + Date = item.ReadString(Models.Internal.Header.DateKey), + Comment = item.ReadString(Models.Internal.Header.CommentKey), + }; + } + + if (item.ContainsKey(Models.Internal.Header.DatVersionKey) + || item.ContainsKey(Models.Internal.Header.PluginKey) + || item.ContainsKey(Models.Internal.Header.ForceMergingKey)) + { + metadataFile.Dat = new Models.RomCenter.Dat + { + Version = item.ReadString(Models.Internal.Header.DatVersionKey), + Plugin = item.ReadString(Models.Internal.Header.PluginKey), + Split = item.ReadString(Models.Internal.Header.ForceMergingKey) == "split" ? "yes" : "no", + Merge = item.ReadString(Models.Internal.Header.ForceMergingKey) == "merge" ? "yes" : "no", + }; + } + + if (item.ContainsKey(Models.Internal.Header.RefNameKey) + || item.ContainsKey(Models.Internal.Header.EmulatorVersionKey)) + { + metadataFile.Emulator = new Models.RomCenter.Emulator + { + RefName = item.ReadString(Models.Internal.Header.RefNameKey), + Version = item.ReadString(Models.Internal.Header.EmulatorVersionKey), + }; + } + + return metadataFile; + } + /// /// Convert from to an array of /// diff --git a/SabreTools.Serialization/Internal.SeparatedValue.cs b/SabreTools.Serialization/Internal.SeparatedValue.cs index 86ba4736..d238188c 100644 --- a/SabreTools.Serialization/Internal.SeparatedValue.cs +++ b/SabreTools.Serialization/Internal.SeparatedValue.cs @@ -13,7 +13,7 @@ namespace SabreTools.Serialization /// /// Convert from to /// - public static Models.Internal.Header ConvertHeaderFromArchiveDotOrg(Models.SeparatedValue.MetadataFile item) + public static Models.Internal.Header ConvertHeaderFromSeparatedValue(Models.SeparatedValue.MetadataFile item) { var header = new Models.Internal.Header { @@ -104,6 +104,21 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.SeparatedValue.MetadataFile? ConvertHeaderToSeparatedValue(Models.Internal.Header? item) + { + if (item == null) + return null; + + var metadataFile = new Models.SeparatedValue.MetadataFile + { + Header = item.ReadStringArray(Models.Internal.Header.HeaderKey), + }; + return metadataFile; + } + /// /// Convert from to an array of /// diff --git a/SabreTools.Serialization/Internal.SoftwareList.cs b/SabreTools.Serialization/Internal.SoftwareList.cs index c2f0ad28..382e53df 100644 --- a/SabreTools.Serialization/Internal.SoftwareList.cs +++ b/SabreTools.Serialization/Internal.SoftwareList.cs @@ -294,6 +294,23 @@ namespace SabreTools.Serialization #region Deserialize + /// + /// Convert from to + /// + public static Models.SoftwareList.SoftwareList? ConvertHeaderToSoftwareList(Models.Internal.Header? item) + { + if (item == null) + return null; + + var softwareList = new Models.SoftwareList.SoftwareList + { + Name = item.ReadString(Models.Internal.Header.NameKey), + Description = item.ReadString(Models.Internal.Header.DescriptionKey), + Notes = item.ReadString(Models.Internal.Header.NotesKey), + }; + return softwareList; + } + /// /// Convert from to ///