mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Convert Metadata file keys to proper properties
This commit is contained in:
@@ -4,22 +4,14 @@ namespace SabreTools.Data.Models.Metadata
|
||||
/// <summary>
|
||||
/// Format-agnostic representation of a full metadata file
|
||||
/// </summary>
|
||||
/// TODO: ICloneable
|
||||
/// TODO: IComparable<MetadataFile>
|
||||
public class MetadataFile : DictionaryBase
|
||||
{
|
||||
#region Keys
|
||||
public Header? Header { get; set; }
|
||||
|
||||
/// <remarks>Machine[]</remarks>
|
||||
[NoFilter]
|
||||
public const string MachineKey = "machine";
|
||||
public InfoSource? InfoSource { get; set; }
|
||||
|
||||
/// <remarks>Header</remarks>
|
||||
[NoFilter]
|
||||
public const string HeaderKey = "header";
|
||||
|
||||
/// <remarks>InfoSource</remarks>
|
||||
[NoFilter]
|
||||
public const string InfoSourceKey = "infosource";
|
||||
|
||||
#endregion
|
||||
public Machine[]? Machine { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,8 +41,8 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Data.Models.Metadata.Machine[]? machines = null;
|
||||
Data.Models.Metadata.MetadataFile? item = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = header,
|
||||
[Data.Models.Metadata.MetadataFile.MachineKey] = machines,
|
||||
Header = header,
|
||||
Machine = machines,
|
||||
};
|
||||
|
||||
DatFile datFile = new Formats.Logiqx(null, useGame: false);
|
||||
@@ -59,8 +59,8 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Data.Models.Metadata.Machine[]? machines = [machine];
|
||||
Data.Models.Metadata.MetadataFile? item = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = header,
|
||||
[Data.Models.Metadata.MetadataFile.MachineKey] = machines,
|
||||
Header = header,
|
||||
Machine = machines,
|
||||
};
|
||||
|
||||
DatFile datFile = new Formats.Logiqx(null, useGame: false);
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Data.Models.Metadata.MetadataFile? actual = datFile.ConvertToMetadata();
|
||||
Assert.NotNull(actual);
|
||||
|
||||
Data.Models.Metadata.Header? actualHeader = actual.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
Data.Models.Metadata.Header? actualHeader = actual.Header;
|
||||
ValidateMetadataHeader(actualHeader);
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Data.Models.Metadata.MetadataFile? actual = datFile.ConvertToMetadata();
|
||||
Assert.NotNull(actual);
|
||||
|
||||
Data.Models.Metadata.Machine[]? machines = actual.ReadArray<Data.Models.Metadata.Machine>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
Data.Models.Metadata.Machine[]? machines = actual.Machine;
|
||||
Assert.NotNull(machines);
|
||||
Data.Models.Metadata.Machine actualMachine = Assert.Single(machines);
|
||||
ValidateMetadataMachine(actualMachine);
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
FilterRunner? filterRunner)
|
||||
{
|
||||
// If the metadata file is invalid, we can't do anything
|
||||
if (item is null || item.Count == 0)
|
||||
if (item is null)
|
||||
return;
|
||||
|
||||
// Create an internal source and add to the dictionary
|
||||
@@ -43,12 +43,12 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// long sourceIndex = AddSourceDB(source);
|
||||
|
||||
// Get the header from the metadata
|
||||
var header = item.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = item.Header;
|
||||
if (header is not null)
|
||||
ConvertHeader(header, keep);
|
||||
|
||||
// Get the machines from the metadata
|
||||
var machines = item.ReadArray<Data.Models.Metadata.Machine>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = item.Machine;
|
||||
if (machines is not null)
|
||||
ConvertMachines(machines, source, sourceIndex: 0, statsOnly, filterRunner);
|
||||
}
|
||||
|
||||
@@ -24,12 +24,12 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Convert and assign the header
|
||||
var header = Header.GetInternalClone();
|
||||
if (header is not null)
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = header;
|
||||
metadataFile.Header = header;
|
||||
|
||||
// Convert and assign the machines
|
||||
var machines = ConvertMachines(ignoreblanks);
|
||||
if (machines is not null)
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = machines;
|
||||
metadataFile.Machine = machines;
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
@@ -49,12 +49,12 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Convert and assign the header
|
||||
var header = Header.GetInternalClone();
|
||||
if (header is not null)
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = header;
|
||||
metadataFile.Header = header;
|
||||
|
||||
// Convert and assign the machines
|
||||
var machines = ConvertMachinesDB(ignoreblanks);
|
||||
if (machines is not null)
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = machines;
|
||||
metadataFile.Machine = machines;
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ namespace SabreTools.Metadata.Filter
|
||||
if (constantMatch is not null)
|
||||
{
|
||||
// Return the sanitized ID
|
||||
itemName = MetadataFile.HeaderKey;
|
||||
itemName = "header";
|
||||
fieldName = constantMatch;
|
||||
return true;
|
||||
}
|
||||
@@ -127,7 +127,7 @@ namespace SabreTools.Metadata.Filter
|
||||
if (propertyMatch is not null)
|
||||
{
|
||||
// Return the sanitized ID
|
||||
itemName = MetadataFile.HeaderKey;
|
||||
itemName = "header";
|
||||
fieldName = propertyMatch.ToLowerInvariant();
|
||||
return true;
|
||||
}
|
||||
@@ -151,7 +151,7 @@ namespace SabreTools.Metadata.Filter
|
||||
if (constantMatch is not null)
|
||||
{
|
||||
// Return the sanitized ID
|
||||
itemName = MetadataFile.MachineKey;
|
||||
itemName = "machine";
|
||||
fieldName = constantMatch;
|
||||
return true;
|
||||
}
|
||||
@@ -167,7 +167,7 @@ namespace SabreTools.Metadata.Filter
|
||||
if (propertyMatch is not null)
|
||||
{
|
||||
// Return the sanitized ID
|
||||
itemName = MetadataFile.MachineKey;
|
||||
itemName = "machine";
|
||||
fieldName = propertyMatch.ToLowerInvariant();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -36,8 +36,8 @@ namespace SabreTools.Metadata.Filter
|
||||
{
|
||||
string? itemName = dictionaryBase switch
|
||||
{
|
||||
Header => MetadataFile.HeaderKey,
|
||||
Machine => MetadataFile.MachineKey,
|
||||
Header => "header",
|
||||
Machine => "machine",
|
||||
DatItem => TypeHelper.GetXmlRootAttributeElementName(dictionaryBase.GetType()),
|
||||
_ => null,
|
||||
};
|
||||
@@ -73,12 +73,12 @@ namespace SabreTools.Metadata.Filter
|
||||
string key = filter.Key.ToString();
|
||||
|
||||
// Special case for machine types
|
||||
if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "isbios")
|
||||
key = $"{MetadataFile.MachineKey}.COMBINEDTYPE";
|
||||
else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "isdevice")
|
||||
key = $"{MetadataFile.MachineKey}.COMBINEDTYPE";
|
||||
else if (filter.Key.ItemName == MetadataFile.MachineKey && filter.Key.FieldName == "ismechanical")
|
||||
key = $"{MetadataFile.MachineKey}.COMBINEDTYPE";
|
||||
if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "isbios")
|
||||
key = $"{"machine"}.COMBINEDTYPE";
|
||||
else if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "isdevice")
|
||||
key = $"{"machine"}.COMBINEDTYPE";
|
||||
else if (filter.Key.ItemName == "machine" && filter.Key.FieldName == "ismechanical")
|
||||
key = $"{"machine"}.COMBINEDTYPE";
|
||||
|
||||
// Set the expected group type
|
||||
GroupType groupType = GroupType.OR;
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var files = new Files();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
var items = new List<File>();
|
||||
foreach (var machine in machines ?? [])
|
||||
{
|
||||
|
||||
@@ -14,14 +14,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(),
|
||||
Header = ConvertHeaderToInternalModel(),
|
||||
};
|
||||
|
||||
if (item?.File is not null && item.File.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(item.File, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(item.File, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new MetadataFile();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
var items = new List<Row>();
|
||||
foreach (var machine in machines ?? [])
|
||||
{
|
||||
|
||||
@@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj),
|
||||
Header = ConvertHeaderToInternalModel(obj),
|
||||
};
|
||||
|
||||
if (obj?.Row is not null && obj.Row.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(obj.Row, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
@@ -40,11 +37,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
/// <summary>
|
||||
/// Convert from <see cref="Row"/> to <see cref="Models.Metadata.Machine"/>
|
||||
/// </summary>
|
||||
private static Data.Models.Metadata.Machine? ConvertMachineToInternalModel(Row? item)
|
||||
private static Data.Models.Metadata.Machine ConvertMachineToInternalModel(Row item)
|
||||
{
|
||||
if (item is null)
|
||||
return null;
|
||||
|
||||
var machine = new Data.Models.Metadata.Machine
|
||||
{
|
||||
Name = item.Name,
|
||||
|
||||
@@ -18,18 +18,15 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new MetadataFile();
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
if (header is not null)
|
||||
metadataFile.ClrMamePro = ConvertHeaderFromInternalModel(header);
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
{
|
||||
metadataFile.Game
|
||||
= Array.ConvertAll(machines, m => ConvertMachineFromInternalModel(m, game));
|
||||
}
|
||||
metadataFile.Game = Array.ConvertAll(machines, m => ConvertMachineFromInternalModel(m, game));
|
||||
|
||||
var info = obj.Read<Data.Models.Metadata.InfoSource>(Data.Models.Metadata.MetadataFile.InfoSourceKey);
|
||||
var info = obj.InfoSource;
|
||||
if (info is not null)
|
||||
metadataFile.Info = ConvertInfoSourceFromInternalModel(info);
|
||||
|
||||
|
||||
@@ -14,16 +14,13 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile();
|
||||
|
||||
if (obj?.ClrMamePro is not null)
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj.ClrMamePro);
|
||||
metadataFile.Header = ConvertHeaderToInternalModel(obj.ClrMamePro);
|
||||
|
||||
if (obj?.Game is not null && obj.Game.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(obj.Game, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel);
|
||||
|
||||
if (obj?.Info is not null)
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.InfoSourceKey] = ConvertInfoSourceToInternalModel(obj.Info);
|
||||
metadataFile.InfoSource = ConvertInfoSourceToInternalModel(obj.Info);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
@@ -57,11 +54,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
/// <summary>
|
||||
/// Convert from <see cref="GameBase"/> to <see cref="Models.Metadata.Machine"/>
|
||||
/// </summary>
|
||||
private static Data.Models.Metadata.Machine? ConvertMachineToInternalModel(GameBase? item)
|
||||
private static Data.Models.Metadata.Machine ConvertMachineToInternalModel(GameBase item)
|
||||
{
|
||||
if (item is null)
|
||||
return null;
|
||||
|
||||
var machine = new Data.Models.Metadata.Machine
|
||||
{
|
||||
Name = item.Name,
|
||||
|
||||
@@ -13,11 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new MetadataFile();
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
if (header is not null)
|
||||
metadataFile.DosCenter = ConvertHeaderFromInternalModel(header);
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
metadataFile.Game = Array.ConvertAll(machines, ConvertMachineFromInternalModel);
|
||||
|
||||
|
||||
@@ -14,13 +14,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile();
|
||||
|
||||
if (obj?.DosCenter is not null)
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj.DosCenter);
|
||||
metadataFile.Header = ConvertHeaderToInternalModel(obj.DosCenter);
|
||||
|
||||
if (obj?.Game is not null && obj.Game.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(obj.Game, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(obj.Game, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
@@ -54,10 +51,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
};
|
||||
|
||||
if (item.File is not null && item.File.Length > 0)
|
||||
{
|
||||
machine.Rom
|
||||
= Array.ConvertAll(item.File, ConvertToInternalModel);
|
||||
}
|
||||
machine.Rom = Array.ConvertAll(item.File, ConvertToInternalModel);
|
||||
|
||||
return machine;
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new MetadataFile();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
var items = new List<Row>();
|
||||
foreach (var machine in machines ?? [])
|
||||
{
|
||||
|
||||
@@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(),
|
||||
Header = ConvertHeaderToInternalModel(),
|
||||
};
|
||||
|
||||
if (obj?.Row is not null && obj.Row.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(obj.Row, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is null || machines.Length == 0)
|
||||
return null;
|
||||
|
||||
|
||||
@@ -13,11 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(),
|
||||
Header = ConvertHeaderToInternalModel(),
|
||||
};
|
||||
|
||||
var machine = ConvertMachineToInternalModel(obj);
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = new Data.Models.Metadata.Machine[] { machine };
|
||||
metadataFile.Machine = new Data.Models.Metadata.Machine[] { machine };
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new MetadataFile();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
metadataFile.Set = Array.ConvertAll(machines, ConvertMachineFromInternalModel);
|
||||
|
||||
|
||||
@@ -14,14 +14,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(),
|
||||
Header = ConvertHeaderToInternalModel(),
|
||||
};
|
||||
|
||||
if (obj?.Set is not null && obj.Set.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(obj.Set, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(obj.Set, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
var mame = header is not null ? ConvertMameFromInternalModel(header) : new Mame();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
mame.Game = Array.ConvertAll(machines, ConvertMachineFromInternalModel);
|
||||
|
||||
|
||||
@@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item),
|
||||
Header = ConvertHeaderToInternalModel(item),
|
||||
};
|
||||
|
||||
if (item?.Game is not null && item.Game.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(item.Game, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(item.Game, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
@@ -62,52 +59,28 @@ namespace SabreTools.Serialization.CrossModel
|
||||
};
|
||||
|
||||
if (item.BiosSet is not null && item.BiosSet.Length > 0)
|
||||
{
|
||||
machine.BiosSet
|
||||
= Array.ConvertAll(item.BiosSet, ConvertToInternalModel);
|
||||
}
|
||||
machine.BiosSet = Array.ConvertAll(item.BiosSet, ConvertToInternalModel);
|
||||
|
||||
if (item.Rom is not null && item.Rom.Length > 0)
|
||||
{
|
||||
machine.Rom
|
||||
= Array.ConvertAll(item.Rom, ConvertToInternalModel);
|
||||
}
|
||||
machine.Rom = Array.ConvertAll(item.Rom, ConvertToInternalModel);
|
||||
|
||||
if (item.Disk is not null && item.Disk.Length > 0)
|
||||
{
|
||||
machine.Disk
|
||||
= Array.ConvertAll(item.Disk, ConvertToInternalModel);
|
||||
}
|
||||
machine.Disk = Array.ConvertAll(item.Disk, ConvertToInternalModel);
|
||||
|
||||
if (item.DeviceRef is not null && item.DeviceRef.Length > 0)
|
||||
{
|
||||
machine.DeviceRef
|
||||
= Array.ConvertAll(item.DeviceRef, ConvertToInternalModel);
|
||||
}
|
||||
machine.DeviceRef = Array.ConvertAll(item.DeviceRef, ConvertToInternalModel);
|
||||
|
||||
if (item.Sample is not null && item.Sample.Length > 0)
|
||||
{
|
||||
machine.Sample
|
||||
= Array.ConvertAll(item.Sample, ConvertToInternalModel);
|
||||
}
|
||||
machine.Sample = Array.ConvertAll(item.Sample, ConvertToInternalModel);
|
||||
|
||||
if (item.Chip is not null && item.Chip.Length > 0)
|
||||
{
|
||||
machine.Chip
|
||||
= Array.ConvertAll(item.Chip, ConvertToInternalModel);
|
||||
}
|
||||
machine.Chip = Array.ConvertAll(item.Chip, ConvertToInternalModel);
|
||||
|
||||
if (item.Display is not null && item.Display.Length > 0)
|
||||
{
|
||||
machine.Display
|
||||
= Array.ConvertAll(item.Display, ConvertToInternalModel);
|
||||
}
|
||||
machine.Display = Array.ConvertAll(item.Display, ConvertToInternalModel);
|
||||
|
||||
if (item.Video is not null && item.Video.Length > 0)
|
||||
{
|
||||
machine.Video
|
||||
= Array.ConvertAll(item.Video, ConvertToInternalModel);
|
||||
}
|
||||
machine.Video = Array.ConvertAll(item.Video, ConvertToInternalModel);
|
||||
|
||||
if (item.Sound is not null)
|
||||
machine.Sound = ConvertToInternalModel(item.Sound);
|
||||
@@ -116,61 +89,34 @@ namespace SabreTools.Serialization.CrossModel
|
||||
machine.Input = ConvertToInternalModel(item.Input);
|
||||
|
||||
if (item.DipSwitch is not null && item.DipSwitch.Length > 0)
|
||||
{
|
||||
machine.DipSwitch
|
||||
= Array.ConvertAll(item.DipSwitch, ConvertToInternalModel);
|
||||
}
|
||||
machine.DipSwitch = Array.ConvertAll(item.DipSwitch, ConvertToInternalModel);
|
||||
|
||||
if (item.Configuration is not null && item.Configuration.Length > 0)
|
||||
{
|
||||
machine.Configuration
|
||||
= Array.ConvertAll(item.Configuration, ConvertToInternalModel);
|
||||
}
|
||||
machine.Configuration = Array.ConvertAll(item.Configuration, ConvertToInternalModel);
|
||||
|
||||
if (item.Port is not null && item.Port.Length > 0)
|
||||
{
|
||||
machine.Port
|
||||
= Array.ConvertAll(item.Port, ConvertToInternalModel);
|
||||
}
|
||||
machine.Port = Array.ConvertAll(item.Port, ConvertToInternalModel);
|
||||
|
||||
if (item.Adjuster is not null && item.Adjuster.Length > 0)
|
||||
{
|
||||
machine.Adjuster
|
||||
= Array.ConvertAll(item.Adjuster, ConvertToInternalModel);
|
||||
}
|
||||
machine.Adjuster = Array.ConvertAll(item.Adjuster, ConvertToInternalModel);
|
||||
|
||||
if (item.Driver is not null)
|
||||
machine.Driver = ConvertToInternalModel(item.Driver);
|
||||
|
||||
if (item.Feature is not null && item.Feature.Length > 0)
|
||||
{
|
||||
machine.Feature
|
||||
= Array.ConvertAll(item.Feature, ConvertToInternalModel);
|
||||
}
|
||||
machine.Feature = Array.ConvertAll(item.Feature, ConvertToInternalModel);
|
||||
|
||||
if (item.Device is not null && item.Device.Length > 0)
|
||||
{
|
||||
machine.Device
|
||||
= Array.ConvertAll(item.Device, ConvertToInternalModel);
|
||||
}
|
||||
machine.Device = Array.ConvertAll(item.Device, ConvertToInternalModel);
|
||||
|
||||
if (item.Slot is not null && item.Slot.Length > 0)
|
||||
{
|
||||
machine.Slot
|
||||
= Array.ConvertAll(item.Slot, ConvertToInternalModel);
|
||||
}
|
||||
machine.Slot = Array.ConvertAll(item.Slot, ConvertToInternalModel);
|
||||
|
||||
if (item.SoftwareList is not null && item.SoftwareList.Length > 0)
|
||||
{
|
||||
machine.SoftwareList
|
||||
= Array.ConvertAll(item.SoftwareList, ConvertToInternalModel);
|
||||
}
|
||||
machine.SoftwareList = Array.ConvertAll(item.SoftwareList, ConvertToInternalModel);
|
||||
|
||||
if (item.RamOption is not null && item.RamOption.Length > 0)
|
||||
{
|
||||
machine.RamOption
|
||||
= Array.ConvertAll(item.RamOption, ConvertToInternalModel);
|
||||
}
|
||||
machine.RamOption = Array.ConvertAll(item.RamOption, ConvertToInternalModel);
|
||||
|
||||
return machine;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var datafile = new Datafile();
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
if (header is not null)
|
||||
{
|
||||
datafile.Build = header.Build;
|
||||
@@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
datafile.Header = ConvertHeaderFromInternalModel(header);
|
||||
}
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
datafile.Game = Array.ConvertAll(machines, m => ConvertMachineFromInternalModel(m, game));
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item),
|
||||
Header = ConvertHeaderToInternalModel(item),
|
||||
};
|
||||
|
||||
var machines = new List<Data.Models.Metadata.Machine>();
|
||||
@@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
}
|
||||
|
||||
if (machines.Count > 0)
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey] = machines.ToArray();
|
||||
metadataFile.Machine = [.. machines];
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -10,10 +10,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
var m1 = header is not null ? ConvertM1FromInternalModel(header) : new Data.Models.Listxml.M1();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
m1.Game = Array.ConvertAll(machines, Listxml.ConvertMachineFromInternalModel);
|
||||
|
||||
|
||||
@@ -12,14 +12,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item),
|
||||
Header = ConvertHeaderToInternalModel(item),
|
||||
};
|
||||
|
||||
if (item?.Game is not null && item.Game.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -10,10 +10,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
var m1 = header is not null ? ConvertMessFromInternalModel(header) : new Data.Models.Listxml.Mess();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
m1.Game = Array.ConvertAll(machines, Listxml.ConvertMachineFromInternalModel);
|
||||
|
||||
|
||||
@@ -12,14 +12,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item),
|
||||
Header = ConvertHeaderToInternalModel(item),
|
||||
};
|
||||
|
||||
if (item?.Game is not null && item.Game.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(item.Game, Listxml.ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
var dat = header is not null ? ConvertHeaderFromInternalModel(header) : new Dat();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
{
|
||||
dat.Games = new Games
|
||||
|
||||
@@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item),
|
||||
Header = ConvertHeaderToInternalModel(item),
|
||||
};
|
||||
|
||||
if (item?.Games?.Game is not null && item.Games.Game.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(item.Games.Game, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(item.Games.Game, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
var softwareDb = header is not null ? ConvertHeaderFromInternalModel(header) : new SoftwareDb();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
softwareDb.Software = Array.ConvertAll(machines, ConvertMachineFromInternalModel);
|
||||
|
||||
|
||||
@@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item),
|
||||
Header = ConvertHeaderToInternalModel(item),
|
||||
};
|
||||
|
||||
if (item?.Software is not null && item.Software.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(item.Software, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(item.Software, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
@@ -53,10 +50,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
};
|
||||
|
||||
if (item.Dump is not null && item.Dump.Length > 0)
|
||||
{
|
||||
machine.Dump
|
||||
= Array.ConvertAll(item.Dump, ConvertToInternalModel);
|
||||
}
|
||||
machine.Dump = Array.ConvertAll(item.Dump, ConvertToInternalModel);
|
||||
|
||||
return machine;
|
||||
}
|
||||
|
||||
@@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new MetadataFile();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
var items = new List<Rom>();
|
||||
foreach (var machine in machines ?? [])
|
||||
{
|
||||
|
||||
@@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj),
|
||||
Header = ConvertHeaderToInternalModel(obj),
|
||||
};
|
||||
|
||||
if (obj?.Games?.Rom is not null && obj.Games.Rom.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(obj.Games.Rom, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(obj.Games.Rom, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -12,10 +12,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new MetadataFile();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
var items = new List<Row>();
|
||||
foreach (var machine in machines ?? [])
|
||||
{
|
||||
|
||||
@@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(obj),
|
||||
Header = ConvertHeaderToInternalModel(obj),
|
||||
};
|
||||
|
||||
if (obj?.Row is not null && obj.Row.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(obj.Row, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(obj.Row, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@ namespace SabreTools.Serialization.CrossModel
|
||||
if (obj is null)
|
||||
return null;
|
||||
|
||||
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
|
||||
var header = obj.Header;
|
||||
var metadataFile = header is not null ? ConvertHeaderFromInternalModel(header) : new Data.Models.SoftwareList.SoftwareList();
|
||||
|
||||
var machines = obj.Read<Data.Models.Metadata.Machine[]>(Data.Models.Metadata.MetadataFile.MachineKey);
|
||||
var machines = obj.Machine;
|
||||
if (machines is not null && machines.Length > 0)
|
||||
metadataFile.Software = Array.ConvertAll(machines, ConvertMachineFromInternalModel);
|
||||
|
||||
|
||||
@@ -13,14 +13,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var metadataFile = new Data.Models.Metadata.MetadataFile
|
||||
{
|
||||
[Data.Models.Metadata.MetadataFile.HeaderKey] = ConvertHeaderToInternalModel(item),
|
||||
Header = ConvertHeaderToInternalModel(item),
|
||||
};
|
||||
|
||||
if (item?.Software is not null && item.Software.Length > 0)
|
||||
{
|
||||
metadataFile[Data.Models.Metadata.MetadataFile.MachineKey]
|
||||
= Array.ConvertAll(item.Software, ConvertMachineToInternalModel);
|
||||
}
|
||||
metadataFile.Machine = Array.ConvertAll(item.Software, ConvertMachineToInternalModel);
|
||||
|
||||
return metadataFile;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user