mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-21 14:25:03 +00:00
Add subset RomVault header extension field
This commit is contained in:
@@ -48,6 +48,10 @@ namespace SabreTools.Data.Models.Logiqx
|
||||
[XmlElement("comment")]
|
||||
public string? Comment { get; set; }
|
||||
|
||||
/// <remarks>RomVault extension</remarks>
|
||||
[XmlElement("subset")]
|
||||
public string? Subset { get; set; }
|
||||
|
||||
/// <remarks>Trurip extension</remarks>
|
||||
[XmlElement("type")]
|
||||
public string? Type { get; set; }
|
||||
|
||||
@@ -108,6 +108,8 @@ namespace SabreTools.Data.Models.Metadata
|
||||
/// TODO: This needs an internal model OR mapping to fields
|
||||
public OfflineList.Search? Search { get; set; }
|
||||
|
||||
public string? Subset { get; set; }
|
||||
|
||||
public string? System { get; set; }
|
||||
|
||||
public string? Timestamp { get; set; }
|
||||
@@ -166,6 +168,7 @@ namespace SabreTools.Data.Models.Metadata
|
||||
obj.ScreenshotsHeight = ScreenshotsHeight;
|
||||
obj.ScreenshotsWidth = ScreenshotsWidth;
|
||||
obj.Search = Search;
|
||||
obj.Subset = Subset;
|
||||
obj.System = System;
|
||||
obj.Timestamp = Timestamp;
|
||||
obj.Type = Type;
|
||||
@@ -336,6 +339,11 @@ namespace SabreTools.Data.Models.Metadata
|
||||
else if (ScreenshotsWidth is not null && !ScreenshotsWidth.Equals(other.ScreenshotsWidth, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
if ((Subset is null) ^ (other.Subset is null))
|
||||
return false;
|
||||
else if (Subset is not null && !Subset.Equals(other.Subset, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
if ((System is null) ^ (other.System is null))
|
||||
return false;
|
||||
else if (System is not null && !System.Equals(other.System, StringComparison.OrdinalIgnoreCase))
|
||||
|
||||
@@ -243,6 +243,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
ScreenshotsHeight = "screenshotsheight",
|
||||
ScreenshotsWidth = "screenshotsWidth",
|
||||
Search = search,
|
||||
Subset = "subset",
|
||||
System = "system",
|
||||
Timestamp = "timestamp",
|
||||
Type = "type",
|
||||
@@ -1034,6 +1035,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("screenshotsheight", datHeader.ScreenshotsHeight);
|
||||
Assert.Equal("screenshotsWidth", datHeader.ScreenshotsWidth);
|
||||
Assert.NotNull(datHeader.Search);
|
||||
Assert.Equal("subset", datHeader.Subset);
|
||||
Assert.Equal("system", datHeader.System);
|
||||
Assert.Equal("timestamp", datHeader.Timestamp);
|
||||
Assert.Equal("type", datHeader.Type);
|
||||
|
||||
@@ -374,6 +374,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("screenshotsheight", header.ScreenshotsHeight);
|
||||
Assert.Equal("screenshotsWidth", header.ScreenshotsWidth);
|
||||
Assert.NotNull(header.Search);
|
||||
Assert.Equal("subset", header.Subset);
|
||||
Assert.Equal("system", header.System);
|
||||
Assert.Equal("timestamp", header.Timestamp);
|
||||
Assert.Equal("type", header.Type);
|
||||
|
||||
@@ -156,6 +156,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
Header.ScreenshotsWidth = header.ScreenshotsWidth;
|
||||
if (Header.System is null)
|
||||
Header.System = header.System;
|
||||
if (Header.Subset is null)
|
||||
Header.Subset = header.Subset;
|
||||
if (Header.Timestamp is null)
|
||||
Header.Timestamp = header.Timestamp;
|
||||
if (Header.Type is null)
|
||||
|
||||
@@ -282,6 +282,12 @@ namespace SabreTools.Metadata.DatFiles
|
||||
[JsonIgnore]
|
||||
public bool SearchSpecified => Search is not null;
|
||||
|
||||
public string? Subset
|
||||
{
|
||||
get => _internal.Subset;
|
||||
set => _internal.Subset = value;
|
||||
}
|
||||
|
||||
public string? System
|
||||
{
|
||||
get => _internal.System;
|
||||
|
||||
@@ -1131,6 +1131,7 @@ namespace SabreTools.Metadata.Filter.Test
|
||||
[InlineData("header.schemalocation", "schemalocation")]
|
||||
[InlineData("header.screenshotsheight", "screenshotsheight")]
|
||||
[InlineData("header.screenshotswidth", "screenshotswidth")]
|
||||
[InlineData("header.subset", "subset")]
|
||||
[InlineData("header.system", "system")]
|
||||
[InlineData("header.timestamp", "timestamp")]
|
||||
[InlineData("header.type", "type")]
|
||||
@@ -1176,6 +1177,7 @@ namespace SabreTools.Metadata.Filter.Test
|
||||
SchemaLocation = "schemalocation",
|
||||
ScreenshotsHeight = "screenshotsheight",
|
||||
ScreenshotsWidth = "screenshotswidth",
|
||||
Subset = "subset",
|
||||
System = "system",
|
||||
Timestamp = "timestamp",
|
||||
Type = "type",
|
||||
|
||||
@@ -337,6 +337,7 @@ namespace SabreTools.Metadata.Filter
|
||||
"screenshotsheight",
|
||||
"screenshotswidth",
|
||||
"skipper",
|
||||
"subset",
|
||||
"system",
|
||||
"timestamp",
|
||||
"type",
|
||||
|
||||
@@ -1365,6 +1365,9 @@ namespace SabreTools.Metadata.Filter
|
||||
checkValue = obj.ScreenshotsWidth;
|
||||
return true;
|
||||
// Header.Search is intentionally skipped
|
||||
case "subset":
|
||||
checkValue = obj.Subset;
|
||||
return true;
|
||||
case "system":
|
||||
checkValue = obj.System;
|
||||
return true;
|
||||
|
||||
@@ -115,6 +115,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Url = "url",
|
||||
Comment = "comment",
|
||||
Type = "type",
|
||||
Subset = "subset",
|
||||
RomVault = romvault,
|
||||
ClrMamePro = clrmamepro,
|
||||
RomCenter = romcenter,
|
||||
@@ -315,6 +316,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Assert.Equal("url", header.Url);
|
||||
Assert.Equal("comment", header.Comment);
|
||||
Assert.Equal("type", header.Type);
|
||||
Assert.Equal("subset", header.Subset);
|
||||
Validate(header.RomVault);
|
||||
Validate(header.ClrMamePro);
|
||||
Validate(header.RomCenter);
|
||||
|
||||
@@ -54,6 +54,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
Url = item.Url,
|
||||
Comment = item.Comment,
|
||||
Type = item.Type,
|
||||
Subset = item.Subset,
|
||||
};
|
||||
|
||||
if (item.HeaderSkipper is not null
|
||||
|
||||
@@ -66,6 +66,7 @@ namespace SabreTools.Serialization.CrossModel
|
||||
Url = item.Url,
|
||||
Comment = item.Comment,
|
||||
Type = item.Type,
|
||||
Subset = item.Subset,
|
||||
};
|
||||
|
||||
if (item.ClrMamePro is not null)
|
||||
|
||||
@@ -180,6 +180,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Url = "url",
|
||||
Comment = "comment",
|
||||
Type = "type",
|
||||
Subset = "subset",
|
||||
RomVault = romvault,
|
||||
ClrMamePro = clrmamepro,
|
||||
RomCenter = romcenter,
|
||||
@@ -368,6 +369,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Assert.Equal("url", header.Url);
|
||||
Assert.Equal("comment", header.Comment);
|
||||
Assert.Equal("type", header.Type);
|
||||
Assert.Equal("subset", header.Subset);
|
||||
Validate(header.RomVault);
|
||||
Validate(header.ClrMamePro);
|
||||
Validate(header.RomCenter);
|
||||
|
||||
@@ -270,6 +270,12 @@ namespace SabreTools.Serialization.Readers
|
||||
|
||||
obj.Type = reader.ReadElementContentAsString();
|
||||
break;
|
||||
case "subset":
|
||||
if (obj.Subset is not null && Debug)
|
||||
Console.WriteLine($"'{reader.Name}' element already found, overwriting");
|
||||
|
||||
obj.Subset = reader.ReadElementContentAsString();
|
||||
break;
|
||||
case "romvault":
|
||||
if (obj.RomVault is not null && Debug)
|
||||
Console.WriteLine($"'{reader.Name}' element already found, overwriting");
|
||||
|
||||
@@ -158,6 +158,7 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteOptionalElementString("url", obj.Url);
|
||||
writer.WriteOptionalElementString("comment", obj.Comment);
|
||||
writer.WriteOptionalElementString("type", obj.Type);
|
||||
writer.WriteOptionalElementString("subset", obj.Subset);
|
||||
|
||||
if (obj.RomVault is not null)
|
||||
WriteRomVault(obj.RomVault, writer);
|
||||
|
||||
Reference in New Issue
Block a user