diff --git a/SabreTools.Serialization/DosCenter.Deserializer.cs b/SabreTools.Serialization/DosCenter.Deserializer.cs
index aa668de5..cc707cf9 100644
--- a/SabreTools.Serialization/DosCenter.Deserializer.cs
+++ b/SabreTools.Serialization/DosCenter.Deserializer.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.IO;
+using System.Linq;
using System.Text;
using SabreTools.IO.Readers;
using SabreTools.Models.DosCenter;
@@ -230,5 +231,68 @@ namespace SabreTools.Serialization
file.ADDITIONAL_ELEMENTS = itemAdditional.ToArray();
return file;
}
+
+ // TODO: Add deserialization of entire MetadataFile
+ #region Internal
+
+ ///
+ /// Convert from to
+ ///
+ public static Models.DosCenter.DosCenter? ConvertHeaderFromInternalModel(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
+ ///
+ public static Game? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
+ {
+ if (item == null)
+ return null;
+
+ var game = new Game
+ {
+ Name = item.ReadString(Models.Internal.Machine.NameKey),
+ };
+
+ var roms = item.Read(Models.Internal.Machine.RomKey);
+ game.File = roms?.Select(ConvertFromInternalModel)?.ToArray();
+
+ return game;
+ }
+
+ ///
+ /// Convert from to
+ ///
+ private static Models.DosCenter.File? ConvertFromInternalModel(Models.Internal.Rom? item)
+ {
+ if (item == null)
+ return null;
+
+ var file = new Models.DosCenter.File
+ {
+ Name = item.ReadString(Models.Internal.Rom.NameKey),
+ Size = item.ReadString(Models.Internal.Rom.SizeKey),
+ CRC = item.ReadString(Models.Internal.Rom.CRCKey),
+ Date = item.ReadString(Models.Internal.Rom.DateKey),
+ };
+ return file;
+ }
+
+ #endregion
}
}
\ No newline at end of file
diff --git a/SabreTools.Serialization/DosCenter.Serializer.cs b/SabreTools.Serialization/DosCenter.Serializer.cs
index fe774bc2..77b87e2e 100644
--- a/SabreTools.Serialization/DosCenter.Serializer.cs
+++ b/SabreTools.Serialization/DosCenter.Serializer.cs
@@ -145,5 +145,74 @@ namespace SabreTools.Serialization
writer.WriteEndElement(); // file
}
}
+
+ #region Internal
+
+ ///
+ /// Convert from to
+ ///
+ public static Models.Internal.MetadataFile ConvertToInternalModel(MetadataFile item)
+ {
+ var metadataFile = new Models.Internal.MetadataFile();
+
+ if (item?.DosCenter != null)
+ metadataFile[Models.Internal.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item.DosCenter);
+
+ if (item?.Game != null && item.Game.Any())
+ metadataFile[Models.Internal.MetadataFile.MachineKey] = item.Game.Select(ConvertMachineToInternalModel).ToArray();
+
+ return metadataFile;
+ }
+
+ ///
+ /// Convert from to
+ ///
+ private static Models.Internal.Header ConvertHeaderToInternalModel(Models.DosCenter.DosCenter item)
+ {
+ var header = new Models.Internal.Header
+ {
+ [Models.Internal.Header.NameKey] = item.Name,
+ [Models.Internal.Header.DescriptionKey] = item.Description,
+ [Models.Internal.Header.VersionKey] = item.Version,
+ [Models.Internal.Header.DateKey] = item.Date,
+ [Models.Internal.Header.AuthorKey] = item.Author,
+ [Models.Internal.Header.HomepageKey] = item.Homepage,
+ [Models.Internal.Header.CommentKey] = item.Comment,
+ };
+ return header;
+ }
+
+ ///
+ /// Convert from to
+ ///
+ private static Models.Internal.Machine ConvertMachineToInternalModel(Game item)
+ {
+ var machine = new Models.Internal.Machine
+ {
+ [Models.Internal.Machine.NameKey] = item.Name,
+ };
+
+ if (item.File != null && item.File.Any())
+ machine[Models.Internal.Machine.RomKey] = item.File.Select(ConvertToInternalModel).ToArray();
+
+ return machine;
+ }
+
+ ///
+ /// Convert from to
+ ///
+ private static Models.Internal.Rom ConvertToInternalModel(Models.DosCenter.File item)
+ {
+ var rom = new Models.Internal.Rom
+ {
+ [Models.Internal.Rom.NameKey] = item.Name,
+ [Models.Internal.Rom.SizeKey] = item.Size,
+ [Models.Internal.Rom.CRCKey] = item.CRC,
+ [Models.Internal.Rom.DateKey] = item.Date,
+ };
+ return rom;
+ }
+
+ #endregion
}
}
\ No newline at end of file
diff --git a/SabreTools.Serialization/Internal.DosCenter.cs b/SabreTools.Serialization/Internal.DosCenter.cs
deleted file mode 100644
index d10c2a40..00000000
--- a/SabreTools.Serialization/Internal.DosCenter.cs
+++ /dev/null
@@ -1,150 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using SabreTools.Models.Internal;
-
-namespace SabreTools.Serialization
-{
- ///
- /// Serializer for DosCenter models to internal structure
- ///
- public partial class Internal
- {
- #region Serialize
-
- ///
- /// Convert from to
- ///
- public static MetadataFile ConvertToInternalModel(Models.DosCenter.MetadataFile item)
- {
- var metadataFile = new MetadataFile();
-
- if (item?.DosCenter != null)
- metadataFile[MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item.DosCenter);
-
- if (item?.Game != null && item.Game.Any())
- metadataFile[MetadataFile.MachineKey] = item.Game.Select(ConvertMachineToInternalModel).ToArray();
-
- return metadataFile;
- }
-
- ///
- /// Convert from to
- ///
- private static Header ConvertHeaderToInternalModel(Models.DosCenter.DosCenter item)
- {
- var header = new Header
- {
- [Header.NameKey] = item.Name,
- [Header.DescriptionKey] = item.Description,
- [Header.VersionKey] = item.Version,
- [Header.DateKey] = item.Date,
- [Header.AuthorKey] = item.Author,
- [Header.HomepageKey] = item.Homepage,
- [Header.CommentKey] = item.Comment,
- };
- return header;
- }
-
- ///
- /// Convert from to
- ///
- private static Machine ConvertMachineToInternalModel(Models.DosCenter.Game item)
- {
- var machine = new Machine
- {
- [Machine.NameKey] = item.Name,
- };
-
- if (item.File != null && item.File.Any())
- {
- var roms = new List();
- foreach (var file in item.File)
- {
- roms.Add(ConvertToInternalModel(file));
- }
- machine[Machine.RomKey] = roms.ToArray();
- }
-
- return machine;
- }
-
- ///
- /// Convert from to
- ///
- private static Rom ConvertToInternalModel(Models.DosCenter.File item)
- {
- var rom = new Rom
- {
- [Rom.NameKey] = item.Name,
- [Rom.SizeKey] = item.Size,
- [Rom.CRCKey] = item.CRC,
- [Rom.DateKey] = item.Date,
- };
- return rom;
- }
-
- #endregion
-
- #region Deserialize
-
- ///
- /// Convert from to
- ///
- public static Models.DosCenter.DosCenter? ConvertHeaderToDosCenter(Header? item)
- {
- if (item == null)
- return null;
-
- var dosCenter = new Models.DosCenter.DosCenter
- {
- Name = item.ReadString(Header.NameKey),
- Description = item.ReadString(Header.DescriptionKey),
- Version = item.ReadString(Header.VersionKey),
- Date = item.ReadString(Header.DateKey),
- Author = item.ReadString(Header.AuthorKey),
- Homepage = item.ReadString(Header.HomepageKey),
- Comment = item.ReadString(Header.CommentKey),
- };
- return dosCenter;
- }
-
- ///
- /// Convert from to
- ///
- public static Models.DosCenter.Game? ConvertMachineToDosCenter(Machine? item)
- {
- if (item == null)
- return null;
-
- var game = new Models.DosCenter.Game
- {
- Name = item.ReadString(Machine.NameKey),
- };
-
- var roms = item.Read(Machine.RomKey);
- game.File = roms?.Select(ConvertToDosCenter)?.ToArray();
-
- return game;
- }
-
- ///
- /// Convert from to
- ///
- private static Models.DosCenter.File? ConvertToDosCenter(Rom? item)
- {
- if (item == null)
- return null;
-
- var file = new Models.DosCenter.File
- {
- Name = item.ReadString(Rom.NameKey),
- Size = item.ReadString(Rom.SizeKey),
- CRC = item.ReadString(Rom.CRCKey),
- Date = item.ReadString(Rom.DateKey),
- };
- return file;
- }
-
- #endregion
- }
-}
\ No newline at end of file