Add Logiqx serial and version machine fields

This commit is contained in:
Matt Nadareski
2026-06-22 16:35:03 -04:00
parent 88aae0dd26
commit 717de3608c
13 changed files with 72 additions and 0 deletions

View File

@@ -71,6 +71,12 @@ namespace SabreTools.Data.Models.Logiqx
[XmlElement("publisher")] [XmlElement("publisher")]
public string? Publisher { get; set; } public string? Publisher { get; set; }
[XmlElement("serial")]
public string? Serial { get; set; }
[XmlElement("version")]
public string? Version { get; set; }
/// <remarks>No-Intro extension includes more than 1 instance</remarks> /// <remarks>No-Intro extension includes more than 1 instance</remarks>
[XmlElement("category")] [XmlElement("category")]
public string[]? Category { get; set; } public string[]? Category { get; set; }

View File

@@ -157,6 +157,8 @@ namespace SabreTools.Data.Models.Metadata
public string? Score { get; set; } public string? Score { get; set; }
public string? Serial { get; set; }
public SharedFeat[]? SharedFeat { get; set; } public SharedFeat[]? SharedFeat { get; set; }
public Slot[]? Slot { get; set; } public Slot[]? Slot { get; set; }
@@ -186,6 +188,8 @@ namespace SabreTools.Data.Models.Metadata
public string? Url { get; set; } public string? Url { get; set; }
public string? Version { get; set; }
public Video[]? Video { get; set; } public Video[]? Video { get; set; }
public string? Year { get; set; } public string? Year { get; set; }
@@ -293,6 +297,7 @@ namespace SabreTools.Data.Models.Metadata
obj.SampleOf = SampleOf; obj.SampleOf = SampleOf;
obj.SaveType = SaveType; obj.SaveType = SaveType;
obj.Score = Score; obj.Score = Score;
obj.Serial = Serial;
if (SharedFeat is not null) if (SharedFeat is not null)
obj.SharedFeat = Array.ConvertAll(SharedFeat, i => (SharedFeat)i.Clone()); obj.SharedFeat = Array.ConvertAll(SharedFeat, i => (SharedFeat)i.Clone());
if (Slot is not null) if (Slot is not null)
@@ -311,6 +316,7 @@ namespace SabreTools.Data.Models.Metadata
obj.Tags = Tags; obj.Tags = Tags;
obj.TitleID = TitleID; obj.TitleID = TitleID;
obj.Url = Url; obj.Url = Url;
obj.Version = Version;
if (Video is not null) if (Video is not null)
obj.Video = Array.ConvertAll(Video, i => (Video)i.Clone()); obj.Video = Array.ConvertAll(Video, i => (Video)i.Clone());
obj.Year = Year; obj.Year = Year;
@@ -558,6 +564,11 @@ namespace SabreTools.Data.Models.Metadata
else if (Score is not null && !Score.Equals(other.Score, StringComparison.OrdinalIgnoreCase)) else if (Score is not null && !Score.Equals(other.Score, StringComparison.OrdinalIgnoreCase))
return false; return false;
if ((Serial is null) ^ (other.Serial is null))
return false;
else if (Serial is not null && !Serial.Equals(other.Serial, StringComparison.OrdinalIgnoreCase))
return false;
if ((Source is null) ^ (other.Source is null)) if ((Source is null) ^ (other.Source is null))
return false; return false;
else if (Source is not null && !Source.Equals(other.Source, StringComparison.OrdinalIgnoreCase)) else if (Source is not null && !Source.Equals(other.Source, StringComparison.OrdinalIgnoreCase))
@@ -606,6 +617,11 @@ namespace SabreTools.Data.Models.Metadata
else if (Url is not null && !Url.Equals(other.Url, StringComparison.OrdinalIgnoreCase)) else if (Url is not null && !Url.Equals(other.Url, StringComparison.OrdinalIgnoreCase))
return false; return false;
if ((Version is null) ^ (other.Version is null))
return false;
else if (Version is not null && !Version.Equals(other.Version, StringComparison.OrdinalIgnoreCase))
return false;
if ((Year is null) ^ (other.Year is null)) if ((Year is null) ^ (other.Year is null))
return false; return false;
else if (Year is not null && !Year.Equals(other.Year, StringComparison.OrdinalIgnoreCase)) else if (Year is not null && !Year.Equals(other.Year, StringComparison.OrdinalIgnoreCase))

View File

