diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs index 980fc1cb..468b55f6 100644 --- a/SabreTools.Data.Extensions/MetadataExtensions.cs +++ b/SabreTools.Data.Extensions/MetadataExtensions.cs @@ -146,6 +146,8 @@ namespace SabreTools.Data.Extensions cloneHeader.RomTitle = selfHeader.RomTitle; cloneHeader.RootDir = selfHeader.RootDir; cloneHeader.SampleMode = selfHeader.SampleMode; + cloneHeader.ScreenshotsHeight = selfHeader.ScreenshotsHeight; + cloneHeader.ScreenshotsWidth = selfHeader.ScreenshotsWidth; 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 31803fe3..c0b9c140 100644 --- a/SabreTools.Data.Models/Metadata/Header.cs +++ b/SabreTools.Data.Models/Metadata/Header.cs @@ -77,6 +77,10 @@ namespace SabreTools.Data.Models.Metadata /// (none|split|merged|nonmerged|fullmerged|device|full) "split" public MergingFlag SampleMode { get; set; } + public string? ScreenshotsHeight { get; set; } + + public string? ScreenshotsWidth { get; set; } + public string? System { get; set; } public string? Timestamp { get; set; } @@ -120,12 +124,6 @@ namespace SabreTools.Data.Models.Metadata /// string public const string SchemaLocationKey = "schemaLocation"; - /// string - public const string ScreenshotsHeightKey = "screenshotsHeight"; - - /// string - public const string ScreenshotsWidthKey = "screenshotsWidth"; - /// TODO: This needs an internal model OR mapping to fields /// Search [NoFilter] diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs index 78ba90bc..7596bf62 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs @@ -235,8 +235,8 @@ namespace SabreTools.Metadata.DatFiles.Test RootDir = "rootdir", SampleMode = Data.Models.Metadata.MergingFlag.Merged, [Data.Models.Metadata.Header.SchemaLocationKey] = "schemalocation", - [Data.Models.Metadata.Header.ScreenshotsHeightKey] = "screenshotsheight", - [Data.Models.Metadata.Header.ScreenshotsWidthKey] = "screenshotsWidth", + ScreenshotsHeight = "screenshotsheight", + ScreenshotsWidth = "screenshotsWidth", [Data.Models.Metadata.Header.SearchKey] = search, System = "system", Timestamp = "timestamp", @@ -1042,8 +1042,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("rootdir", datHeader.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.SampleMode); Assert.Equal("schemalocation", datHeader.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); - Assert.Equal("screenshotsheight", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); - Assert.Equal("screenshotsWidth", datHeader.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); + Assert.Equal("screenshotsheight", datHeader.ScreenshotsHeight); + Assert.Equal("screenshotsWidth", datHeader.ScreenshotsWidth); Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.SearchKey)); Assert.Equal("system", datHeader.System); Assert.Equal("timestamp", datHeader.Timestamp); diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs index 5b9af6fe..4835d4c8 100644 --- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs +++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs @@ -387,8 +387,8 @@ namespace SabreTools.Metadata.DatFiles.Test Assert.Equal("rootdir", header.RootDir); Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.SampleMode); Assert.Equal("schemalocation", header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); - Assert.Equal("screenshotsheight", header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); - Assert.Equal("screenshotsWidth", header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); + Assert.Equal("screenshotsheight", header.ScreenshotsHeight); + Assert.Equal("screenshotsWidth", header.ScreenshotsWidth); Assert.NotNull(header.Read(Data.Models.Metadata.Header.SearchKey)); Assert.Equal("system", header.System); Assert.Equal("timestamp", header.Timestamp); diff --git a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs index a9781137..d47b7517 100644 --- a/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs +++ b/SabreTools.Metadata.DatFiles/DatFile.FromMetadata.cs @@ -154,10 +154,10 @@ namespace SabreTools.Metadata.DatFiles Header.SampleMode = header.SampleMode; if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null) Header.Write(Data.Models.Metadata.Header.SchemaLocationKey, header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey)); - if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey) is null) - Header.Write(Data.Models.Metadata.Header.ScreenshotsHeightKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey)); - if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey) is null) - Header.Write(Data.Models.Metadata.Header.ScreenshotsWidthKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey)); + if (Header.ScreenshotsHeight is null) + Header.ScreenshotsHeight = header.ScreenshotsHeight; + if (Header.ScreenshotsWidth is null) + Header.ScreenshotsWidth = header.ScreenshotsWidth; if (Header.System is null) Header.System = header.System; if (Header.Timestamp is null) diff --git a/SabreTools.Metadata.DatFiles/DatHeader.cs b/SabreTools.Metadata.DatFiles/DatHeader.cs index 3d601c9f..0d5c4704 100644 --- a/SabreTools.Metadata.DatFiles/DatHeader.cs +++ b/SabreTools.Metadata.DatFiles/DatHeader.cs @@ -238,6 +238,18 @@ namespace SabreTools.Metadata.DatFiles set => _internal.SampleMode = value; } + public string? ScreenshotsHeight + { + get => _internal.ScreenshotsHeight; + set => _internal.ScreenshotsHeight = value; + } + + public string? ScreenshotsWidth + { + get => _internal.ScreenshotsWidth; + set => _internal.ScreenshotsWidth = value; + } + [JsonIgnore] public bool SearchSpecified { diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs index 0bd83177..26511e95 100644 --- a/SabreTools.Metadata.Filter/FilterObject.cs +++ b/SabreTools.Metadata.Filter/FilterObject.cs @@ -855,6 +855,12 @@ namespace SabreTools.Metadata.Filter case Header item when fieldName == "samplemode": checkValue = item.SampleMode.AsStringValue(); return true; + case Header item when fieldName == "screenshotsheight": + checkValue = item.ScreenshotsHeight; + return true; + case Header item when fieldName == "screenshotswidth": + checkValue = item.ScreenshotsWidth; + return true; case Header item when fieldName == "system": checkValue = item.System; return true; diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs index 6c9941a2..ccf77fa3 100644 --- a/SabreTools.Metadata/DictionaryBaseExtensions.cs +++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs @@ -232,6 +232,10 @@ namespace SabreTools.Metadata return false; if (selfHeader.SampleMode != otherHeader.SampleMode) return false; + if (selfHeader.ScreenshotsHeight != otherHeader.ScreenshotsHeight) + return false; + if (selfHeader.ScreenshotsWidth != otherHeader.ScreenshotsWidth) + return false; 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 02efd5fe..d8b8fe37 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Deserializer.cs @@ -38,15 +38,15 @@ namespace SabreTools.Serialization.CrossModel if (item.Name is not null || item.ContainsKey(Data.Models.Metadata.Header.ImFolderKey) - || item.DatVersion != null - || item.System != null - || item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsWidthKey) - || item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsHeightKey) + || 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.RomTitle != null) + || item.RomTitle is not null) { dat.Configuration = new Configuration { @@ -54,8 +54,8 @@ namespace SabreTools.Serialization.CrossModel ImFolder = item.ReadString(Data.Models.Metadata.Header.ImFolderKey), DatVersion = item.DatVersion, System = item.System, - ScreenshotsWidth = item.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey), - ScreenshotsHeight = item.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey), + 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), diff --git a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs index ac4e12da..7a8dcf6c 100644 --- a/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs +++ b/SabreTools.Serialization.CrossModel/OfflineList.Serializer.cs @@ -41,8 +41,8 @@ namespace SabreTools.Serialization.CrossModel header[Data.Models.Metadata.Header.ImFolderKey] = item.Configuration.ImFolder; header.DatVersion = item.Configuration.DatVersion; header.System = item.Configuration.System; - header[Data.Models.Metadata.Header.ScreenshotsWidthKey] = item.Configuration.ScreenshotsWidth; - header[Data.Models.Metadata.Header.ScreenshotsHeightKey] = item.Configuration.ScreenshotsHeight; + 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;