diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs
index 4408dec5..12ca38bf 100644
--- a/SabreTools.Data.Extensions/MetadataExtensions.cs
+++ b/SabreTools.Data.Extensions/MetadataExtensions.cs
@@ -120,6 +120,7 @@ namespace SabreTools.Data.Extensions
cloneHeader.Author = selfHeader.Author;
cloneHeader.BiosMode = selfHeader.BiosMode;
cloneHeader.Build = selfHeader.Build;
+ cloneHeader.CanOpen = selfHeader.CanOpen;
cloneHeader.Category = selfHeader.Category;
cloneHeader.Comment = selfHeader.Comment;
cloneHeader.Date = selfHeader.Date;
@@ -136,11 +137,15 @@ namespace SabreTools.Data.Extensions
cloneHeader.HeaderSkipper = selfHeader.HeaderSkipper;
cloneHeader.Homepage = selfHeader.Homepage;
cloneHeader.Id = selfHeader.Id;
+ cloneHeader.Images = selfHeader.Images;
+ cloneHeader.ImFolder = selfHeader.ImFolder;
+ cloneHeader.Infos = selfHeader.Infos;
cloneHeader.LockBiosMode = selfHeader.LockBiosMode;
cloneHeader.LockRomMode = selfHeader.LockRomMode;
cloneHeader.LockSampleMode = selfHeader.LockSampleMode;
cloneHeader.MameConfig = selfHeader.MameConfig;
cloneHeader.Name = selfHeader.Name;
+ cloneHeader.NewDat = selfHeader.NewDat;
cloneHeader.Notes = selfHeader.Notes;
cloneHeader.Plugin = selfHeader.Plugin;
cloneHeader.RefName = selfHeader.RefName;
@@ -150,6 +155,7 @@ namespace SabreTools.Data.Extensions
cloneHeader.SampleMode = selfHeader.SampleMode;
cloneHeader.ScreenshotsHeight = selfHeader.ScreenshotsHeight;
cloneHeader.ScreenshotsWidth = selfHeader.ScreenshotsWidth;
+ cloneHeader.Search = selfHeader.Search;
cloneHeader.System = selfHeader.System;
cloneHeader.Timestamp = selfHeader.Timestamp;
cloneHeader.Type = selfHeader.Type;
diff --git a/SabreTools.Data.Models/Metadata/Header.cs b/SabreTools.Data.Models/Metadata/Header.cs
index 72fae142..4933d094 100644
--- a/SabreTools.Data.Models/Metadata/Header.cs
+++ b/SabreTools.Data.Models/Metadata/Header.cs
@@ -15,6 +15,9 @@ namespace SabreTools.Data.Models.Metadata
public string? Build { get; set; }
+ /// TODO: This needs an internal model OR mapping to fields
+ public OfflineList.CanOpen? CanOpen { get; set; }
+
public string? Category { get; set; }
public string? Comment { get; set; }
@@ -52,6 +55,14 @@ namespace SabreTools.Data.Models.Metadata
public string? Id { get; set; }
+ /// TODO: This needs an internal model OR mapping to fields
+ public OfflineList.Images? Images { get; set; }
+
+ public string? ImFolder { get; set; }
+
+ /// TODO: This needs an internal model OR mapping to fields
+ public OfflineList.Infos? Infos { get; set; }
+
/// (yes|no) "no"
public bool? LockBiosMode { get; set; }
@@ -65,6 +76,9 @@ namespace SabreTools.Data.Models.Metadata
public string? Name { get; set; }
+ /// TODO: This needs an internal model OR mapping to fields
+ public OfflineList.NewDat? NewDat { get; set; }
+
public string? Notes { get; set; }
public string? Plugin { get; set; }
@@ -85,6 +99,9 @@ namespace SabreTools.Data.Models.Metadata
public string? ScreenshotsWidth { get; set; }
+ /// TODO: This needs an internal model OR mapping to fields
+ public OfflineList.Search? Search { get; set; }
+
public string? System { get; set; }
public string? Timestamp { get; set; }
@@ -99,37 +116,9 @@ namespace SabreTools.Data.Models.Metadata
#region Keys
- /// TODO: This needs an internal model OR mapping to fields
- /// CanOpen
- [NoFilter]
- public const string CanOpenKey = "canOpen";
-
- /// TODO: This needs an internal model OR mapping to fields
- /// Images
- [NoFilter]
- public const string ImagesKey = "images";
-
- /// string
- public const string ImFolderKey = "imFolder";
-
- /// TODO: This needs an internal model OR mapping to fields
- /// Infos
- [NoFilter]
- public const string InfosKey = "infos";
-
- /// TODO: This needs an internal model OR mapping to fields
- /// NewDat
- [NoFilter]
- public const string NewDatKey = "newDat";
-
/// string
public const string SchemaLocationKey = "schemaLocation";
- /// TODO: This needs an internal model OR mapping to fields
- /// Search
- [NoFilter]
- public const string SearchKey = "search";
-
#endregion
}
}
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
index 32af8243..89a7172e 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
@@ -202,7 +202,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Author = "author",
BiosMode = Data.Models.Metadata.MergingFlag.Merged,
Build = "build",
- [Data.Models.Metadata.Header.CanOpenKey] = canOpen,
+ CanOpen = canOpen,
Category = "category",
Comment = "comment",
Date = "date",
@@ -219,15 +219,15 @@ namespace SabreTools.Metadata.DatFiles.Test
HeaderSkipper = "header",
Homepage = "homepage",
Id = "id",
- [Data.Models.Metadata.Header.ImagesKey] = images,
- [Data.Models.Metadata.Header.ImFolderKey] = "imfolder",
- [Data.Models.Metadata.Header.InfosKey] = infos,
+ Images = images,
+ ImFolder = "imfolder",
+ Infos = infos,
LockBiosMode = true,
LockRomMode = true,
LockSampleMode = true,
MameConfig = "mameconfig",
Name = "name",
- [Data.Models.Metadata.Header.NewDatKey] = newDat,
+ NewDat = newDat,
Notes = "notes",
Plugin = "plugin",
RefName = "refname",
@@ -238,7 +238,7 @@ namespace SabreTools.Metadata.DatFiles.Test
[Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation",
ScreenshotsHeight = "screenshotsheight",
ScreenshotsWidth = "screenshotsWidth",
- [Data.Models.Metadata.Header.SearchKey] = search,
+ Search = search,
System = "system",
Timestamp = "timestamp",
Type = "type",
@@ -1010,7 +1010,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("author", datHeader.Author);
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.BiosMode);
Assert.Equal("build", datHeader.Build);
- Assert.Equal("ext", datHeader.ReadString(Data.Models.Metadata.Header.CanOpenKey));
+ Assert.NotNull(datHeader.CanOpen);
Assert.Equal("category", datHeader.Category);
Assert.Equal("comment", datHeader.Comment);
Assert.Equal("date", datHeader.Date);
@@ -1026,15 +1026,15 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("header", datHeader.HeaderSkipper);
Assert.Equal("homepage", datHeader.Homepage);
Assert.Equal("id", datHeader.Id);
- Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.ImagesKey));
- Assert.Equal("imfolder", datHeader.ReadString(Data.Models.Metadata.Header.ImFolderKey));
- Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.InfosKey));
+ Assert.NotNull(datHeader.Images);
+ Assert.Equal("imfolder", datHeader.ImFolder);
+ Assert.NotNull(datHeader.Infos);
Assert.True(datHeader.LockBiosMode);
Assert.True(datHeader.LockRomMode);
Assert.True(datHeader.LockSampleMode);
Assert.Equal("mameconfig", datHeader.MameConfig);
Assert.Equal("name", datHeader.Name);
- Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.NewDatKey));
+ Assert.NotNull(datHeader.NewDat);
Assert.Equal("notes", datHeader.Notes);
Assert.Equal("plugin", datHeader.Plugin);
Assert.Equal("refname", datHeader.RefName);
@@ -1045,7 +1045,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey));
Assert.Equal("screenshotsheight", datHeader.ScreenshotsHeight);
Assert.Equal("screenshotsWidth", datHeader.ScreenshotsWidth);
- Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.SearchKey));
+ Assert.NotNull(datHeader.Search);
Assert.Equal("system", datHeader.System);
Assert.Equal("timestamp", datHeader.Timestamp);
Assert.Equal("type", datHeader.Type);
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
index a8c224ef..7c643816 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
@@ -92,17 +92,14 @@ namespace SabreTools.Metadata.DatFiles.Test
private static DatHeader CreateHeader()
{
- DatHeader item = new DatHeader(CreateMetadataHeader());
-
- item.Write(Data.Models.Metadata.Header.CanOpenKey, ["ext"]);
- item.Write(Data.Models.Metadata.Header.ImagesKey,
- new Data.Models.OfflineList.Images() { Height = "height" });
- item.Write(Data.Models.Metadata.Header.InfosKey,
- new Data.Models.OfflineList.Infos() { Comment = new Data.Models.OfflineList.Comment() });
- item.Write(Data.Models.Metadata.Header.NewDatKey,
- new Data.Models.OfflineList.NewDat() { DatUrl = new Data.Models.OfflineList.DatUrl() });
- item.Write(Data.Models.Metadata.Header.SearchKey,
- new Data.Models.OfflineList.Search() { To = [] });
+ DatHeader item = new DatHeader(CreateMetadataHeader())
+ {
+ CanOpen = new Data.Models.OfflineList.CanOpen { Extension = ["ext"] },
+ Images = new Data.Models.OfflineList.Images() { Height = "height" },
+ Infos = new Data.Models.OfflineList.Infos() { Comment = new Data.Models.OfflineList.Comment() },
+ NewDat = new Data.Models.OfflineList.NewDat() { DatUrl = new Data.Models.OfflineList.DatUrl() },
+ Search = new Data.Models.OfflineList.Search() { To = [] },
+ };
return item;
}
@@ -354,7 +351,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("author", header.Author);
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.BiosMode);
Assert.Equal("build", header.Build);
- Assert.NotNull(header.Read(Data.Models.Metadata.Header.CanOpenKey));
+ Assert.NotNull(header.CanOpen);
Assert.Equal("category", header.Category);
Assert.Equal("comment", header.Comment);
Assert.Equal("date", header.Date);
@@ -370,15 +367,15 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("header", header.HeaderSkipper);
Assert.Equal("homepage", header.Homepage);
Assert.Equal("id", header.Id);
- Assert.NotNull(header.Read(Data.Models.Metadata.Header.ImagesKey));
- Assert.Equal("imfolder", header.ReadString(Data.Models.Metadata.Header.ImFolderKey));
- Assert.NotNull(header.Read(Data.Models.Metadata.Header.InfosKey));
+ Assert.NotNull(header.Images);
+ Assert.Equal("imfolder", header.ImFolder);
+ Assert.NotNull(header.Infos);
Assert.True(header.LockBiosMode);
Assert.True(header.LockRomMode);
Assert.True(header.LockSampleMode);
Assert.Equal("mameconfig", header.MameConfig);
Assert.Equal("name", header.Name);
- Assert.NotNull(header.Read(Data.Models.Metadata.Header.NewDatKey));
+ Assert.NotNull(header.NewDat);
Assert.Equal("notes", header.Notes);
Assert.Equal("plugin", header.Plugin);
Assert.Equal("refname", header.RefName);
@@ -389,7 +386,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey));
Assert.Equal("screenshotsheight", header.ScreenshotsHeight);
Assert.Equal("screenshotsWidth", header.ScreenshotsWidth);
- Assert.NotNull(header.Read(Data.Models.Metadata.Header.SearchKey));
+ Assert.NotNull(header.Search);
Assert.Equal("system", header.System);
Assert.Equal("timestamp", header.Timestamp);
Assert.Equal("type", header.Type);
diff --git a/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs b/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs
index 18f669f0..e74cc055 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatHeaderTests.cs
@@ -4,114 +4,6 @@ namespace SabreTools.Metadata.DatFiles.Test
{
public class DatHeaderTests
{
- #region CanOpenSpecified
-
- [Fact]
- public void CanOpenSpecified_Missing()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.CanOpenKey, null);
- Assert.False(header.CanOpenSpecified);
- }
-
- [Fact]
- public void CanOpenSpecified_Empty()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.CanOpenKey, []);
- Assert.False(header.CanOpenSpecified);
- }
-
- [Fact]
- public void CanOpenSpecified_Exists()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.CanOpenKey, ["value"]);
- Assert.True(header.CanOpenSpecified);
- }
-
- #endregion
-
- #region ImagesSpecified
-
- [Fact]
- public void ImagesSpecified_Missing()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.ImagesKey, null);
- Assert.False(header.ImagesSpecified);
- }
-
- [Fact]
- public void ImagesSpecified_Exists()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.ImagesKey, new());
- Assert.True(header.ImagesSpecified);
- }
-
- #endregion
-
- #region InfosSpecified
-
- [Fact]
- public void InfosSpecified_Missing()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.InfosKey, null);
- Assert.False(header.InfosSpecified);
- }
-
- [Fact]
- public void InfosSpecified_Exists()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.InfosKey, new());
- Assert.True(header.InfosSpecified);
- }
-
- #endregion
-
- #region NewDatSpecified
-
- [Fact]
- public void NewDatSpecified_Missing()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.NewDatKey, null);
- Assert.False(header.NewDatSpecified);
- }
-
- [Fact]
- public void NewDatSpecified_Exists()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.NewDatKey, new());
- Assert.True(header.NewDatSpecified);
- }
-
- #endregion
-
- #region SearchSpecified
-
- [Fact]
- public void SearchSpecified_Missing()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.SearchKey, null);
- Assert.False(header.SearchSpecified);
- }
-
- [Fact]
- public void SearchSpecified_Exists()
- {
- DatHeader header = new DatHeader();
- header.Write(Data.Models.Metadata.Header.SearchKey, new());
- Assert.True(header.SearchSpecified);
- }
-
- #endregion
-
#region Clone
[Fact]
diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs
index 9bf8ef40..0a67da5c 100644
--- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs
+++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs
@@ -69,25 +69,25 @@ namespace SabreTools.Metadata.DatFiles
Header.Name = header.Name;
// Convert subheader values
- var canOpen = item.Read(Data.Models.Metadata.Header.CanOpenKey);
+ var canOpen = item.CanOpen;
if (canOpen?.Extension is not null)
- Header.Write(Data.Models.Metadata.Header.CanOpenKey, canOpen.Extension);
+ Header.CanOpen = canOpen;
- var images = item.Read(Data.Models.Metadata.Header.ImagesKey);
+ var images = item.Images;
if (images is not null)
- Header.Write(Data.Models.Metadata.Header.ImagesKey, images);
+ Header.Images = images;
- var infos = item.Read(Data.Models.Metadata.Header.InfosKey);
+ var infos = item.Infos;
if (infos is not null)
- Header.Write(Data.Models.Metadata.Header.InfosKey, infos);
+ Header.Infos = infos;
- var newDat = item.Read(Data.Models.Metadata.Header.NewDatKey);
+ var newDat = item.NewDat;
if (newDat is not null)
- Header.Write(Data.Models.Metadata.Header.NewDatKey, newDat);
+ Header.NewDat = newDat;
- var search = item.Read(Data.Models.Metadata.Header.SearchKey);
+ var search = item.Search;
if (search is not null)
- Header.Write(Data.Models.Metadata.Header.SearchKey, search);
+ Header.Search = search;
// Selectively set all possible fields -- TODO: Figure out how to make this less manual
if (Header.Author is null)
@@ -126,8 +126,8 @@ namespace SabreTools.Metadata.DatFiles
Header.Homepage = header.Homepage;
if (Header.Id is null)
Header.Id = header.Id;
- if (Header.ReadString(Data.Models.Metadata.Header.ImFolderKey) is null)
- Header.Write(Data.Models.Metadata.Header.ImFolderKey, header.ReadString(Data.Models.Metadata.Header.ImFolderKey));
+ if (Header.ImFolder is null)
+ Header.ImFolder = header.ImFolder;
if (Header.LockBiosMode is null)
Header.LockBiosMode = header.LockBiosMode;
if (Header.LockRomMode is null)
diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs
index 4f58cafb..1dffbde6 100644
--- a/SabreTools.Metadata.DatFiles/DatHeader.cs
+++ b/SabreTools.Metadata.DatFiles/DatHeader.cs
@@ -35,16 +35,15 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.Build = value;
}
- [JsonIgnore]
- public bool CanOpenSpecified
+ public Data.Models.OfflineList.CanOpen? CanOpen
{
- get
- {
- var canOpen = ReadStringArray(Data.Models.Metadata.Header.CanOpenKey);
- return canOpen is not null && canOpen.Length > 0;
- }
+ get => _internal.CanOpen;
+ set => _internal.CanOpen = value;
}
+ [JsonIgnore]
+ public bool CanOpenSpecified => CanOpen is not null;
+
public string? Category
{
get => _internal.Category;
@@ -151,24 +150,30 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.Id = value;
}
- [JsonIgnore]
- public bool ImagesSpecified
+ public Data.Models.OfflineList.Images? Images
{
- get
- {
- return Read(Data.Models.Metadata.Header.ImagesKey) is not null;
- }
+ get => _internal.Images;
+ set => _internal.Images = value;
}
[JsonIgnore]
- public bool InfosSpecified
+ public bool ImagesSpecified => Images is not null;
+
+ public string? ImFolder
{
- get
- {
- return Read(Data.Models.Metadata.Header.InfosKey) is not null;
- }
+ get => _internal.ImFolder;
+ set => _internal.ImFolder = value;
}
+ public Data.Models.OfflineList.Infos? Infos
+ {
+ get => _internal.Infos;
+ set => _internal.Infos = value;
+ }
+
+ [JsonIgnore]
+ public bool InfosSpecified => Infos is not null;
+
public bool? LockBiosMode
{
get => _internal.LockBiosMode;
@@ -199,15 +204,15 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.Name = value;
}
- [JsonIgnore]
- public bool NewDatSpecified
+ public Data.Models.OfflineList.NewDat? NewDat
{
- get
- {
- return Read(Data.Models.Metadata.Header.NewDatKey) is not null;
- }
+ get => _internal.NewDat;
+ set => _internal.NewDat = value;
}
+ [JsonIgnore]
+ public bool NewDatSpecified => NewDat is not null;
+
public string? Notes
{
get => _internal.Notes;
@@ -262,15 +267,15 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.ScreenshotsWidth = value;
}
- [JsonIgnore]
- public bool SearchSpecified
+ public Data.Models.OfflineList.Search? Search
{
- get
- {
- return Read(Data.Models.Metadata.Header.SearchKey) is not null;
- }
+ get => _internal.Search;
+ set => _internal.Search = value;
}
+ [JsonIgnore]
+ public bool SearchSpecified => Search is not null;
+
public string? System
{
get => _internal.System;
@@ -346,15 +351,15 @@ namespace SabreTools.Metadata.DatFiles
// Convert subheader values
if (CanOpenSpecified)
- header[Data.Models.Metadata.Header.CanOpenKey] = new Data.Models.OfflineList.CanOpen { Extension = ReadStringArray(Data.Models.Metadata.Header.CanOpenKey) };
+ header.CanOpen = CanOpen;
if (ImagesSpecified)
- header[Data.Models.Metadata.Header.ImagesKey] = Read(Data.Models.Metadata.Header.ImagesKey);
+ header.Images = Images;
if (InfosSpecified)
- header[Data.Models.Metadata.Header.InfosKey] = Read(Data.Models.Metadata.Header.InfosKey);
+ header.Infos = Infos;
if (NewDatSpecified)
- header[Data.Models.Metadata.Header.NewDatKey] = Read(Data.Models.Metadata.Header.NewDatKey);
+ header.NewDat = NewDat;
if (SearchSpecified)
- header[Data.Models.Metadata.Header.SearchKey] = Read(Data.Models.Metadata.Header.SearchKey);
+ header.Search = Search;
return header;
}
diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs
index 1d58d463..138c9798 100644
--- a/SabreTools.Metadata.Filter/FilterObject.cs
+++ b/SabreTools.Metadata.Filter/FilterObject.cs
@@ -777,6 +777,7 @@ namespace SabreTools.Metadata.Filter
case Header item when fieldName == "build":
checkValue = item.Build;
return true;
+ // Header.CanOpen is intentionally skipped
case Header item when fieldName == "category":
checkValue = item.Category;
return true;
@@ -823,6 +824,11 @@ namespace SabreTools.Metadata.Filter
case Header item when fieldName == "id":
checkValue = item.Id;
return true;
+ // Header.Images is intentionally skipped
+ case Header item when fieldName == "imfolder":
+ checkValue = item.ImFolder;
+ return true;
+ // Header.Infos is intentionally skipped
case Header item when fieldName == "lockbiosmode":
checkValue = item.LockBiosMode.FromYesNo();
return true;
@@ -838,6 +844,7 @@ namespace SabreTools.Metadata.Filter
case Header item when fieldName == "name":
checkValue = item.Name;
return true;
+ // Header.NewDat is intentionally skipped
case Header item when fieldName == "notes":
checkValue = item.Notes;
return true;
@@ -865,6 +872,7 @@ namespace SabreTools.Metadata.Filter
case Header item when fieldName == "screenshotswidth":
checkValue = item.ScreenshotsWidth;
return true;
+ // Header.Search is intentionally skipped
case Header item when fieldName == "system":
checkValue = item.System;
return true;
diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs
index 5dff9136..15b784a8 100644
--- a/SabreTools.Metadata/DictionaryBaseExtensions.cs
+++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs
@@ -180,6 +180,7 @@ namespace SabreTools.Metadata
return false;
if (selfHeader.Build != otherHeader.Build)
return false;
+ // Header.CanOpen is intentionally skipped
if (selfHeader.Category != otherHeader.Category)
return false;
if (selfHeader.Comment != otherHeader.Comment)
@@ -206,10 +207,15 @@ namespace SabreTools.Metadata
return false;
if (selfHeader.HeaderSkipper != otherHeader.HeaderSkipper)
return false;
+ // Header.HeaderRow is intentionally skipped
if (selfHeader.Homepage != otherHeader.Homepage)
return false;
if (selfHeader.Id != otherHeader.Id)
return false;
+ // Header.Images is intentionally skipped
+ if (selfHeader.ImFolder != otherHeader.ImFolder)
+ return false;
+ // Header.Infos is intentionally skipped
if (selfHeader.LockBiosMode != otherHeader.LockBiosMode)
return false;
if (selfHeader.LockRomMode != otherHeader.LockRomMode)
@@ -220,6 +226,7 @@ namespace SabreTools.Metadata
return false;
if (selfHeader.Name != otherHeader.Name)
return false;
+ // Header.NewDat is intentionally skipped
if (selfHeader.Notes != otherHeader.Notes)
return false;
if (selfHeader.Plugin != otherHeader.Plugin)
@@ -238,6 +245,7 @@ namespace SabreTools.Metadata
return false;
if (selfHeader.ScreenshotsWidth != otherHeader.ScreenshotsWidth)
return false;
+ // Header.Search is intentionally skipped
if (selfHeader.System != otherHeader.System)
return false;
if (selfHeader.Timestamp != otherHeader.Timestamp)
diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs
index d8b8fe37..f0348147 100644
--- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs
@@ -37,40 +37,35 @@ namespace SabreTools.Serialization.CrossModel
};
if (item.Name is not null
- || item.ContainsKey(Data.Models.Metadata.Header.ImFolderKey)
+ || item.ImFolder is not null
|| item.DatVersion is not null
|| item.System is not null
|| item.ScreenshotsHeight is not null
|| item.ScreenshotsWidth is not null
- || item.ContainsKey(Data.Models.Metadata.Header.InfosKey)
- || item.ContainsKey(Data.Models.Metadata.Header.CanOpenKey)
- || item.ContainsKey(Data.Models.Metadata.Header.NewDatKey)
- || item.ContainsKey(Data.Models.Metadata.Header.SearchKey)
+ || item.Infos is not null
+ || item.CanOpen is not null
+ || item.NewDat is not null
+ || item.Search is not null
|| item.RomTitle is not null)
{
dat.Configuration = new Configuration
{
DatName = item.Name,
- ImFolder = item.ReadString(Data.Models.Metadata.Header.ImFolderKey),
+ ImFolder = item.ImFolder,
DatVersion = item.DatVersion,
System = item.System,
ScreenshotsWidth = item.ScreenshotsHeight,
ScreenshotsHeight = item.ScreenshotsWidth,
- Infos = item.Read(Data.Models.Metadata.Header.InfosKey),
- CanOpen = item.Read(Data.Models.Metadata.Header.CanOpenKey),
- NewDat = item.Read(Data.Models.Metadata.Header.NewDatKey),
- Search = item.Read(Data.Models.Metadata.Header.SearchKey),
+ Infos = item.Infos,
+ CanOpen = item.CanOpen,
+ NewDat = item.NewDat,
+ Search = item.Search,
RomTitle = item.RomTitle,
};
}
- if (item.ContainsKey(Data.Models.Metadata.Header.ImagesKey))
- {
- dat.GUI = new GUI
- {
- Images = item.Read(Data.Models.Metadata.Header.ImagesKey),
- };
- }
+ if (item.Images is not null)
+ dat.GUI = new GUI { Images = item.Images };
return dat;
}
diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs
index 7a8dcf6c..a6e91ce9 100644
--- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs
@@ -38,22 +38,20 @@ namespace SabreTools.Serialization.CrossModel
if (item.Configuration is not null)
{
header.Name = item.Configuration.DatName;
- header[Data.Models.Metadata.Header.ImFolderKey] = item.Configuration.ImFolder;
+ header.ImFolder = item.Configuration.ImFolder;
header.DatVersion = item.Configuration.DatVersion;
header.System = item.Configuration.System;
header.ScreenshotsHeight = item.Configuration.ScreenshotsWidth;
header.ScreenshotsWidth = item.Configuration.ScreenshotsHeight;
- header[Data.Models.Metadata.Header.InfosKey] = item.Configuration.Infos;
- header[Data.Models.Metadata.Header.CanOpenKey] = item.Configuration.CanOpen;
- header[Data.Models.Metadata.Header.NewDatKey] = item.Configuration.NewDat;
- header[Data.Models.Metadata.Header.SearchKey] = item.Configuration.Search;
+ header.Infos = item.Configuration.Infos;
+ header.CanOpen = item.Configuration.CanOpen;
+ header.NewDat = item.Configuration.NewDat;
+ header.Search = item.Configuration.Search;
header.RomTitle = item.Configuration.RomTitle;
}
if (item.GUI is not null)
- {
- header[Data.Models.Metadata.Header.ImagesKey] = item.GUI.Images;
- }
+ header.Images = item.GUI.Images;
return header;
}