@@ -326,6 +326,7 @@ namespace SabreTools.Metadata.DatFiles.Test
SampleOf = "sampleof", SampleOf = "sampleof",
SaveType = "savetype", SaveType = "savetype",
Score = "score", Score = "score",
Serial = "serial",
SharedFeat = [CreateMetadataSharedFeat()], SharedFeat = [CreateMetadataSharedFeat()],
Slot = [CreateMetadataSlot()], Slot = [CreateMetadataSlot()],
SoftwareList = [CreateMetadataSoftwareList()], SoftwareList = [CreateMetadataSoftwareList()],
@@ -340,6 +341,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Tags = "tags", Tags = "tags",
TitleID = "titleid", TitleID = "titleid",
Url = "url", Url = "url",
Version = "version",
Video = [CreateMetadataVideo()], Video = [CreateMetadataVideo()],
Year = "year", Year = "year",
}; };

View File

@@ -435,6 +435,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("sampleof", machine.SampleOf); Assert.Equal("sampleof", machine.SampleOf);
Assert.Equal("savetype", machine.SaveType); Assert.Equal("savetype", machine.SaveType);
Assert.Equal("score", machine.Score); Assert.Equal("score", machine.Score);
Assert.Equal("serial", machine.Serial);
Assert.Equal("source", machine.Source); Assert.Equal("source", machine.Source);
Assert.Equal("sourcefile", machine.SourceFile); Assert.Equal("sourcefile", machine.SourceFile);
Assert.Equal("sourcerom", machine.SourceRom); Assert.Equal("sourcerom", machine.SourceRom);
@@ -444,6 +445,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("system", machine.System); Assert.Equal("system", machine.System);
Assert.Equal("tags", machine.Tags); Assert.Equal("tags", machine.Tags);
Assert.Equal("titleid", machine.TitleID); Assert.Equal("titleid", machine.TitleID);
Assert.Equal("version", machine.Version);
Assert.Equal("year", machine.Year); Assert.Equal("year", machine.Year);
Data.Models.Metadata.Adjuster[]? adjusters = machine.Adjuster; Data.Models.Metadata.Adjuster[]? adjusters = machine.Adjuster;

View File

@@ -314,6 +314,12 @@ namespace SabreTools.Metadata.DatItems
set => _internal.Score = value; set => _internal.Score = value;
} }
public string? Serial
{
get => _internal.Serial;
set => _internal.Serial = value;
}
public string? Source public string? Source
{ {
get => _internal.Source; get => _internal.Source;
@@ -374,6 +380,12 @@ namespace SabreTools.Metadata.DatItems
set => _internal.Url = value; set => _internal.Url = value;
} }
public string? Version
{
get => _internal.Version;
set => _internal.Version = value;
}
public string? Year public string? Year
{ {
get => _internal.Year; get => _internal.Year;

View File

@@ -1359,6 +1359,7 @@ namespace SabreTools.Metadata.Filter.Test
SampleOf = "sampleof", SampleOf = "sampleof",
SaveType = "savetype", SaveType = "savetype",
Score = "score", Score = "score",
Serial = "serial",
Source = "source", Source = "source",
SourceFile = "sourcefile", SourceFile = "sourcefile",
SourceRom = "sourcerom", SourceRom = "sourcerom",
@@ -1369,6 +1370,7 @@ namespace SabreTools.Metadata.Filter.Test
Tags = "tags", Tags = "tags",
TitleID = "titleid", TitleID = "titleid",
Url = "url", Url = "url",
Version = "version",
Year = "year", Year = "year",
}; };

View File

@@ -1600,6 +1600,9 @@ namespace SabreTools.Metadata.Filter
case "score": case "score":
checkValue = obj.Score; checkValue = obj.Score;
return true; return true;
case "serial":
checkValue = obj.Serial;
return true;
case "source": case "source":
checkValue = obj.Source; checkValue = obj.Source;
return true; return true;
@@ -1630,6 +1633,9 @@ namespace SabreTools.Metadata.Filter
case "url": case "url":
checkValue = obj.Url; checkValue = obj.Url;
return true; return true;
case "version":
checkValue = obj.Version;
return true;
case "year": case "year":
checkValue = obj.Year; checkValue = obj.Year;
return true; return true;

View File

