mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Trurip finally gets integrated, more at 11
This commit is contained in:
@@ -159,15 +159,19 @@ namespace SabreTools.Data.Extensions
|
||||
cloneMachine.Company = selfMachine.Company;
|
||||
cloneMachine.Control = selfMachine.Control;
|
||||
cloneMachine.Country = selfMachine.Country;
|
||||
cloneMachine.CRC = selfMachine.CRC;
|
||||
cloneMachine.Description = selfMachine.Description;
|
||||
cloneMachine.Developer = selfMachine.Developer;
|
||||
cloneMachine.DirName = selfMachine.DirName;
|
||||
cloneMachine.DisplayCount = selfMachine.DisplayCount;
|
||||
cloneMachine.DisplayType = selfMachine.DisplayType;
|
||||
cloneMachine.DuplicateID = selfMachine.DuplicateID;
|
||||
cloneMachine.Emulator = selfMachine.Emulator;
|
||||
cloneMachine.Enabled = selfMachine.Enabled;
|
||||
cloneMachine.Extra = selfMachine.Extra;
|
||||
cloneMachine.Favorite = selfMachine.Favorite;
|
||||
cloneMachine.GenMSXID = selfMachine.GenMSXID;
|
||||
cloneMachine.Genre = selfMachine.Genre;
|
||||
cloneMachine.Hash = selfMachine.Hash;
|
||||
cloneMachine.History = selfMachine.History;
|
||||
cloneMachine.Id = selfMachine.Id;
|
||||
@@ -186,19 +190,25 @@ namespace SabreTools.Data.Extensions
|
||||
cloneMachine.PlayedTime = selfMachine.PlayedTime;
|
||||
cloneMachine.Players = selfMachine.Players;
|
||||
cloneMachine.Publisher = selfMachine.Publisher;
|
||||
cloneMachine.Ratings = selfMachine.Ratings;
|
||||
cloneMachine.RebuildTo = selfMachine.RebuildTo;
|
||||
cloneMachine.RelatedTo = selfMachine.RelatedTo;
|
||||
cloneMachine.ReleaseNumber = selfMachine.ReleaseNumber;
|
||||
cloneMachine.RomOf = selfMachine.RomOf;
|
||||
cloneMachine.Rotation = selfMachine.Rotation;
|
||||
cloneMachine.Runnable = selfMachine.Runnable;
|
||||
cloneMachine.SampleOf = selfMachine.SampleOf;
|
||||
cloneMachine.SaveType = selfMachine.SaveType;
|
||||
cloneMachine.Score = selfMachine.Score;
|
||||
cloneMachine.Source = selfMachine.Source;
|
||||
cloneMachine.SourceFile = selfMachine.SourceFile;
|
||||
cloneMachine.SourceRom = selfMachine.SourceRom;
|
||||
cloneMachine.Status = selfMachine.Status;
|
||||
cloneMachine.Subgenre = selfMachine.Subgenre;
|
||||
cloneMachine.Supported = selfMachine.Supported;
|
||||
cloneMachine.System = selfMachine.System;
|
||||
cloneMachine.Tags = selfMachine.Tags;
|
||||
cloneMachine.TitleID = selfMachine.TitleID;
|
||||
cloneMachine.Url = selfMachine.Url;
|
||||
cloneMachine.Year = selfMachine.Year;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
/// <summary>
|
||||
@@ -167,6 +166,38 @@ namespace SabreTools.Data.Models.Metadata
|
||||
|
||||
#endregion
|
||||
|
||||
#region From Trurip
|
||||
|
||||
// public string? CloneOf { get; set; }
|
||||
|
||||
public string? CRC { get; set; }
|
||||
|
||||
public string? Developer { get; set; }
|
||||
|
||||
public string? Enabled { get; set; }
|
||||
|
||||
public string? Genre { get; set; }
|
||||
|
||||
// public string? Players { get; set; }
|
||||
|
||||
// public string? Publisher { get; set; }
|
||||
|
||||
public string? Ratings { get; set; }
|
||||
|
||||
public string? RelatedTo { get; set; }
|
||||
|
||||
public string? Score { get; set; }
|
||||
|
||||
public string? Source { get; set; }
|
||||
|
||||
public string? Subgenre { get; set; }
|
||||
|
||||
public string? TitleID { get; set; }
|
||||
|
||||
// public string? Year { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Keys
|
||||
|
||||
/// <remarks>string, string[]</remarks>
|
||||
@@ -175,11 +206,6 @@ namespace SabreTools.Data.Models.Metadata
|
||||
/// <remarks>string, string[]</remarks>
|
||||
public const string CommentKey = "comment";
|
||||
|
||||
/// TODO: This needs an internal model OR mapping to fields
|
||||
/// <remarks>Trurip</remarks>
|
||||
[NoFilter]
|
||||
public const string TruripKey = "trurip";
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,8 +263,10 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Company = "company",
|
||||
Configuration = [CreateMetadataConfiguration()],
|
||||
Control = "control",
|
||||
CRC = "crc",
|
||||
Country = "country",
|
||||
Description = "description",
|
||||
Developer = "developer",
|
||||
Device = [CreateMetadataDevice()],
|
||||
DeviceRef = [CreateMetadataDeviceRef()],
|
||||
DipSwitch = [CreateMetadataDipSwitch()],
|
||||
@@ -277,10 +279,12 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Dump = [CreateMetadataDump()],
|
||||
DuplicateID = "duplicateid",
|
||||
Emulator = "emulator",
|
||||
Enabled = "enabled",
|
||||
Extra = "extra",
|
||||
Favorite = "favorite",
|
||||
Feature = [CreateMetadataFeature()],
|
||||
GenMSXID = "genmsxid",
|
||||
Genre = "genre",
|
||||
History = "history",
|
||||
Id = "id",
|
||||
Im1CRC = HashType.CRC32.ZeroString,
|
||||
@@ -304,7 +308,9 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Port = [CreateMetadataPort()],
|
||||
Publisher = "publisher",
|
||||
RamOption = [CreateMetadataRamOption()],
|
||||
Ratings = "ratings",
|
||||
RebuildTo = "rebuildto",
|
||||
RelatedTo = "relatedto",
|
||||
Release = [CreateMetadataRelease()],
|
||||
ReleaseNumber = "releasenumber",
|
||||
Rom = [CreateMetadataRom()],
|
||||
@@ -314,17 +320,20 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Sample = [CreateMetadataSample()],
|
||||
SampleOf = "sampleof",
|
||||
SaveType = "savetype",
|
||||
Score = "score",
|
||||
SharedFeat = [CreateMetadataSharedFeat()],
|
||||
Slot = [CreateMetadataSlot()],
|
||||
SoftwareList = [CreateMetadataSoftwareList()],
|
||||
Sound = CreateMetadataSound(),
|
||||
Source = "source",
|
||||
SourceFile = "sourcefile",
|
||||
SourceRom = "sourcerom",
|
||||
Status = "status",
|
||||
Subgenre = "subgenre",
|
||||
Supported = Data.Models.Metadata.Supported.Yes,
|
||||
System = "system",
|
||||
Tags = "tags",
|
||||
[Data.Models.Metadata.Machine.TruripKey] = CreateMetadataTrurip(),
|
||||
TitleID = "titleid",
|
||||
Video = [CreateMetadataVideo()],
|
||||
Year = "year",
|
||||
};
|
||||
@@ -977,27 +986,6 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
};
|
||||
}
|
||||
|
||||
private static Data.Models.Logiqx.Trurip CreateMetadataTrurip()
|
||||
{
|
||||
return new Data.Models.Logiqx.Trurip
|
||||
{
|
||||
TitleID = "titleid",
|
||||
Publisher = "publisher",
|
||||
Developer = "developer",
|
||||
Year = "year",
|
||||
Genre = "genre",
|
||||
Subgenre = "subgenre",
|
||||
Ratings = "ratings",
|
||||
Score = "score",
|
||||
Players = "players",
|
||||
Enabled = "enabled",
|
||||
CRC = "yes",
|
||||
Source = "source",
|
||||
CloneOf = "cloneof",
|
||||
RelatedTo = "relatedto",
|
||||
};
|
||||
}
|
||||
|
||||
private static Data.Models.Metadata.Video CreateMetadataVideo()
|
||||
{
|
||||
return new Data.Models.Metadata.Video
|
||||
@@ -1076,15 +1064,19 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("company", machine.Company);
|
||||
Assert.Equal("control", machine.Control);
|
||||
Assert.Equal("country", machine.Country);
|
||||
Assert.Equal("crc", machine.CRC);
|
||||
Assert.Equal("description", machine.Description);
|
||||
Assert.Equal("developer", machine.Developer);
|
||||
Assert.Equal("dirname", machine.DirName);
|
||||
Assert.Equal("displaycount", machine.DisplayCount);
|
||||
Assert.Equal("displaytype", machine.DisplayType);
|
||||
Assert.Equal("duplicateid", machine.DuplicateID);
|
||||
Assert.Equal("emulator", machine.Emulator);
|
||||
Assert.Equal("enabled", machine.Enabled);
|
||||
Assert.Equal("extra", machine.Extra);
|
||||
Assert.Equal("favorite", machine.Favorite);
|
||||
Assert.Equal("genmsxid", machine.GenMSXID);
|
||||
Assert.Equal("genre", machine.Genre);
|
||||
Assert.Equal("history", machine.History);
|
||||
Assert.Equal("id", machine.Id);
|
||||
Assert.Equal(HashType.CRC32.ZeroString, machine.Im1CRC);
|
||||
@@ -1102,23 +1094,26 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("playedtime", machine.PlayedTime);
|
||||
Assert.Equal("players", machine.Players);
|
||||
Assert.Equal("publisher", machine.Publisher);
|
||||
Assert.Equal("ratings", machine.Ratings);
|
||||
Assert.Equal("rebuildto", machine.RebuildTo);
|
||||
Assert.Equal("relatedto", machine.RelatedTo);
|
||||
Assert.Equal("releasenumber", machine.ReleaseNumber);
|
||||
Assert.Equal("romof", machine.RomOf);
|
||||
Assert.Equal("rotation", machine.Rotation);
|
||||
Assert.Equal(Data.Models.Metadata.Runnable.Yes, machine.Runnable);
|
||||
Assert.Equal("sampleof", machine.SampleOf);
|
||||
Assert.Equal("savetype", machine.SaveType);
|
||||
Assert.Equal("score", machine.Score);
|
||||
Assert.Equal("source", machine.Source);
|
||||
Assert.Equal("sourcefile", machine.SourceFile);
|
||||
Assert.Equal("sourcerom", machine.SourceRom);
|
||||
Assert.Equal("status", machine.Status);
|
||||
Assert.Equal("subgenre", machine.Subgenre);
|
||||
Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported);
|
||||
Assert.Equal("system", machine.System);
|
||||
Assert.Equal("tags", machine.Tags);
|
||||
Assert.Equal("titleid", machine.TitleID);
|
||||
Assert.Equal("year", machine.Year);
|
||||
|
||||
DatItems.Trurip? trurip = machine.Read<DatItems.Trurip>(Data.Models.Metadata.Machine.TruripKey);
|
||||
ValidateTrurip(trurip);
|
||||
}
|
||||
#pragma warning restore IDE0051
|
||||
|
||||
@@ -1653,26 +1648,6 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal(12345, sound.Channels);
|
||||
}
|
||||
|
||||
// TODO: Figure out why so many fields are omitted
|
||||
private static void ValidateTrurip(DatItems.Trurip? trurip)
|
||||
{
|
||||
Assert.NotNull(trurip);
|
||||
Assert.Equal("titleid", trurip.TitleID);
|
||||
//Assert.Equal("publisher", trurip.Publisher); // Omitted from conversion
|
||||
Assert.Equal("developer", trurip.Developer);
|
||||
// Assert.Equal("year", trurip.Year); // Omitted from conversion
|
||||
Assert.Equal("genre", trurip.Genre);
|
||||
Assert.Equal("subgenre", trurip.Subgenre);
|
||||
Assert.Equal("ratings", trurip.Ratings);
|
||||
Assert.Equal("score", trurip.Score);
|
||||
// Assert.Equal("players", trurip.Players); // Omitted from conversion
|
||||
Assert.Equal("enabled", trurip.Enabled);
|
||||
Assert.True(trurip.Crc);
|
||||
// Assert.Equal("source", trurip.Source); // Omitted from conversion
|
||||
// Assert.Equal("cloneof", trurip.CloneOf); // Omitted from conversion
|
||||
Assert.Equal("relatedto", trurip.RelatedTo);
|
||||
}
|
||||
|
||||
private static void ValidateVideo(Display? display)
|
||||
{
|
||||
Assert.NotNull(display);
|
||||
|
||||
@@ -110,7 +110,6 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
private static Machine CreateMachine()
|
||||
{
|
||||
Machine item = new Machine(CreateMetadataMachine());
|
||||
item.Write(Data.Models.Metadata.Machine.TruripKey, CreateTrurip());
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -338,27 +337,6 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
return item;
|
||||
}
|
||||
|
||||
private static Trurip CreateTrurip()
|
||||
{
|
||||
return new Trurip
|
||||
{
|
||||
TitleID = "titleid",
|
||||
// Publisher = "publisher",
|
||||
Developer = "developer",
|
||||
// Year = "year",
|
||||
Genre = "genre",
|
||||
Subgenre = "subgenre",
|
||||
Ratings = "ratings",
|
||||
Score = "score",
|
||||
// Players = "players",
|
||||
Enabled = "enabled",
|
||||
Crc = true,
|
||||
// Source = "source",
|
||||
// CloneOf = "cloneof",
|
||||
RelatedTo = "relatedto",
|
||||
};
|
||||
}
|
||||
|
||||
private static Display CreateVideo(Machine machine)
|
||||
{
|
||||
Display item = new Display(CreateMetadataVideo());
|
||||
@@ -430,15 +408,19 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("company", machine.Company);
|
||||
Assert.Equal("control", machine.Control);
|
||||
Assert.Equal("country", machine.Country);
|
||||
Assert.Equal("crc", machine.CRC);
|
||||
Assert.Equal("description", machine.Description);
|
||||
Assert.Equal("developer", machine.Developer);
|
||||
Assert.Equal("dirname", machine.DirName);
|
||||
Assert.Equal("displaycount", machine.DisplayCount);
|
||||
Assert.Equal("displaytype", machine.DisplayType);
|
||||
Assert.Equal("duplicateid", machine.DuplicateID);
|
||||
Assert.Equal("emulator", machine.Emulator);
|
||||
Assert.Equal("enabled", machine.Enabled);
|
||||
Assert.Equal("extra", machine.Extra);
|
||||
Assert.Equal("favorite", machine.Favorite);
|
||||
Assert.Equal("genmsxid", machine.GenMSXID);
|
||||
Assert.Equal("genre", machine.Genre);
|
||||
Assert.Equal("history", machine.History);
|
||||
Assert.Equal("id", machine.Id);
|
||||
Assert.Equal(HashType.CRC32.ZeroString, machine.Im1CRC);
|
||||
@@ -456,19 +438,25 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("playedtime", machine.PlayedTime);
|
||||
Assert.Equal("players", machine.Players);
|
||||
Assert.Equal("publisher", machine.Publisher);
|
||||
Assert.Equal("ratings", machine.Ratings);
|
||||
Assert.Equal("rebuildto", machine.RebuildTo);
|
||||
Assert.Equal("relatedto", machine.RelatedTo);
|
||||
Assert.Equal("releasenumber", machine.ReleaseNumber);
|
||||
Assert.Equal("romof", machine.RomOf);
|
||||
Assert.Equal("rotation", machine.Rotation);
|
||||
Assert.Equal(Data.Models.Metadata.Runnable.Yes, machine.Runnable);
|
||||
Assert.Equal("sampleof", machine.SampleOf);
|
||||
Assert.Equal("savetype", machine.SaveType);
|
||||
Assert.Equal("score", machine.Score);
|
||||
Assert.Equal("source", machine.Source);
|
||||
Assert.Equal("sourcefile", machine.SourceFile);
|
||||
Assert.Equal("sourcerom", machine.SourceRom);
|
||||
Assert.Equal("status", machine.Status);
|
||||
Assert.Equal("subgenre", machine.Subgenre);
|
||||
Assert.Equal(Data.Models.Metadata.Supported.Yes, machine.Supported);
|
||||
Assert.Equal("system", machine.System);
|
||||
Assert.Equal("tags", machine.Tags);
|
||||
Assert.Equal("titleid", machine.TitleID);
|
||||
Assert.Equal("year", machine.Year);
|
||||
|
||||
Data.Models.Metadata.Adjuster[]? adjusters = machine.Adjuster;
|
||||
@@ -604,9 +592,6 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(sound);
|
||||
ValidateMetadataSound(sound);
|
||||
|
||||
Data.Models.Logiqx.Trurip? trurip = machine.Read<Data.Models.Logiqx.Trurip>(Data.Models.Metadata.Machine.TruripKey);
|
||||
ValidateMetadataTrurip(trurip);
|
||||
|
||||
Data.Models.Metadata.Video[]? videos = machine.Video;
|
||||
Assert.NotNull(videos);
|
||||
Data.Models.Metadata.Video video = Assert.Single(videos);
|
||||
@@ -1223,25 +1208,6 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("tool", sourceDetails.Tool);
|
||||
}
|
||||
|
||||
private static void ValidateMetadataTrurip(Data.Models.Logiqx.Trurip? trurip)
|
||||
{
|
||||
Assert.NotNull(trurip);
|
||||
Assert.Equal("titleid", trurip.TitleID);
|
||||
Assert.Equal("publisher", trurip.Publisher);
|
||||
Assert.Equal("developer", trurip.Developer);
|
||||
Assert.Equal("year", trurip.Year);
|
||||
Assert.Equal("genre", trurip.Genre);
|
||||
Assert.Equal("subgenre", trurip.Subgenre);
|
||||
Assert.Equal("ratings", trurip.Ratings);
|
||||
Assert.Equal("score", trurip.Score);
|
||||
Assert.Equal("players", trurip.Players);
|
||||
Assert.Equal(expected: "enabled", trurip.Enabled);
|
||||
Assert.Equal("yes", trurip.CRC);
|
||||
Assert.Equal("sourcefile", trurip.Source);
|
||||
Assert.Equal("cloneof", trurip.CloneOf);
|
||||
Assert.Equal("relatedto", trurip.RelatedTo);
|
||||
}
|
||||
|
||||
private static void ValidateMetadataVideo(Data.Models.Metadata.Video? video)
|
||||
{
|
||||
Assert.NotNull(video);
|
||||
|
||||
@@ -77,22 +77,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Create a machine to hold everything
|
||||
var machine = items[0].Machine!.GetInternalClone();
|
||||
|
||||
// Handle Trurip object, if it exists
|
||||
if (machine.ContainsKey(Data.Models.Metadata.Machine.TruripKey))
|
||||
{
|
||||
var trurip = machine.Read<Trurip>(Data.Models.Metadata.Machine.TruripKey);
|
||||
if (trurip is not null)
|
||||
{
|
||||
var truripItem = trurip.ConvertToLogiqx();
|
||||
truripItem.Publisher = machine.Publisher;
|
||||
truripItem.Year = machine.Year;
|
||||
truripItem.Players = machine.Players;
|
||||
truripItem.Source = machine.SourceFile;
|
||||
truripItem.CloneOf = machine.CloneOf;
|
||||
machine[Data.Models.Metadata.Machine.TruripKey] = truripItem;
|
||||
}
|
||||
}
|
||||
|
||||
// Create mapping dictionaries for the Parts, DataAreas, and DiskAreas associated with this machine
|
||||
Dictionary<Data.Models.Metadata.Part, Data.Models.Metadata.DatItem> partMappings = [];
|
||||
Dictionary<Data.Models.Metadata.Part, (Data.Models.Metadata.DataArea, Data.Models.Metadata.Rom)> dataAreaMappings = [];
|
||||
@@ -472,22 +456,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Create a machine to hold everything
|
||||
var machine = GetMachineForItemDB(items.First().Key).Value!.GetInternalClone();
|
||||
|
||||
// Handle Trurip object, if it exists
|
||||
if (machine.ContainsKey(Data.Models.Metadata.Machine.TruripKey))
|
||||
{
|
||||
var trurip = machine.Read<Trurip>(Data.Models.Metadata.Machine.TruripKey);
|
||||
if (trurip is not null)
|
||||
{
|
||||
var truripItem = trurip.ConvertToLogiqx();
|
||||
truripItem.Publisher = machine.Publisher;
|
||||
truripItem.Year = machine.Year;
|
||||
truripItem.Players = machine.Players;
|
||||
truripItem.Source = machine.SourceFile;
|
||||
truripItem.CloneOf = machine.CloneOf;
|
||||
machine[Data.Models.Metadata.Machine.TruripKey] = truripItem;
|
||||
}
|
||||
}
|
||||
|
||||
// Create mapping dictionaries for the Parts, DataAreas, and DiskAreas associated with this machine
|
||||
Dictionary<Data.Models.Metadata.Part, Data.Models.Metadata.DatItem> partMappings = [];
|
||||
Dictionary<Data.Models.Metadata.Part, (Data.Models.Metadata.DataArea, Data.Models.Metadata.Rom)> dataAreaMappings = [];
|
||||
|
||||
@@ -51,6 +51,12 @@ namespace SabreTools.Metadata.DatItems
|
||||
set => _internal.Control = value;
|
||||
}
|
||||
|
||||
public string? CRC
|
||||
{
|
||||
get => _internal.CRC;
|
||||
set => _internal.CRC = value;
|
||||
}
|
||||
|
||||
public string? Country
|
||||
{
|
||||
get => _internal.Country;
|
||||
@@ -63,6 +69,12 @@ namespace SabreTools.Metadata.DatItems
|
||||
set => _internal.Description = value;
|
||||
}
|
||||
|
||||
public string? Developer
|
||||
{
|
||||
get => _internal.Developer;
|
||||
set => _internal.Developer = value;
|
||||
}
|
||||
|
||||
public string? DirName
|
||||
{
|
||||
get => _internal.DirName;
|
||||
@@ -93,6 +105,12 @@ namespace SabreTools.Metadata.DatItems
|
||||
set => _internal.Emulator = value;
|
||||
}
|
||||
|
||||
public string? Enabled
|
||||
{
|
||||
get => _internal.Enabled;
|
||||
set => _internal.Enabled = value;
|
||||
}
|
||||
|
||||
public string? Extra
|
||||
{
|
||||
get => _internal.Extra;
|
||||
@@ -111,6 +129,12 @@ namespace SabreTools.Metadata.DatItems
|
||||
set => _internal.GenMSXID = value;
|
||||
}
|
||||
|
||||
public string? Genre
|
||||
{
|
||||
get => _internal.Genre;
|
||||
set => _internal.Genre = value;
|
||||
}
|
||||
|
||||
public string? Hash
|
||||
{
|
||||
get => _internal.Hash;
|
||||
@@ -219,12 +243,24 @@ namespace SabreTools.Metadata.DatItems
|
||||
set => _internal.Publisher = value;
|
||||
}
|
||||
|
||||
public string? Ratings
|
||||
{
|
||||
get => _internal.Ratings;
|
||||
set => _internal.Ratings = value;
|
||||
}
|
||||
|
||||
public string? RebuildTo
|
||||
{
|
||||
get => _internal.RebuildTo;
|
||||
set => _internal.RebuildTo = value;
|
||||
}
|
||||
|
||||
public string? RelatedTo
|
||||
{
|
||||
get => _internal.RelatedTo;
|
||||
set => _internal.RelatedTo = value;
|
||||
}
|
||||
|
||||
public string? ReleaseNumber
|
||||
{
|
||||
get => _internal.ReleaseNumber;
|
||||
@@ -261,6 +297,18 @@ namespace SabreTools.Metadata.DatItems
|
||||
set => _internal.SaveType = value;
|
||||
}
|
||||
|
||||
public string? Score
|
||||
{
|
||||
get => _internal.Score;
|
||||
set => _internal.Score = value;
|
||||
}
|
||||
|
||||
public string? Source
|
||||
{
|
||||
get => _internal.Source;
|
||||
set => _internal.Source = value;
|
||||
}
|
||||
|
||||
public string? SourceFile
|
||||
{
|
||||
get => _internal.SourceFile;
|
||||
@@ -279,6 +327,12 @@ namespace SabreTools.Metadata.DatItems
|
||||
set => _internal.Status = value;
|
||||
}
|
||||
|
||||
public string? Subgenre
|
||||
{
|
||||
get => _internal.Subgenre;
|
||||
set => _internal.Subgenre = value;
|
||||
}
|
||||
|
||||
public Data.Models.Metadata.Supported? Supported
|
||||
{
|
||||
get => _internal.Supported;
|
||||
@@ -297,6 +351,12 @@ namespace SabreTools.Metadata.DatItems
|
||||
set => _internal.Tags = value;
|
||||
}
|
||||
|
||||
public string? TitleID
|
||||
{
|
||||
get => _internal.TitleID;
|
||||
set => _internal.TitleID = value;
|
||||
}
|
||||
|
||||
public string? Url
|
||||
{
|
||||
get => _internal.Url;
|
||||
@@ -321,7 +381,6 @@ namespace SabreTools.Metadata.DatItems
|
||||
public Machine(Data.Models.Metadata.Machine machine)
|
||||
{
|
||||
_internal = machine.DeepClone() as Data.Models.Metadata.Machine ?? [];
|
||||
Remove(Data.Models.Metadata.Machine.TruripKey);
|
||||
|
||||
// Process flag values
|
||||
if (Im1CRC is not null)
|
||||
@@ -329,11 +388,6 @@ namespace SabreTools.Metadata.DatItems
|
||||
|
||||
if (Im2CRC is not null)
|
||||
Im2CRC = TextHelper.NormalizeCRC32(Im2CRC);
|
||||
|
||||
// Handle Trurip object, if it exists
|
||||
var truripItem = machine.Read<Data.Models.Logiqx.Trurip>(Data.Models.Metadata.Machine.TruripKey);
|
||||
if (truripItem is not null)
|
||||
Write(Data.Models.Metadata.Machine.TruripKey, new Trurip(truripItem));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Data.Extensions;
|
||||
|
||||
namespace SabreTools.Metadata.DatItems
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents TruRip/EmuArc-specific values on a machine
|
||||
/// </summary>
|
||||
[JsonObject("trurip"), XmlRoot("trurip")]
|
||||
public sealed class Trurip : ICloneable
|
||||
{
|
||||
#region Fields
|
||||
|
||||
/// <summary>
|
||||
/// Title ID
|
||||
/// </summary>
|
||||
[JsonProperty("titleid", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
[XmlElement("titleid")]
|
||||
public string? TitleID { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Machine developer
|
||||
/// </summary>
|
||||
[JsonProperty("developer", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
[XmlElement("developer")]
|
||||
public string? Developer { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Game genre
|
||||
/// </summary>
|
||||
[JsonProperty("genre", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
[XmlElement("genre")]
|
||||
public string? Genre { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Game subgenre
|
||||
/// </summary>
|
||||
[JsonProperty("subgenre", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
[XmlElement("subgenre")]
|
||||
public string? Subgenre { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Game ratings
|
||||
/// </summary>
|
||||
[JsonProperty("ratings", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
[XmlElement("ratings")]
|
||||
public string? Ratings { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Game score
|
||||
/// </summary>
|
||||
[JsonProperty("score", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
[XmlElement("score")]
|
||||
public string? Score { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Is the machine enabled
|
||||
/// </summary>
|
||||
[JsonProperty("enabled", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
[XmlElement("enabled")]
|
||||
public string? Enabled { get; set; } = null; // bool?
|
||||
|
||||
/// <summary>
|
||||
/// Does the game have a CRC check
|
||||
/// </summary>
|
||||
[JsonProperty("hascrc", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
[XmlElement("hascrc")]
|
||||
public bool? Crc { get; set; } = null;
|
||||
|
||||
[JsonIgnore]
|
||||
public bool CrcSpecified { get { return Crc is not null; } }
|
||||
|
||||
/// <summary>
|
||||
/// Machine relations
|
||||
/// </summary>
|
||||
[JsonProperty("relatedto", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
[XmlElement("relatedto")]
|
||||
public string? RelatedTo { get; set; } = null;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
public Trurip() { }
|
||||
|
||||
public Trurip(Data.Models.Logiqx.Trurip trurip)
|
||||
{
|
||||
TitleID = trurip.TitleID;
|
||||
Developer = trurip.Developer;
|
||||
Genre = trurip.Genre;
|
||||
Subgenre = trurip.Subgenre;
|
||||
Ratings = trurip.Ratings;
|
||||
Score = trurip.Score;
|
||||
Enabled = trurip.Enabled;
|
||||
Crc = trurip.CRC.AsYesNo();
|
||||
RelatedTo = trurip.RelatedTo;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Cloning methods
|
||||
|
||||
/// <summary>
|
||||
/// Create a clone of the current object
|
||||
/// </summary>
|
||||
/// <returns>New object with the same values as the current one</returns>
|
||||
public object Clone()
|
||||
{
|
||||
return new Trurip()
|
||||
{
|
||||
TitleID = this.TitleID,
|
||||
Developer = this.Developer,
|
||||
Genre = this.Genre,
|
||||
Subgenre = this.Subgenre,
|
||||
Ratings = this.Ratings,
|
||||
Score = this.Score,
|
||||
Enabled = this.Enabled,
|
||||
Crc = this.Crc,
|
||||
RelatedTo = this.RelatedTo,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Convert to the internal Logiqx model
|
||||
/// </summary>
|
||||
public Data.Models.Logiqx.Trurip ConvertToLogiqx()
|
||||
{
|
||||
return new Data.Models.Logiqx.Trurip()
|
||||
{
|
||||
TitleID = this.TitleID,
|
||||
Developer = this.Developer,
|
||||
Genre = this.Genre,
|
||||
Subgenre = this.Subgenre,
|
||||
Ratings = this.Ratings,
|
||||
Score = this.Score,
|
||||
Enabled = this.Enabled,
|
||||
CRC = this.Crc.FromYesNo(),
|
||||
RelatedTo = this.RelatedTo,
|
||||
};
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -919,12 +919,18 @@ namespace SabreTools.Metadata.Filter
|
||||
case Machine item when fieldName == "control":
|
||||
checkValue = item.Control;
|
||||
return true;
|
||||
case Machine item when fieldName == "crc":
|
||||
checkValue = item.CRC;
|
||||
return true;
|
||||
case Machine item when fieldName == "country":
|
||||
checkValue = item.Country;
|
||||
return true;
|
||||
case Machine item when fieldName == "description":
|
||||
checkValue = item.Description;
|
||||
return true;
|
||||
case Machine item when fieldName == "developer":
|
||||
checkValue = item.Developer;
|
||||
return true;
|
||||
case Machine item when fieldName == "dirname":
|
||||
checkValue = item.DirName;
|
||||
return true;
|
||||
@@ -940,6 +946,9 @@ namespace SabreTools.Metadata.Filter
|
||||
case Machine item when fieldName == "emulator":
|
||||
checkValue = item.Emulator;
|
||||
return true;
|
||||
case Machine item when fieldName == "enabled":
|
||||
checkValue = item.Enabled;
|
||||
return true;
|
||||
case Machine item when fieldName == "extra":
|
||||
checkValue = item.Extra;
|
||||
return true;
|
||||
@@ -949,6 +958,9 @@ namespace SabreTools.Metadata.Filter
|
||||
case Machine item when fieldName == "genmsxid":
|
||||
checkValue = item.GenMSXID;
|
||||
return true;
|
||||
case Machine item when fieldName == "genre":
|
||||
checkValue = item.Genre;
|
||||
return true;
|
||||
case Machine item when fieldName == "hash":
|
||||
checkValue = item.Hash;
|
||||
return true;
|
||||
@@ -1003,9 +1015,15 @@ namespace SabreTools.Metadata.Filter
|
||||
case Machine item when fieldName == "publisher":
|
||||
checkValue = item.Publisher;
|
||||
return true;
|
||||
case Machine item when fieldName == "ratings":
|
||||
checkValue = item.Ratings;
|
||||
return true;
|
||||
case Machine item when fieldName == "rebuildto":
|
||||
checkValue = item.RebuildTo;
|
||||
return true;
|
||||
case Machine item when fieldName == "relatedto":
|
||||
checkValue = item.RelatedTo;
|
||||
return true;
|
||||
case Machine item when fieldName == "releasenumber":
|
||||
checkValue = item.ReleaseNumber;
|
||||
return true;
|
||||
@@ -1024,6 +1042,12 @@ namespace SabreTools.Metadata.Filter
|
||||
case Machine item when fieldName == "savetype":
|
||||
checkValue = item.SaveType;
|
||||
return true;
|
||||
case Machine item when fieldName == "score":
|
||||
checkValue = item.Score;
|
||||
return true;
|
||||
case Machine item when fieldName == "source":
|
||||
checkValue = item.Source;
|
||||
return true;
|
||||
case Machine item when fieldName == "sourcefile":
|
||||
checkValue = item.SourceFile;
|
||||
return true;
|
||||
@@ -1033,6 +1057,9 @@ namespace SabreTools.Metadata.Filter
|
||||
case Machine item when fieldName == "status":
|
||||
checkValue = item.Status;
|
||||
return true;
|
||||
case Machine item when fieldName == "subgenre":
|
||||
checkValue = item.Subgenre;
|
||||
return true;
|
||||
case Machine item when fieldName == "supported":
|
||||
checkValue = item.Supported?.AsStringValue();
|
||||
return true;
|
||||
@@ -1042,6 +1069,9 @@ namespace SabreTools.Metadata.Filter
|
||||
case Machine item when fieldName == "tags":
|
||||
checkValue = item.Tags;
|
||||
return true;
|
||||
case Machine item when fieldName == "titleid":
|
||||
checkValue = item.TitleID;
|
||||
return true;
|
||||
case Machine item when fieldName == "url":
|
||||
checkValue = item.Url;
|
||||
return true;
|
||||
|
||||
@@ -254,10 +254,14 @@ namespace SabreTools.Metadata
|
||||
return false;
|
||||
if (selfMachine.Control != otherMachine.Control)
|
||||
return false;
|
||||
if (selfMachine.CRC != otherMachine.CRC)
|
||||
return false;
|
||||
if (selfMachine.Country != otherMachine.Country)
|
||||
return false;
|
||||
if (selfMachine.Description != otherMachine.Description)
|
||||
return false;
|
||||
if (selfMachine.Developer != otherMachine.Developer)
|
||||
return false;
|
||||
if (selfMachine.DirName != otherMachine.DirName)
|
||||
return false;
|
||||
if (selfMachine.DisplayCount != otherMachine.DisplayCount)
|
||||
@@ -268,12 +272,16 @@ namespace SabreTools.Metadata
|
||||
return false;
|
||||
if (selfMachine.Emulator != otherMachine.Emulator)
|
||||
return false;
|
||||
if (selfMachine.Enabled != otherMachine.Enabled)
|
||||
return false;
|
||||
if (selfMachine.Extra != otherMachine.Extra)
|
||||
return false;
|
||||
if (selfMachine.Favorite != otherMachine.Favorite)
|
||||
return false;
|
||||
if (selfMachine.GenMSXID != otherMachine.GenMSXID)
|
||||
return false;
|
||||
if (selfMachine.Genre != otherMachine.Genre)
|
||||
return false;
|
||||
if (selfMachine.Hash != otherMachine.Hash)
|
||||
return false;
|
||||
if (selfMachine.History != otherMachine.History)
|
||||
@@ -308,8 +316,12 @@ namespace SabreTools.Metadata
|
||||
return false;
|
||||
if (selfMachine.Publisher != otherMachine.Publisher)
|
||||
return false;
|
||||
if (selfMachine.Ratings != otherMachine.Ratings)
|
||||
return false;
|
||||
if (selfMachine.RebuildTo != otherMachine.RebuildTo)
|
||||
return false;
|
||||
if (selfMachine.RelatedTo != otherMachine.RelatedTo)
|
||||
return false;
|
||||
if (selfMachine.ReleaseNumber != otherMachine.ReleaseNumber)
|
||||
return false;
|
||||
if (selfMachine.RomOf != otherMachine.RomOf)
|
||||
@@ -322,18 +334,26 @@ namespace SabreTools.Metadata
|
||||
return false;
|
||||
if (selfMachine.SaveType != otherMachine.SaveType)
|
||||
return false;
|
||||
if (selfMachine.Score != otherMachine.Score)
|
||||
return false;
|
||||
if (selfMachine.Source != otherMachine.Source)
|
||||
return false;
|
||||
if (selfMachine.SourceFile != otherMachine.SourceFile)
|
||||
return false;
|
||||
if (selfMachine.SourceRom != otherMachine.SourceRom)
|
||||
return false;
|
||||
if (selfMachine.Status != otherMachine.Status)
|
||||
return false;
|
||||
if (selfMachine.Subgenre != otherMachine.Subgenre)
|
||||
return false;
|
||||
if (selfMachine.Supported != otherMachine.Supported)
|
||||
return false;
|
||||
if (selfMachine.System != otherMachine.System)
|
||||
return false;
|
||||
if (selfMachine.Tags != otherMachine.Tags)
|
||||
return false;
|
||||
if (selfMachine.TitleID != otherMachine.TitleID)
|
||||
return false;
|
||||
if (selfMachine.Url != otherMachine.Url)
|
||||
return false;
|
||||
if (selfMachine.Year != otherMachine.Year)
|
||||
|
||||
@@ -57,57 +57,46 @@ namespace SabreTools.Serialization.CrossModel
|
||||
};
|
||||
|
||||
string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey);
|
||||
Data.Models.Metadata.MergingFlag forceMerging = item.ForceMerging;
|
||||
Data.Models.Metadata.NodumpFlag forceNodump = item.ForceNodump;
|
||||
Data.Models.Metadata.PackingFlag forcePacking = item.ForcePacking;
|
||||
|
||||
if (headerVal is not null
|
||||
|| forceMerging is not Data.Models.Metadata.MergingFlag.None
|
||||
|| forceNodump is not Data.Models.Metadata.NodumpFlag.None
|
||||
|| forcePacking is not Data.Models.Metadata.PackingFlag.None)
|
||||
|| item.ForceMerging is not Data.Models.Metadata.MergingFlag.None
|
||||
|| item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None
|
||||
|| item.ForcePacking is not Data.Models.Metadata.PackingFlag.None)
|
||||
{
|
||||
header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro();
|
||||
if (headerVal is not null)
|
||||
header.ClrMamePro.Header = headerVal;
|
||||
if (forceMerging is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.ClrMamePro.ForceMerging = forceMerging;
|
||||
if (forceNodump is not Data.Models.Metadata.NodumpFlag.None)
|
||||
header.ClrMamePro.ForceNodump = forceNodump;
|
||||
if (forcePacking is not Data.Models.Metadata.PackingFlag.None)
|
||||
header.ClrMamePro.ForcePacking = forcePacking;
|
||||
if (item.ForceMerging is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.ClrMamePro.ForceMerging = item.ForceMerging;
|
||||
if (item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None)
|
||||
header.ClrMamePro.ForceNodump = item.ForceNodump;
|
||||
if (item.ForcePacking is not Data.Models.Metadata.PackingFlag.None)
|
||||
header.ClrMamePro.ForcePacking = item.ForcePacking;
|
||||
}
|
||||
|
||||
string? plugin = item.Plugin;
|
||||
Data.Models.Metadata.MergingFlag romMode = item.RomMode;
|
||||
Data.Models.Metadata.MergingFlag biosMode = item.BiosMode;
|
||||
Data.Models.Metadata.MergingFlag sampleMode = item.SampleMode;
|
||||
bool? lockRomMode = item.LockRomMode;
|
||||
bool? lockBiosMode = item.LockBiosMode;
|
||||
bool? lockSampleMode = item.LockSampleMode;
|
||||
|
||||
if (plugin is not null
|
||||
|| romMode is not Data.Models.Metadata.MergingFlag.None
|
||||
|| biosMode is not Data.Models.Metadata.MergingFlag.None
|
||||
|| sampleMode is not Data.Models.Metadata.MergingFlag.None
|
||||
|| lockRomMode is not null
|
||||
|| lockBiosMode is not null
|
||||
|| lockSampleMode is not null)
|
||||
if (item.Plugin is not null
|
||||
|| item.RomMode is not Data.Models.Metadata.MergingFlag.None
|
||||
|| item.BiosMode is not Data.Models.Metadata.MergingFlag.None
|
||||
|| item.SampleMode is not Data.Models.Metadata.MergingFlag.None
|
||||
|| item.LockRomMode is not null
|
||||
|| item.LockBiosMode is not null
|
||||
|| item.LockSampleMode is not null)
|
||||
{
|
||||
header.RomCenter = new Data.Models.Logiqx.RomCenter();
|
||||
if (plugin is not null)
|
||||
header.RomCenter.Plugin = plugin;
|
||||
if (romMode is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.RomCenter.RomMode = romMode;
|
||||
if (biosMode is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.RomCenter.BiosMode = biosMode;
|
||||
if (sampleMode is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.RomCenter.SampleMode = sampleMode;
|
||||
if (lockRomMode is not null)
|
||||
header.RomCenter.LockRomMode = lockRomMode;
|
||||
if (lockBiosMode is not null)
|
||||
header.RomCenter.LockBiosMode = lockBiosMode;
|
||||
if (lockSampleMode is not null)
|
||||
header.RomCenter.LockSampleMode = lockSampleMode;
|
||||
if (item.Plugin is not null)
|
||||
header.RomCenter.Plugin = item.Plugin;
|
||||
if (item.RomMode is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.RomCenter.RomMode = item.RomMode;
|
||||
if (item.BiosMode is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.RomCenter.BiosMode = item.BiosMode;
|
||||
if (item.SampleMode is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.RomCenter.SampleMode = item.SampleMode;
|
||||
if (item.LockRomMode is not null)
|
||||
header.RomCenter.LockRomMode = item.LockRomMode;
|
||||
if (item.LockBiosMode is not null)
|
||||
header.RomCenter.LockBiosMode = item.LockBiosMode;
|
||||
if (item.LockSampleMode is not null)
|
||||
header.RomCenter.LockSampleMode = item.LockSampleMode;
|
||||
}
|
||||
|
||||
return header;
|
||||
@@ -140,9 +129,47 @@ namespace SabreTools.Serialization.CrossModel
|
||||
gameBase.Publisher = item.Publisher;
|
||||
gameBase.Category = item.ReadStringArray(Data.Models.Metadata.Machine.CategoryKey);
|
||||
|
||||
var trurip = item.Read<Trurip>(Data.Models.Metadata.Machine.TruripKey);
|
||||
if (trurip is not null)
|
||||
gameBase.Trurip = trurip;
|
||||
if (item.TitleID is not null
|
||||
|| item.Developer is not null
|
||||
|| item.Genre is not null
|
||||
|| item.Subgenre is not null
|
||||
|| item.Ratings is not null
|
||||
|| item.Score is not null
|
||||
|| item.Enabled is not null
|
||||
|| item.CRC is not null
|
||||
|| item.Source is not null
|
||||
|| item.RelatedTo is not null)
|
||||
{
|
||||
gameBase.Trurip = new Trurip();
|
||||
if (item.TitleID is not null)
|
||||
gameBase.Trurip.TitleID = item.TitleID;
|
||||
if (item.Publisher is not null)
|
||||
gameBase.Trurip.Publisher = item.Publisher;
|
||||
if (item.Developer is not null)
|
||||
gameBase.Trurip.Developer = item.Developer;
|
||||
if (item.Year is not null)
|
||||
gameBase.Trurip.Year = item.Year;
|
||||
if (item.Genre is not null)
|
||||
gameBase.Trurip.Genre = item.Genre;
|
||||
if (item.Subgenre is not null)
|
||||
gameBase.Trurip.Subgenre = item.Subgenre;
|
||||
if (item.Ratings is not null)
|
||||
gameBase.Trurip.Ratings = item.Ratings;
|
||||
if (item.Score is not null)
|
||||
gameBase.Trurip.Score = item.Score;
|
||||
if (item.Players is not null)
|
||||
gameBase.Trurip.Players = item.Players;
|
||||
if (item.Enabled is not null)
|
||||
gameBase.Trurip.Enabled = item.Enabled;
|
||||
if (item.CRC is not null)
|
||||
gameBase.Trurip.CRC = item.CRC;
|
||||
if (item.Source is not null)
|
||||
gameBase.Trurip.Source = item.Source;
|
||||
if (item.CloneOf is not null)
|
||||
gameBase.Trurip.CloneOf = item.CloneOf;
|
||||
if (item.RelatedTo is not null)
|
||||
gameBase.Trurip.RelatedTo = item.RelatedTo;
|
||||
}
|
||||
|
||||
var releases = item.Release;
|
||||
if (releases is not null && releases.Length > 0)
|
||||
|
||||
@@ -126,26 +126,36 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|
||||
var machine = new Data.Models.Metadata.Machine
|
||||
{
|
||||
Name = machineName,
|
||||
SourceFile = item.SourceFile,
|
||||
Board = item.Board,
|
||||
[Data.Models.Metadata.Machine.CategoryKey] = item.Category,
|
||||
CloneOf = item.CloneOf ?? item.Trurip?.CloneOf,
|
||||
CloneOfId = item.CloneOfId,
|
||||
[Data.Models.Metadata.Machine.CommentKey] = item.Comment,
|
||||
CRC = item.Trurip?.CRC,
|
||||
Description = item.Description,
|
||||
Developer = item.Trurip?.Developer,
|
||||
Enabled = item.Trurip?.Enabled,
|
||||
Genre = item.Trurip?.Genre,
|
||||
Id = item.Id,
|
||||
IsBios = item.IsBios,
|
||||
IsDevice = item.IsDevice,
|
||||
IsMechanical = item.IsMechanical,
|
||||
CloneOf = item.CloneOf,
|
||||
RomOf = item.RomOf,
|
||||
SampleOf = item.SampleOf,
|
||||
Board = item.Board,
|
||||
RebuildTo = item.RebuildTo,
|
||||
Id = item.Id,
|
||||
CloneOfId = item.CloneOfId,
|
||||
Runnable = item.Runnable,
|
||||
[Data.Models.Metadata.Machine.CommentKey] = item.Comment,
|
||||
Description = item.Description,
|
||||
Year = item.Year,
|
||||
Manufacturer = item.Manufacturer,
|
||||
Publisher = item.Publisher,
|
||||
[Data.Models.Metadata.Machine.CategoryKey] = item.Category,
|
||||
[Data.Models.Metadata.Machine.TruripKey] = item.Trurip,
|
||||
Name = machineName,
|
||||
Players = item.Trurip?.Players,
|
||||
Publisher = item.Publisher ?? item.Trurip?.Publisher,
|
||||
Ratings = item.Trurip?.Ratings,
|
||||
RebuildTo = item.RebuildTo,
|
||||
RelatedTo = item.Trurip?.RelatedTo,
|
||||
RomOf = item.RomOf,
|
||||
Runnable = item.Runnable,
|
||||
SampleOf = item.SampleOf,
|
||||
Score = item.Trurip?.Score,
|
||||
Source = item.Trurip?.Source,
|
||||
SourceFile = item.SourceFile,
|
||||
Subgenre = item.Trurip?.Subgenre,
|
||||
TitleID = item.Trurip?.TitleID,
|
||||
Year = item.Year ?? item.Trurip?.Year,
|
||||
};
|
||||
|
||||
if (item.Release is not null && item.Release.Length > 0)
|
||||
|
||||
Reference in New Issue
Block a user