mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Add full-file deserialization across the board
This commit is contained in:
@@ -8,13 +8,29 @@ namespace SabreTools.Serialization
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class ArchiveDotOrg : XmlSerializer<Files>
|
public partial class ArchiveDotOrg : XmlSerializer<Files>
|
||||||
{
|
{
|
||||||
// TODO: Add deserialization of entire Files
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to an array of <cref="Models.ArchiveDotOrg.Files"/>
|
||||||
|
/// </summary>
|
||||||
|
public static Files? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var files = new Files();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
files.File = machines.SelectMany(ConvertFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.ArchiveDotOrg.File"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.ArchiveDotOrg.File"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static File[]? ConvertFromInternalModel(Models.Internal.Machine? item)
|
private static File[]? ConvertFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -121,13 +121,30 @@ namespace SabreTools.Serialization
|
|||||||
return dat;
|
return dat;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add deserialization of entire MetadataFile
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.AttractMode.MetadataFile"/>
|
||||||
|
/// </summary>
|
||||||
|
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
var metadataFile = header != null ? ConvertHeaderFromInternalModel(header) : new MetadataFile();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
metadataFile.Row = machines.SelectMany(ConvertMachineFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return metadataFile;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.AttractMode.MetadataFile"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.AttractMode.MetadataFile"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static MetadataFile? ConvertHeaderToInternalModel(Models.Internal.Header? item)
|
private static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -142,7 +159,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.AttractMode.Row"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.AttractMode.Row"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Row?[]? ConvertMachineToInternalModel(Models.Internal.Machine? item)
|
private static Row?[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -153,7 +170,7 @@ namespace SabreTools.Serialization
|
|||||||
if (rom == null)
|
if (rom == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var rowItem = ConvertToInternalModel(rom);
|
var rowItem = ConvertFromInternalModel(rom);
|
||||||
|
|
||||||
rowItem.Name = item.ReadString(Models.Internal.Machine.NameKey);
|
rowItem.Name = item.ReadString(Models.Internal.Machine.NameKey);
|
||||||
rowItem.Emulator = item.ReadString(Models.Internal.Machine.EmulatorKey);
|
rowItem.Emulator = item.ReadString(Models.Internal.Machine.EmulatorKey);
|
||||||
@@ -181,7 +198,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.AttractMode.Row"/>
|
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.AttractMode.Row"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static Row? ConvertToInternalModel(Models.Internal.Rom? item)
|
private static Row? ConvertFromInternalModel(Models.Internal.Rom? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -830,13 +830,33 @@ namespace SabreTools.Serialization
|
|||||||
return driver;
|
return driver;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add deserialization of entire MetadataFile
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.ClrMamePro.MetadataFile"/>
|
||||||
|
/// </summary>
|
||||||
|
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item, bool game = false)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var metadataFile = new MetadataFile();
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
if (header != null)
|
||||||
|
metadataFile.ClrMamePro = ConvertHeaderFromInternalModel(header);
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
metadataFile.Game = machines.Select(machine => ConvertMachineFromInternalModel(machine, game)).ToArray();
|
||||||
|
|
||||||
|
return metadataFile;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.ClrMamePro.ClrMamePro"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.ClrMamePro.ClrMamePro"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Models.ClrMamePro.ClrMamePro? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
private static Models.ClrMamePro.ClrMamePro? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -865,7 +885,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Archive"/> to <cref="Models.ClrMamePro.Machine"/>
|
/// Convert from <cref="Models.Internal.Archive"/> to <cref="Models.ClrMamePro.Machine"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item, bool game = false)
|
private static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item, bool game = false)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -18,18 +18,10 @@ namespace SabreTools.Serialization
|
|||||||
/// <param name="path">Path to the file to deserialize</param>
|
/// <param name="path">Path to the file to deserialize</param>
|
||||||
/// <returns>Deserialized data on success, null on failure</returns>
|
/// <returns>Deserialized data on success, null on failure</returns>
|
||||||
public static MetadataFile? Deserialize(string path)
|
public static MetadataFile? Deserialize(string path)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
using var stream = PathProcessor.OpenStream(path);
|
using var stream = PathProcessor.OpenStream(path);
|
||||||
return Deserialize(stream);
|
return Deserialize(stream);
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{
|
|
||||||
// TODO: Handle logging the exception
|
|
||||||
return default;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deserializes a DosCenter metadata file in a stream to the defined type
|
/// Deserializes a DosCenter metadata file in a stream to the defined type
|
||||||
@@ -37,8 +29,6 @@ namespace SabreTools.Serialization
|
|||||||
/// <param name="stream">Stream to deserialize</param>
|
/// <param name="stream">Stream to deserialize</param>
|
||||||
/// <returns>Deserialized data on success, null on failure</returns>
|
/// <returns>Deserialized data on success, null on failure</returns>
|
||||||
public static MetadataFile? Deserialize(Stream? stream)
|
public static MetadataFile? Deserialize(Stream? stream)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
// If the stream is null
|
// If the stream is null
|
||||||
if (stream == null)
|
if (stream == null)
|
||||||
@@ -190,12 +180,6 @@ namespace SabreTools.Serialization
|
|||||||
dat.ADDITIONAL_ELEMENTS = additional.ToArray();
|
dat.ADDITIONAL_ELEMENTS = additional.ToArray();
|
||||||
return dat;
|
return dat;
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{
|
|
||||||
// TODO: Handle logging the exception
|
|
||||||
return default;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a File object from the current reader context
|
/// Create a File object from the current reader context
|
||||||
@@ -232,13 +216,33 @@ namespace SabreTools.Serialization
|
|||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add deserialization of entire MetadataFile
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.DosCenter.MetadataFile"/>
|
||||||
|
/// </summary>
|
||||||
|
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var metadataFile = new MetadataFile();
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
if (header != null)
|
||||||
|
metadataFile.DosCenter = ConvertHeaderFromInternalModel(header);
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
metadataFile.Game = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return metadataFile;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.DosCenter.DosCenter"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.DosCenter.DosCenter"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Models.DosCenter.DosCenter? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
private static Models.DosCenter.DosCenter? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -259,7 +263,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.DosCenter.Game"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.DosCenter.Game"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Game? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
private static Game? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -77,25 +77,41 @@ namespace SabreTools.Serialization
|
|||||||
return dat;
|
return dat;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add deserialization of entire MetadataFile
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.EverdriveSMDB.MetadataFile"/>
|
||||||
|
/// </summary>
|
||||||
|
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var metadataFile = new MetadataFile();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
metadataFile.Row = machines.SelectMany(ConvertMachineFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return metadataFile;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.EverdriveSMDB.Row"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.EverdriveSMDB.Row"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Row[]? ConvertMachineToEverdriveSMDB(Models.Internal.Machine item)
|
private static Row[]? ConvertMachineFromInternalModel(Models.Internal.Machine item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var roms = item.Read<Models.Internal.Rom[]>(Models.Internal.Machine.RomKey);
|
var roms = item.Read<Models.Internal.Rom[]>(Models.Internal.Machine.RomKey);
|
||||||
return roms?.Select(ConvertToEverdriveSMDB)?.ToArray();
|
return roms?.Select(ConvertFromInternalModel)?.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.EverdriveSMDB.Row"/>
|
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.EverdriveSMDB.Row"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static Row? ConvertToEverdriveSMDB(Models.Internal.Rom? item)
|
private static Row? ConvertFromInternalModel(Models.Internal.Rom? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -142,13 +142,27 @@ namespace SabreTools.Serialization
|
|||||||
return dat;
|
return dat;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add deserialization of entire Hashfile
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to an array of <cref="Models.Hashfile.Hashfile"/>
|
||||||
|
/// </summary>
|
||||||
|
public static Models.Hashfile.Hashfile[]? ConvertFromInternalModel(Models.Internal.MetadataFile? item, Hash hash)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
return machines.Select(machine => ConvertMachineFromInternalModel(machine, hash)).ToArray();
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Hashfile.Hashfile"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Hashfile.Hashfile"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Models.Hashfile.Hashfile? ConvertMachineToInternalModel(Models.Internal.Machine? item, Hash hash)
|
private static Models.Hashfile.Hashfile? ConvertMachineFromInternalModel(Models.Internal.Machine? item, Hash hash)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -188,13 +188,29 @@ namespace SabreTools.Serialization
|
|||||||
return dat;
|
return dat;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add deserialization of entire MetadataFile
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.Listrom.MetadataFile"/>
|
||||||
|
/// </summary>
|
||||||
|
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var metadataFile = new MetadataFile();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
metadataFile.Set = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return metadataFile;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Listrom.Set"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Listrom.Set"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Set? ConvertMachineToListrom(Models.Internal.Machine? item)
|
private static Set? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -209,11 +225,11 @@ namespace SabreTools.Serialization
|
|||||||
|
|
||||||
var roms = item.Read<Models.Internal.Rom[]>(Models.Internal.Machine.RomKey);
|
var roms = item.Read<Models.Internal.Rom[]>(Models.Internal.Machine.RomKey);
|
||||||
if (roms != null)
|
if (roms != null)
|
||||||
rowItems.AddRange(roms.Select(ConvertToListrom));
|
rowItems.AddRange(roms.Select(ConvertFromInternalModel));
|
||||||
|
|
||||||
var disks = item.Read<Models.Internal.Disk[]>(Models.Internal.Machine.DiskKey);
|
var disks = item.Read<Models.Internal.Disk[]>(Models.Internal.Machine.DiskKey);
|
||||||
if (disks != null)
|
if (disks != null)
|
||||||
rowItems.AddRange(disks.Select(ConvertToListrom));
|
rowItems.AddRange(disks.Select(ConvertFromInternalModel));
|
||||||
|
|
||||||
set.Row = rowItems.ToArray();
|
set.Row = rowItems.ToArray();
|
||||||
return set;
|
return set;
|
||||||
@@ -222,7 +238,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Disk"/> to <cref="Models.Listrom.Row"/>
|
/// Convert from <cref="Models.Internal.Disk"/> to <cref="Models.Listrom.Row"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static Row? ConvertToListrom(Models.Internal.Disk? item)
|
private static Row? ConvertFromInternalModel(Models.Internal.Disk? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -245,7 +261,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.Listrom.Row"/>
|
/// Convert from <cref="Models.Internal.Rom"/> to <cref="Models.Listrom.Row"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private static Row? ConvertToListrom(Models.Internal.Rom? item)
|
private static Row? ConvertFromInternalModel(Models.Internal.Rom? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -10,10 +10,46 @@ namespace SabreTools.Serialization
|
|||||||
{
|
{
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.Listxml.M1"/>
|
||||||
|
/// </summary>
|
||||||
|
public static M1? ConvertM1FromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
var m1 = header != null ? ConvertM1FromInternalModel(header) : new M1();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
m1.Game = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return m1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.Listxml.Mame"/>
|
||||||
|
/// </summary>
|
||||||
|
public static Mame? ConvertMameFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
var mame = header != null ? ConvertMameFromInternalModel(header) : new Mame();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
mame.Game = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return mame;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.Listxml.M1"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.Listxml.M1"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static M1? ConvertM1FromInternalModel(Models.Internal.Header? item)
|
private static M1? ConvertM1FromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -28,7 +64,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.Listxml.Mame"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.Listxml.Mame"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Mame? ConvertMameFromInternalModel(Models.Internal.Header? item)
|
private static Mame? ConvertMameFromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -39,13 +75,14 @@ namespace SabreTools.Serialization
|
|||||||
Debug = item.ReadString(Models.Internal.Header.DebugKey),
|
Debug = item.ReadString(Models.Internal.Header.DebugKey),
|
||||||
MameConfig = item.ReadString(Models.Internal.Header.MameConfigKey),
|
MameConfig = item.ReadString(Models.Internal.Header.MameConfigKey),
|
||||||
};
|
};
|
||||||
|
|
||||||
return mame;
|
return mame;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Listxml.GameBase"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Listxml.GameBase"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
private static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -8,13 +8,39 @@ namespace SabreTools.Serialization
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class Logiqx : XmlSerializer<Datafile>
|
public partial class Logiqx : XmlSerializer<Datafile>
|
||||||
{
|
{
|
||||||
// TODO: Add deserialization of entire Datafile
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.Logiqx.Datafile"/>
|
||||||
|
/// </summary>
|
||||||
|
public static Datafile? ConvertFromInternalModel(Models.Internal.MetadataFile? item, bool game = false)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var datafile = new Datafile
|
||||||
|
{
|
||||||
|
Build = item.ReadString(Models.Internal.Header.BuildKey),
|
||||||
|
Debug = item.ReadString(Models.Internal.Header.DebugKey),
|
||||||
|
SchemaLocation = item.ReadString(Models.Internal.Header.SchemaLocationKey),
|
||||||
|
};
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
if (header != null)
|
||||||
|
datafile.Header = ConvertHeaderFromInternalModel(header);
|
||||||
|
|
||||||
|
// TODO: Handle Dir items
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
datafile.Game = machines.Select(machine => ConvertMachineFromInternalModel(machine, game)).ToArray();
|
||||||
|
|
||||||
|
return datafile;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.Logiqx.Header"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.Logiqx.Header"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Header? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
private static Header ConvertHeaderFromInternalModel(Models.Internal.Header item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -76,7 +102,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Logiqx.GameBase"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.Logiqx.GameBase"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item, bool game = false)
|
private static GameBase? ConvertMachineFromInternalModel(Models.Internal.Machine? item, bool game = false)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -8,13 +8,30 @@ namespace SabreTools.Serialization
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class OfflineList : XmlSerializer<Dat>
|
public partial class OfflineList : XmlSerializer<Dat>
|
||||||
{
|
{
|
||||||
// TODO: Add deserialization of entire Dat
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.OfflineList.Dat"/>
|
||||||
|
/// </summary>
|
||||||
|
public static Dat? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
var dat = header != null ? ConvertHeaderFromInternalModel(header) : new Dat();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
dat.Games = new Games { Game = machines.Select(ConvertMachineFromInternalModel).ToArray() };
|
||||||
|
|
||||||
|
return dat;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.OfflineList.Dat"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.OfflineList.Dat"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Dat? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
private static Dat? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -66,7 +83,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.OfflineList.Game"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.OfflineList.Game"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Game? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
private static Game? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -8,13 +8,30 @@ namespace SabreTools.Serialization
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class OpenMSX : XmlSerializer<SoftwareDb>
|
public partial class OpenMSX : XmlSerializer<SoftwareDb>
|
||||||
{
|
{
|
||||||
// TODO: Add deserialization of entire SoftwareDb
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.OpenMSX.SoftwareDb"/>
|
||||||
|
/// </summary>
|
||||||
|
public static SoftwareDb? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
var softwareDb = header != null ? ConvertHeaderFromInternalModel(header) : new SoftwareDb();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
softwareDb.Software = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return softwareDb;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.OpenMSX.SoftwareDb"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.OpenMSX.SoftwareDb"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static SoftwareDb? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
private static SoftwareDb? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -29,7 +46,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.OpenMSX.Software"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.OpenMSX.Software"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Software? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
private static Software? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -221,13 +221,30 @@ namespace SabreTools.Serialization
|
|||||||
return dat;
|
return dat;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add deserialization of entire MetadataFile
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.RomCenter.MetadataFile"/>
|
||||||
|
/// </summary>
|
||||||
|
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
var metadataFile = header != null ? ConvertHeaderFromInternalModel(header) : new MetadataFile();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
metadataFile.Games = new Games { Rom = machines.SelectMany(ConvertMachineFromInternalModel).ToArray() };
|
||||||
|
|
||||||
|
return metadataFile;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.RomCenter.MetadataFile"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.RomCenter.MetadataFile"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
private static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -283,7 +300,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.RomCenter.Rom"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.RomCenter.Rom"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Rom?[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
private static Rom?[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -120,13 +120,30 @@ namespace SabreTools.Serialization
|
|||||||
return dat;
|
return dat;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add deserialization of entire MetadataFile
|
|
||||||
#region Internal
|
#region Internal
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.SeparatedValue.MetadataFile"/>
|
||||||
|
/// </summary>
|
||||||
|
public static MetadataFile? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
var metadataFile = header != null ? ConvertHeaderFromInternalModel(header) : new MetadataFile();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
metadataFile.Row = machines.SelectMany(ConvertMachineFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return metadataFile;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.SeparatedValue.MetadataFile"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.SeparatedValue.MetadataFile"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
private static MetadataFile? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -141,7 +158,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.SeparatedValue.Row"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to an array of <cref="Models.SeparatedValue.Row"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Row[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
private static Row[]? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -8,13 +8,30 @@ namespace SabreTools.Serialization
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class SoftawreList : XmlSerializer<SoftwareList>
|
public partial class SoftawreList : XmlSerializer<SoftwareList>
|
||||||
{
|
{
|
||||||
// TODO: Add deserialization of entire SoftwareList
|
#region Internal
|
||||||
#region Deserialize
|
|
||||||
|
/// <summary>
|
||||||
|
/// Convert from <cref="Models.Internal.MetadataFile"/> to <cref="Models.SoftawreList.SoftwareList"/>
|
||||||
|
/// </summary>
|
||||||
|
public static SoftwareList? ConvertFromInternalModel(Models.Internal.MetadataFile? item)
|
||||||
|
{
|
||||||
|
if (item == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var header = item.Read<Models.Internal.Header>(Models.Internal.MetadataFile.HeaderKey);
|
||||||
|
var metadataFile = header != null ? ConvertHeaderFromInternalModel(header) : new SoftwareList();
|
||||||
|
|
||||||
|
var machines = item.Read<Models.Internal.Machine[]>(Models.Internal.MetadataFile.MachineKey);
|
||||||
|
if (machines != null && machines.Any())
|
||||||
|
metadataFile.Software = machines.Select(ConvertMachineFromInternalModel).ToArray();
|
||||||
|
|
||||||
|
return metadataFile;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.SoftwareList.SoftwareList"/>
|
/// Convert from <cref="Models.Internal.Header"/> to <cref="Models.SoftwareList.SoftwareList"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static SoftwareList? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
private static SoftwareList? ConvertHeaderFromInternalModel(Models.Internal.Header? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
@@ -31,7 +48,7 @@ namespace SabreTools.Serialization
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.SoftwareList.Software"/>
|
/// Convert from <cref="Models.Internal.Machine"/> to <cref="Models.SoftwareList.Software"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static Software? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
private static Software? ConvertMachineFromInternalModel(Models.Internal.Machine? item)
|
||||||
{
|
{
|
||||||
if (item == null)
|
if (item == null)
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user