@@ -257,6 +257,8 @@ namespace SabreTools.Serialization.CrossModel.Test
gameBase.Year = "year"; gameBase.Year = "year";
gameBase.Manufacturer = "manufacturer"; gameBase.Manufacturer = "manufacturer";
gameBase.Publisher = "publisher"; gameBase.Publisher = "publisher";
gameBase.Serial = "serial";
gameBase.Version = "version";
gameBase.Category = ["category"]; gameBase.Category = ["category"];
gameBase.Trurip = trurip; gameBase.Trurip = trurip;
gameBase.Release = [release]; gameBase.Release = [release];
@@ -387,6 +389,8 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("year", gb.Year); Assert.Equal("year", gb.Year);
Assert.Equal("manufacturer", gb.Manufacturer); Assert.Equal("manufacturer", gb.Manufacturer);
Assert.Equal("publisher", gb.Publisher); Assert.Equal("publisher", gb.Publisher);
Assert.Equal("serial", gb.Serial);
Assert.Equal("version", gb.Version);
Assert.NotNull(gb.Category); Assert.NotNull(gb.Category);
string category = Assert.Single(gb.Category); string category = Assert.Single(gb.Category);

View File

@@ -135,6 +135,8 @@ namespace SabreTools.Serialization.CrossModel
gameBase.Year = item.Year; gameBase.Year = item.Year;
gameBase.Manufacturer = item.Manufacturer; gameBase.Manufacturer = item.Manufacturer;
gameBase.Publisher = item.Publisher; gameBase.Publisher = item.Publisher;
gameBase.Serial = item.Serial;
gameBase.Version = item.Version;
gameBase.Category = item.Category; gameBase.Category = item.Category;
if (item.TitleID is not null if (item.TitleID is not null

View File

@@ -144,6 +144,8 @@ namespace SabreTools.Serialization.CrossModel
Name = machineName, Name = machineName,
Players = item.Trurip?.Players, Players = item.Trurip?.Players,
Publisher = item.Publisher ?? item.Trurip?.Publisher, Publisher = item.Publisher ?? item.Trurip?.Publisher,
Serial = item.Serial,
Version = item.Version,
Ratings = item.Trurip?.Ratings, Ratings = item.Trurip?.Ratings,
RebuildTo = item.RebuildTo, RebuildTo = item.RebuildTo,
RelatedTo = item.Trurip?.RelatedTo, RelatedTo = item.Trurip?.RelatedTo,

View File

@@ -322,6 +322,8 @@ namespace SabreTools.Serialization.Readers.Test
gameBase.Year = "year"; gameBase.Year = "year";
gameBase.Manufacturer = "manufacturer"; gameBase.Manufacturer = "manufacturer";
gameBase.Publisher = "publisher"; gameBase.Publisher = "publisher";
gameBase.Serial = "serial";
gameBase.Version = "version";
gameBase.Category = ["category"]; gameBase.Category = ["category"];
gameBase.Trurip = trurip; gameBase.Trurip = trurip;
gameBase.Release = [release]; gameBase.Release = [release];
@@ -437,6 +439,8 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("year", gb.Year); Assert.Equal("year", gb.Year);
Assert.Equal("manufacturer", gb.Manufacturer); Assert.Equal("manufacturer", gb.Manufacturer);
Assert.Equal("publisher", gb.Publisher); Assert.Equal("publisher", gb.Publisher);
Assert.Equal("serial", gb.Serial);
Assert.Equal("version", gb.Version);
Assert.NotNull(gb.Category); Assert.NotNull(gb.Category);
string category = Assert.Single(gb.Category); string category = Assert.Single(gb.Category);

View File

@@ -587,6 +587,18 @@ namespace SabreTools.Serialization.Readers
obj.Publisher = reader.ReadElementContentAsString(); obj.Publisher = reader.ReadElementContentAsString();
break; break;
case "serial":
if (obj.Serial is not null && Debug)
Console.WriteLine($"'{reader.Name}' element already found, overwriting");
obj.Serial = reader.ReadElementContentAsString();
break;
case "version":
if (obj.Version is not null && Debug)
Console.WriteLine($"'{reader.Name}' element already found, overwriting");
obj.Version = reader.ReadElementContentAsString();
break;
case "category": case "category":
var category = reader.ReadElementContentAsString(); var category = reader.ReadElementContentAsString();
if (category is not null) if (category is not null)

View File

@@ -373,6 +373,8 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalElementString("year", obj.Year); writer.WriteOptionalElementString("year", obj.Year);
writer.WriteOptionalElementString("manufacturer", obj.Manufacturer); writer.WriteOptionalElementString("manufacturer", obj.Manufacturer);
writer.WriteOptionalElementString("publisher", obj.Publisher); writer.WriteOptionalElementString("publisher", obj.Publisher);
writer.WriteOptionalElementString("serial", obj.Serial);
writer.WriteOptionalElementString("version", obj.Version);
if (obj.Category is not null && obj.Category.Length > 0) if (obj.Category is not null && obj.Category.Length > 0)
{ {