Migrate most header string keys to properties

This commit is contained in:
Matt Nadareski
2026-04-02 22:01:42 -04:00
parent 0df6378713
commit 49d3d9c096
31 changed files with 482 additions and 292 deletions

View File

@@ -258,18 +258,40 @@ namespace SabreTools.Data.Extensions
}
else if (self is Header selfHeader && clone is Header cloneHeader)
{
cloneHeader.Author = selfHeader.Author;
cloneHeader.BiosMode = selfHeader.BiosMode;
cloneHeader.Build = selfHeader.Build;
cloneHeader.Category = selfHeader.Category;
cloneHeader.Comment = selfHeader.Comment;
cloneHeader.Date = selfHeader.Date;
cloneHeader.DatVersion = selfHeader.DatVersion;
cloneHeader.Debug = selfHeader.Debug;
cloneHeader.Description = selfHeader.Description;
cloneHeader.Email = selfHeader.Email;
cloneHeader.EmulatorVersion = selfHeader.EmulatorVersion;
cloneHeader.ForceMerging = selfHeader.ForceMerging;
cloneHeader.ForceNodump = selfHeader.ForceNodump;
cloneHeader.ForcePacking = selfHeader.ForcePacking;
cloneHeader.ForceZipping = selfHeader.ForceZipping;
cloneHeader.Homepage = selfHeader.Homepage;
cloneHeader.Id = selfHeader.Id;
cloneHeader.LockBiosMode = selfHeader.LockBiosMode;
cloneHeader.LockRomMode = selfHeader.LockRomMode;
cloneHeader.LockSampleMode = selfHeader.LockSampleMode;
cloneHeader.MameConfig = selfHeader.MameConfig;
cloneHeader.Name = selfHeader.Name;
cloneHeader.Notes = selfHeader.Notes;
cloneHeader.Plugin = selfHeader.Plugin;
cloneHeader.RefName = selfHeader.RefName;
cloneHeader.RomMode = selfHeader.RomMode;
cloneHeader.RomTitle = selfHeader.RomTitle;
cloneHeader.RootDir = selfHeader.RootDir;
cloneHeader.SampleMode = selfHeader.SampleMode;
cloneHeader.System = selfHeader.System;
cloneHeader.Timestamp = selfHeader.Timestamp;
cloneHeader.Type = selfHeader.Type;
cloneHeader.Url = selfHeader.Url;
cloneHeader.Version = selfHeader.Version;
}
else if (self is Info selfInfo && clone is Info cloneInfo)
{

View File

@@ -8,14 +8,30 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
public string? Author { get; set; }
/// <remarks>(none|split|merged|nonmerged|fullmerged|device|full) "split"</remarks>
public MergingFlag BiosMode { get; set; }
public string? Build { get; set; }
public string? Category { get; set; }
public string? Comment { get; set; }
public string? Date { get; set; }
public string? DatVersion { get; set; }
/// <remarks>(yes|no) "no"</remarks>
public bool? Debug { get; set; }
public string? Description { get; set; }
public string? Email { get; set; }
public string? EmulatorVersion { get; set; }
/// <remarks>(none|split|merged|nonmerged|fullmerged|device|full) "split"</remarks>
public MergingFlag ForceMerging { get; set; }
@@ -28,6 +44,10 @@ namespace SabreTools.Data.Models.Metadata
/// <remarks>(yes|no) "yes"</remarks>
public bool? ForceZipping { get; set; }
public string? Homepage { get; set; }
public string? Id { get; set; }
/// <remarks>(yes|no) "no"</remarks>
public bool? LockBiosMode { get; set; }
@@ -37,56 +57,48 @@ namespace SabreTools.Data.Models.Metadata
/// <remarks>(yes|no) "no"</remarks>
public bool? LockSampleMode { get; set; }
public string? MameConfig { get; set; }
public string? Name { get; set; }
public string? Notes { get; set; }
public string? Plugin { get; set; }
public string? RefName { get; set; }
/// <remarks>(none|split|merged|nonmerged|fullmerged|device|full) "split"</remarks>
public MergingFlag RomMode { get; set; }
public string? RomTitle { get; set; }
public string? RootDir { get; set; }
/// <remarks>(none|split|merged|nonmerged|fullmerged|device|full) "split"</remarks>
public MergingFlag SampleMode { get; set; }
public string? System { get; set; }
public string? Timestamp { get; set; }
public string? Type { get; set; }
public string? Url { get; set; }
public string? Version { get; set; }
#endregion
#region Keys
/// <remarks>string</remarks>
public const string AuthorKey = "author";
/// <remarks>string</remarks>
public const string BuildKey = "build";
/// TODO: This needs an internal model OR mapping to fields
/// <remarks>CanOpen</remarks>
[NoFilter]
public const string CanOpenKey = "canOpen";
/// <remarks>string</remarks>
public const string CategoryKey = "category";
/// <remarks>string</remarks>
public const string CommentKey = "comment";
/// <remarks>string</remarks>
public const string DateKey = "date";
/// <remarks>string</remarks>
public const string DatVersionKey = "datversion";
/// <remarks>string</remarks>
public const string EmailKey = "email";
/// <remarks>string</remarks>
public const string EmulatorVersionKey = "emulatorversion";
/// <remarks>string, string[]</remarks>
public const string HeaderKey = "header";
/// <remarks>string</remarks>
public const string HomepageKey = "homepage";
/// <remarks>string</remarks>
public const string IdKey = "id";
/// TODO: This needs an internal model OR mapping to fields
/// <remarks>Search</remarks>
[NoFilter]
@@ -100,29 +112,11 @@ namespace SabreTools.Data.Models.Metadata
[NoFilter]
public const string InfosKey = "infos";
/// <remarks>string</remarks>
public const string MameConfigKey = "mameconfig";
/// TODO: This needs an internal model OR mapping to fields
/// <remarks>NewDat</remarks>
[NoFilter]
public const string NewDatKey = "newDat";
/// <remarks>string</remarks>
public const string NotesKey = "notes";
/// <remarks>string</remarks>
public const string PluginKey = "plugin";
/// <remarks>string</remarks>
public const string RefNameKey = "refname";
/// <remarks>string</remarks>
public const string RomTitleKey = "romTitle";
/// <remarks>string</remarks>
public const string RootDirKey = "rootdir";
/// <remarks>string</remarks>
public const string SchemaLocationKey = "schemaLocation";
@@ -137,21 +131,6 @@ namespace SabreTools.Data.Models.Metadata
[NoFilter]
public const string SearchKey = "search";
/// <remarks>string</remarks>
public const string SystemKey = "system";
/// <remarks>string</remarks>
public const string TimestampKey = "timestamp";
/// <remarks>string</remarks>
public const string TypeKey = "type";
/// <remarks>string</remarks>
public const string UrlKey = "url";
/// <remarks>string</remarks>
public const string VersionKey = "version";
#endregion
}
}

View File

@@ -201,50 +201,50 @@ namespace SabreTools.Metadata.DatFiles.Test
return new Data.Models.Metadata.Header
{
[Data.Models.Metadata.Header.AuthorKey] = "author",
Author = "author",
BiosMode = Data.Models.Metadata.MergingFlag.Merged,
[Data.Models.Metadata.Header.BuildKey] = "build",
Build = "build",
[Data.Models.Metadata.Header.CanOpenKey] = canOpen,
[Data.Models.Metadata.Header.CategoryKey] = "category",
[Data.Models.Metadata.Header.CommentKey] = "comment",
[Data.Models.Metadata.Header.DateKey] = "date",
[Data.Models.Metadata.Header.DatVersionKey] = "datversion",
Category = "category",
Comment = "comment",
Date = "date",
DatVersion = "datversion",
Debug = true,
Description = "description",
[Data.Models.Metadata.Header.EmailKey] = "email",
[Data.Models.Metadata.Header.EmulatorVersionKey] = "emulatorversion",
Email = "email",
EmulatorVersion = "emulatorversion",
ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
ForceNodump = Data.Models.Metadata.NodumpFlag.Required,
ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
ForceZipping = true,
[Data.Models.Metadata.Header.HeaderKey] = "header",
[Data.Models.Metadata.Header.HomepageKey] = "homepage",
[Data.Models.Metadata.Header.IdKey] = "id",
Homepage = "homepage",
Id = "id",
[Data.Models.Metadata.Header.ImagesKey] = images,
[Data.Models.Metadata.Header.ImFolderKey] = "imfolder",
[Data.Models.Metadata.Header.InfosKey] = infos,
LockBiosMode = true,
LockRomMode = true,
LockSampleMode = true,
[Data.Models.Metadata.Header.MameConfigKey] = "mameconfig",
MameConfig = "mameconfig",
Name = "name",
[Data.Models.Metadata.Header.NewDatKey] = newDat,
[Data.Models.Metadata.Header.NotesKey] = "notes",
[Data.Models.Metadata.Header.PluginKey] = "plugin",
[Data.Models.Metadata.Header.RefNameKey] = "refname",
Notes = "notes",
Plugin = "plugin",
RefName = "refname",
RomMode = Data.Models.Metadata.MergingFlag.Merged,
[Data.Models.Metadata.Header.RomTitleKey] = "romtitle",
[Data.Models.Metadata.Header.RootDirKey] = "rootdir",
RomTitle = "romtitle",
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",
[Data.Models.Metadata.Header.SearchKey] = search,
[Data.Models.Metadata.Header.SystemKey] = "system",
[Data.Models.Metadata.Header.TimestampKey] = "timestamp",
[Data.Models.Metadata.Header.TypeKey] = "type",
[Data.Models.Metadata.Header.UrlKey] = "url",
[Data.Models.Metadata.Header.VersionKey] = "version",
System = "system",
Timestamp = "timestamp",
Type = "type",
Url = "url",
Version = "version",
};
}
@@ -1037,50 +1037,50 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateHeader(DatHeader datHeader)
{
Assert.Equal("author", datHeader.ReadString(Data.Models.Metadata.Header.AuthorKey));
Assert.Equal("author", datHeader.Author);
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.BiosMode);
Assert.Equal("build", datHeader.ReadString(Data.Models.Metadata.Header.BuildKey));
Assert.Equal("build", datHeader.Build);
Assert.Equal("ext", datHeader.ReadString(Data.Models.Metadata.Header.CanOpenKey));
Assert.Equal("category", datHeader.ReadString(Data.Models.Metadata.Header.CategoryKey));
Assert.Equal("comment", datHeader.ReadString(Data.Models.Metadata.Header.CommentKey));
Assert.Equal("date", datHeader.ReadString(Data.Models.Metadata.Header.DateKey));
Assert.Equal("datversion", datHeader.ReadString(Data.Models.Metadata.Header.DatVersionKey));
Assert.Equal("category", datHeader.Category);
Assert.Equal("comment", datHeader.Comment);
Assert.Equal("date", datHeader.Date);
Assert.Equal("datversion", datHeader.DatVersion);
Assert.True(datHeader.Debug);
Assert.Equal("description", datHeader.Description);
Assert.Equal("email", datHeader.ReadString(Data.Models.Metadata.Header.EmailKey));
Assert.Equal("emulatorversion", datHeader.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey));
Assert.Equal("email", datHeader.Email);
Assert.Equal("emulatorversion", datHeader.EmulatorVersion);
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.ForceMerging);
Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, datHeader.ForceNodump);
Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, datHeader.ForcePacking);
Assert.True(datHeader.ForceZipping);
Assert.Equal("header", datHeader.ReadString(Data.Models.Metadata.Header.HeaderKey));
Assert.Equal("homepage", datHeader.ReadString(Data.Models.Metadata.Header.HomepageKey));
Assert.Equal("id", datHeader.ReadString(Data.Models.Metadata.Header.IdKey));
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.True(datHeader.LockBiosMode);
Assert.True(datHeader.LockRomMode);
Assert.True(datHeader.LockSampleMode);
Assert.Equal("mameconfig", datHeader.ReadString(Data.Models.Metadata.Header.MameConfigKey));
Assert.Equal("mameconfig", datHeader.MameConfig);
Assert.Equal("name", datHeader.Name);
Assert.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.NewDatKey));
Assert.Equal("notes", datHeader.ReadString(Data.Models.Metadata.Header.NotesKey));
Assert.Equal("plugin", datHeader.ReadString(Data.Models.Metadata.Header.PluginKey));
Assert.Equal("refname", datHeader.ReadString(Data.Models.Metadata.Header.RefNameKey));
Assert.Equal("notes", datHeader.Notes);
Assert.Equal("plugin", datHeader.Plugin);
Assert.Equal("refname", datHeader.RefName);
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.RomMode);
Assert.Equal("romtitle", datHeader.ReadString(Data.Models.Metadata.Header.RomTitleKey));
Assert.Equal("rootdir", datHeader.ReadString(Data.Models.Metadata.Header.RootDirKey));
Assert.Equal("romtitle", datHeader.RomTitle);
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.NotNull(datHeader.ReadString(Data.Models.Metadata.Header.SearchKey));
Assert.Equal("system", datHeader.ReadString(Data.Models.Metadata.Header.SystemKey));
Assert.Equal("timestamp", datHeader.ReadString(Data.Models.Metadata.Header.TimestampKey));
Assert.Equal("type", datHeader.ReadString(Data.Models.Metadata.Header.TypeKey));
Assert.Equal("url", datHeader.ReadString(Data.Models.Metadata.Header.UrlKey));
Assert.Equal("version", datHeader.ReadString(Data.Models.Metadata.Header.VersionKey));
Assert.Equal("system", datHeader.System);
Assert.Equal("timestamp", datHeader.Timestamp);
Assert.Equal("type", datHeader.Type);
Assert.Equal("url", datHeader.Url);
Assert.Equal("version", datHeader.Version);
}
#pragma warning disable IDE0051

View File

@@ -373,50 +373,50 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataHeader(Data.Models.Metadata.Header? header)
{
Assert.NotNull(header);
Assert.Equal("author", header.ReadString(Data.Models.Metadata.Header.AuthorKey));
Assert.Equal("author", header.Author);
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.BiosMode);
Assert.Equal("build", header.ReadString(Data.Models.Metadata.Header.BuildKey));
Assert.Equal("build", header.Build);
Assert.NotNull(header.Read<Data.Models.OfflineList.CanOpen>(Data.Models.Metadata.Header.CanOpenKey));
Assert.Equal("category", header.ReadString(Data.Models.Metadata.Header.CategoryKey));
Assert.Equal("comment", header.ReadString(Data.Models.Metadata.Header.CommentKey));
Assert.Equal("date", header.ReadString(Data.Models.Metadata.Header.DateKey));
Assert.Equal("datversion", header.ReadString(Data.Models.Metadata.Header.DatVersionKey));
Assert.Equal("category", header.Category);
Assert.Equal("comment", header.Comment);
Assert.Equal("date", header.Date);
Assert.Equal("datversion", header.DatVersion);
Assert.True(header.Debug);
Assert.Equal("description", header.Description);
Assert.Equal("email", header.ReadString(Data.Models.Metadata.Header.EmailKey));
Assert.Equal("emulatorversion", header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey));
Assert.Equal("email", header.Email);
Assert.Equal("emulatorversion", header.EmulatorVersion);
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.ForceMerging);
Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, header.ForceNodump);
Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, header.ForcePacking);
Assert.True(header.ForceZipping);
Assert.Equal("header", header.ReadString(Data.Models.Metadata.Header.HeaderKey));
Assert.Equal("homepage", header.ReadString(Data.Models.Metadata.Header.HomepageKey));
Assert.Equal("id", header.ReadString(Data.Models.Metadata.Header.IdKey));
Assert.Equal("homepage", header.Homepage);
Assert.Equal("id", header.Id);
Assert.NotNull(header.Read<Data.Models.OfflineList.Images>(Data.Models.Metadata.Header.ImagesKey));
Assert.Equal("imfolder", header.ReadString(Data.Models.Metadata.Header.ImFolderKey));
Assert.NotNull(header.Read<Data.Models.OfflineList.Infos>(Data.Models.Metadata.Header.InfosKey));
Assert.True(header.LockBiosMode);
Assert.True(header.LockRomMode);
Assert.True(header.LockSampleMode);
Assert.Equal("mameconfig", header.ReadString(Data.Models.Metadata.Header.MameConfigKey));
Assert.Equal("mameconfig", header.MameConfig);
Assert.Equal("name", header.Name);
Assert.NotNull(header.Read<Data.Models.OfflineList.NewDat>(Data.Models.Metadata.Header.NewDatKey));
Assert.Equal("notes", header.ReadString(Data.Models.Metadata.Header.NotesKey));
Assert.Equal("plugin", header.ReadString(Data.Models.Metadata.Header.PluginKey));
Assert.Equal("refname", header.ReadString(Data.Models.Metadata.Header.RefNameKey));
Assert.Equal("notes", header.Notes);
Assert.Equal("plugin", header.Plugin);
Assert.Equal("refname", header.RefName);
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, header.RomMode);
Assert.Equal("romtitle", header.ReadString(Data.Models.Metadata.Header.RomTitleKey));
Assert.Equal("rootdir", header.ReadString(Data.Models.Metadata.Header.RootDirKey));
Assert.Equal("romtitle", header.RomTitle);
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.NotNull(header.Read<Data.Models.OfflineList.Search>(Data.Models.Metadata.Header.SearchKey));
Assert.Equal("system", header.ReadString(Data.Models.Metadata.Header.SystemKey));
Assert.Equal("timestamp", header.ReadString(Data.Models.Metadata.Header.TimestampKey));
Assert.Equal("type", header.ReadString(Data.Models.Metadata.Header.TypeKey));
Assert.Equal("url", header.ReadString(Data.Models.Metadata.Header.UrlKey));
Assert.Equal("version", header.ReadString(Data.Models.Metadata.Header.VersionKey));
Assert.Equal("system", header.System);
Assert.Equal("timestamp", header.Timestamp);
Assert.Equal("type", header.Type);
Assert.Equal("url", header.Url);
Assert.Equal("version", header.Version);
}
private static void ValidateMetadataMachine(Data.Models.Metadata.Machine machine)

View File

@@ -115,7 +115,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatFile datFile = new Logiqx(datFile: null, useGame: false);
datFile.Header.Name = string.Empty;
datFile.Header.Description = string.Empty;
datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01");
datFile.Header.Date = "1980-01-01";
string path = Path.Combine("Fake", "Path", "Filename");
datFile.FillHeaderFromPath(path, false);
@@ -130,7 +130,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatFile datFile = new Logiqx(datFile: null, useGame: false);
datFile.Header.Name = string.Empty;
datFile.Header.Description = string.Empty;
datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01");
datFile.Header.Date = "1980-01-01";
string path = Path.Combine("Fake", "Path", "Filename");
datFile.FillHeaderFromPath(path, true);
@@ -145,7 +145,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatFile datFile = new Logiqx(datFile: null, useGame: false);
datFile.Header.Name = string.Empty;
datFile.Header.Description = "Description";
datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01");
datFile.Header.Date = "1980-01-01";
string path = Path.Combine("Fake", "Path", "Filename");
datFile.FillHeaderFromPath(path, false);
@@ -160,7 +160,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatFile datFile = new Logiqx(datFile: null, useGame: false);
datFile.Header.Name = string.Empty;
datFile.Header.Description = "Description";
datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01");
datFile.Header.Date = "1980-01-01";
string path = Path.Combine("Fake", "Path", "Filename");
datFile.FillHeaderFromPath(path, true);
@@ -175,7 +175,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatFile datFile = new Logiqx(datFile: null, useGame: false);
datFile.Header.Name = "Name";
datFile.Header.Description = string.Empty;
datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01");
datFile.Header.Date = "1980-01-01";
string path = Path.Combine("Fake", "Path", "Filename");
datFile.FillHeaderFromPath(path, false);
@@ -190,7 +190,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatFile datFile = new Logiqx(datFile: null, useGame: false);
datFile.Header.Name = "Name";
datFile.Header.Description = string.Empty;
datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01");
datFile.Header.Date = "1980-01-01";
string path = Path.Combine("Fake", "Path", "Filename");
datFile.FillHeaderFromPath(path, true);
@@ -205,7 +205,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatFile datFile = new Logiqx(datFile: null, useGame: false);
datFile.Header.Name = "Name";
datFile.Header.Description = "Description";
datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01");
datFile.Header.Date = "1980-01-01";
string path = Path.Combine("Fake", "Path", "Filename");
datFile.FillHeaderFromPath(path, false);
@@ -220,7 +220,7 @@ namespace SabreTools.Metadata.DatFiles.Test
DatFile datFile = new Logiqx(datFile: null, useGame: false);
datFile.Header.Name = "Name ";
datFile.Header.Description = "Description ";
datFile.Header.Write(Data.Models.Metadata.Header.DateKey, "1980-01-01");
datFile.Header.Date = "1980-01-01";
string path = Path.Combine("Fake", "Path", "Filename");
datFile.FillHeaderFromPath(path, true);

View File

@@ -90,28 +90,28 @@ namespace SabreTools.Metadata.DatFiles
Header.Write<Data.Models.OfflineList.Search?>(Data.Models.Metadata.Header.SearchKey, search);
// Selectively set all possible fields -- TODO: Figure out how to make this less manual
if (Header.ReadString(Data.Models.Metadata.Header.AuthorKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.AuthorKey, header.ReadString(Data.Models.Metadata.Header.AuthorKey));
if (Header.Author is null)
Header.Author = header.Author;
if (Header.BiosMode == MergingFlag.None)
Header.BiosMode = header.BiosMode;
if (Header.ReadString(Data.Models.Metadata.Header.BuildKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.BuildKey, header.ReadString(Data.Models.Metadata.Header.BuildKey));
if (Header.ReadString(Data.Models.Metadata.Header.CategoryKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.CategoryKey, header.ReadString(Data.Models.Metadata.Header.CategoryKey));
if (Header.ReadString(Data.Models.Metadata.Header.CommentKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.CommentKey, header.ReadString(Data.Models.Metadata.Header.CommentKey));
if (Header.ReadString(Data.Models.Metadata.Header.DateKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.DateKey, header.ReadString(Data.Models.Metadata.Header.DateKey));
if (Header.ReadString(Data.Models.Metadata.Header.DatVersionKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.DatVersionKey, header.ReadString(Data.Models.Metadata.Header.DatVersionKey));
if (Header.Build is null)
Header.Build = header.Build;
if (Header.Category is null)
Header.Category = header.Category;
if (Header.Comment is null)
Header.Comment = header.Comment;
if (Header.Date is null)
Header.Date = header.Date;
if (Header.DatVersion is null)
Header.DatVersion = header.DatVersion;
if (Header.Debug is null)
Header.Debug = header.Debug;
if (Header.Description is null)
Header.Description = header.Description;
if (Header.ReadString(Data.Models.Metadata.Header.EmailKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.EmailKey, header.ReadString(Data.Models.Metadata.Header.EmailKey));
if (Header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.EmulatorVersionKey, header.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey));
if (Header.Email is null)
Header.Email = header.Email;
if (Header.EmulatorVersion is null)
Header.EmulatorVersion = header.EmulatorVersion;
if (Header.ForceMerging == MergingFlag.None)
Header.ForceMerging = header.ForceMerging;
if (Header.ForceNodump == NodumpFlag.None)
@@ -122,10 +122,10 @@ namespace SabreTools.Metadata.DatFiles
Header.ForceZipping = header.ForceZipping;
if (Header.ReadString(Data.Models.Metadata.Header.HeaderKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.HeaderKey, header.ReadString(Data.Models.Metadata.Header.HeaderKey));
if (Header.ReadString(Data.Models.Metadata.Header.HomepageKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.HomepageKey, header.ReadString(Data.Models.Metadata.Header.HomepageKey));
if (Header.ReadString(Data.Models.Metadata.Header.IdKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.IdKey, header.ReadString(Data.Models.Metadata.Header.IdKey));
if (Header.Homepage is null)
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<string?>(Data.Models.Metadata.Header.ImFolderKey, header.ReadString(Data.Models.Metadata.Header.ImFolderKey));
if (Header.LockBiosMode is null)
@@ -134,22 +134,22 @@ namespace SabreTools.Metadata.DatFiles
Header.LockRomMode = header.LockRomMode;
if (Header.LockSampleMode is null)
Header.LockSampleMode = header.LockSampleMode;
if (Header.ReadString(Data.Models.Metadata.Header.MameConfigKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.MameConfigKey, header.ReadString(Data.Models.Metadata.Header.MameConfigKey));
if (Header.MameConfig is null)
Header.MameConfig = header.MameConfig;
if (Header.Name is null)
Header.Name = header.Name;
if (Header.ReadString(Data.Models.Metadata.Header.NotesKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.NotesKey, header.ReadString(Data.Models.Metadata.Header.NotesKey));
if (Header.ReadString(Data.Models.Metadata.Header.PluginKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.PluginKey, header.ReadString(Data.Models.Metadata.Header.PluginKey));
if (Header.ReadString(Data.Models.Metadata.Header.RefNameKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.RefNameKey, header.ReadString(Data.Models.Metadata.Header.RefNameKey));
if (Header.Notes is null)
Header.Notes = header.Notes;
if (Header.Plugin is null)
Header.Plugin = header.Plugin;
if (Header.RefName is null)
Header.RefName = header.RefName;
if (Header.RomMode == MergingFlag.None)
Header.RomMode = header.RomMode;
if (Header.ReadString(Data.Models.Metadata.Header.RomTitleKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.RomTitleKey, header.ReadString(Data.Models.Metadata.Header.RomTitleKey));
if (Header.ReadString(Data.Models.Metadata.Header.RootDirKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.RootDirKey, header.ReadString(Data.Models.Metadata.Header.RootDirKey));
if (Header.RomTitle is null)
Header.RomTitle = header.RomTitle;
if (Header.RootDir is null)
Header.RootDir = header.RootDir;
if (Header.SampleMode == MergingFlag.None)
Header.SampleMode = header.SampleMode;
if (Header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey) is null)
@@ -158,22 +158,22 @@ namespace SabreTools.Metadata.DatFiles
Header.Write<string?>(Data.Models.Metadata.Header.ScreenshotsHeightKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey));
if (Header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.ScreenshotsWidthKey, header.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey));
if (Header.ReadString(Data.Models.Metadata.Header.SystemKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.SystemKey, header.ReadString(Data.Models.Metadata.Header.SystemKey));
if (Header.ReadString(Data.Models.Metadata.Header.TimestampKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.TimestampKey, header.ReadString(Data.Models.Metadata.Header.TimestampKey));
if (Header.ReadString(Data.Models.Metadata.Header.TypeKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.TypeKey, header.ReadString(Data.Models.Metadata.Header.TypeKey));
if (Header.ReadString(Data.Models.Metadata.Header.UrlKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.UrlKey, header.ReadString(Data.Models.Metadata.Header.UrlKey));
if (Header.ReadString(Data.Models.Metadata.Header.VersionKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.VersionKey, header.ReadString(Data.Models.Metadata.Header.VersionKey));
if (Header.System is null)
Header.System = header.System;
if (Header.Timestamp is null)
Header.Timestamp = header.Timestamp;
if (Header.Type is null)
Header.Type = header.Type;
if (Header.Url is null)
Header.Url = header.Url;
if (Header.Version is null)
Header.Version = header.Version;
// Handle implied SuperDAT
if (Header.Name?.Contains(" - SuperDAT") == true && keep)
{
if (Header.ReadString(Data.Models.Metadata.Header.TypeKey) is null)
Header.Write<string?>(Data.Models.Metadata.Header.TypeKey, "SuperDAT");
if (Header.Type is null)
Header.Type = "SuperDAT";
}
}

View File

@@ -97,7 +97,7 @@ namespace SabreTools.Metadata.DatFiles
// Get the header strings
string? name = Header.Name;
string? description = Header.Description;
string? date = Header.ReadString(Data.Models.Metadata.Header.DateKey);
string? date = Header.Date;
// If the description is defined but not the name, set the name from the description
if (string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(description))

View File

@@ -31,12 +31,24 @@ namespace SabreTools.Metadata.DatFiles
#region Fields
public string? Author
{
get => _internal.Author;
set => _internal.Author = value;
}
public MergingFlag BiosMode
{
get => _internal.BiosMode;
set => _internal.BiosMode = value;
}
public string? Build
{
get => _internal.Build;
set => _internal.Build = value;
}
[JsonIgnore]
public bool CanOpenSpecified
{
@@ -47,6 +59,30 @@ namespace SabreTools.Metadata.DatFiles
}
}
public string? Category
{
get => _internal.Category;
set => _internal.Category = value;
}
public string? Comment
{
get => _internal.Comment;
set => _internal.Comment = value;
}
public string? Date
{
get => _internal.Date;
set => _internal.Date = value;
}
public string? DatVersion
{
get => _internal.DatVersion;
set => _internal.DatVersion = value;
}
public bool? Debug
{
get => _internal.Debug;
@@ -59,6 +95,18 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.Description = value;
}
public string? Email
{
get => _internal.Email;
set => _internal.Email = value;
}
public string? EmulatorVersion
{
get => _internal.EmulatorVersion;
set => _internal.EmulatorVersion = value;
}
public MergingFlag ForceMerging
{
get => _internal.ForceMerging;
@@ -83,6 +131,18 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.ForceZipping = value;
}
public string? Homepage
{
get => _internal.Homepage;
set => _internal.Homepage = value;
}
public string? Id
{
get => _internal.Id;
set => _internal.Id = value;
}
[JsonIgnore]
public bool ImagesSpecified
{
@@ -119,6 +179,12 @@ namespace SabreTools.Metadata.DatFiles
set => _internal.LockSampleMode = value;
}
public string? MameConfig
{
get => _internal.MameConfig;
set => _internal.MameConfig = value;
}
public string? Name
{
get => _internal.Name;
@@ -134,12 +200,42 @@ namespace SabreTools.Metadata.DatFiles
}
}
public string? Notes
{
get => _internal.Notes;
set => _internal.Notes = value;
}
public string? Plugin
{
get => _internal.Plugin;
set => _internal.Plugin = value;
}
public string? RefName
{
get => _internal.RefName;
set => _internal.RefName = value;
}
public MergingFlag RomMode
{
get => _internal.RomMode;
set => _internal.RomMode = value;
}
public string? RomTitle
{
get => _internal.RomTitle;
set => _internal.RomTitle = value;
}
public string? RootDir
{
get => _internal.RootDir;
set => _internal.RootDir = value;
}
public MergingFlag SampleMode
{
get => _internal.SampleMode;
@@ -155,6 +251,36 @@ namespace SabreTools.Metadata.DatFiles
}
}
public string? System
{
get => _internal.System;
set => _internal.System = value;
}
public string? Timestamp
{
get => _internal.Timestamp;
set => _internal.Timestamp = value;
}
public string? Type
{
get => _internal.Type;
set => _internal.Type = value;
}
public string? Url
{
get => _internal.Url;
set => _internal.Url = value;
}
public string? Version
{
get => _internal.Version;
set => _internal.Version = value;
}
#endregion
#region Constructors

View File

@@ -384,7 +384,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
// TODO: Enable No-Intro doctype writing instead of Logiqx
// Only write the doctype if we don't have No-Intro data
bool success;
if (string.IsNullOrEmpty(Header.ReadString(Data.Models.Metadata.Header.IdKey)))
if (string.IsNullOrEmpty(Header.Id))
success = new Serialization.Writers.Logiqx().SerializeFile(datafile, outfile);
else
success = new Serialization.Writers.Logiqx().SerializeFile(datafile, outfile);

View File

@@ -33,7 +33,7 @@ namespace SabreTools.Metadata.Filter.Test
[Fact]
public void Header_Null_False()
{
var header = new Header { [Header.AuthorKey] = null };
var header = new Header { Author = null };
bool actual = _filterRunner.Run(header);
Assert.False(actual);
}
@@ -41,7 +41,7 @@ namespace SabreTools.Metadata.Filter.Test
[Fact]
public void Header_Empty_False()
{
var header = new Header { [Header.AuthorKey] = "" };
var header = new Header { Author = "" };
bool actual = _filterRunner.Run(header);
Assert.False(actual);
}
@@ -49,7 +49,7 @@ namespace SabreTools.Metadata.Filter.Test
[Fact]
public void Header_Incorrect_False()
{
var header = new Header { [Header.AuthorKey] = "NO_MATCH" };
var header = new Header { Author = "NO_MATCH" };
bool actual = _filterRunner.Run(header);
Assert.False(actual);
}
@@ -57,7 +57,7 @@ namespace SabreTools.Metadata.Filter.Test
[Fact]
public void Header_Correct_True()
{
var header = new Header { [Header.AuthorKey] = "auth" };
var header = new Header { Author = "auth" };
bool actual = _filterRunner.Run(header);
Assert.True(actual);
}

View File

@@ -527,15 +527,39 @@ namespace SabreTools.Metadata.Filter
checkValue = item.Value;
return true;
case Header item when fieldName == "author":
checkValue = item.Author;
return true;
case Header item when fieldName == "biosmode":
checkValue = item.BiosMode.AsStringValue();
return true;
case Header item when fieldName == "build":
checkValue = item.Build;
return true;
case Header item when fieldName == "category":
checkValue = item.Category;
return true;
case Header item when fieldName == "comment":
checkValue = item.Comment;
return true;
case Header item when fieldName == "date":
checkValue = item.Date;
return true;
case Header item when fieldName == "datversion":
checkValue = item.DatVersion;
return true;
case Header item when fieldName == "debug":
checkValue = item.Debug.FromYesNo();
return true;
case Header item when fieldName == "description":
checkValue = item.Description;
return true;
case Header item when fieldName == "email":
checkValue = item.Email;
return true;
case Header item when fieldName == "emulatorversion":
checkValue = item.EmulatorVersion;
return true;
case Header item when fieldName == "forcemerging":
checkValue = item.ForceMerging.AsStringValue();
return true;
@@ -548,6 +572,12 @@ namespace SabreTools.Metadata.Filter
case Header item when fieldName == "forcezipping":
checkValue = item.ForceZipping.FromYesNo();
return true;
case Header item when fieldName == "homepage":
checkValue = item.Homepage;
return true;
case Header item when fieldName == "id":
checkValue = item.Id;
return true;
case Header item when fieldName == "lockbiosmode":
checkValue = item.LockBiosMode.FromYesNo();
return true;
@@ -557,12 +587,45 @@ namespace SabreTools.Metadata.Filter
case Header item when fieldName == "locksamplemode":
checkValue = item.LockSampleMode.FromYesNo();
return true;
case Header item when fieldName == "mameconfig":
checkValue = item.MameConfig;
return true;
case Header item when fieldName == "notes":
checkValue = item.Notes;
return true;
case Header item when fieldName == "plugin":
checkValue = item.Plugin;
return true;
case Header item when fieldName == "refname":
checkValue = item.RefName;
return true;
case Header item when fieldName == "rommode":
checkValue = item.RomMode.AsStringValue();
return true;
case Header item when fieldName == "romtitle":
checkValue = item.RomTitle;
return true;
case Header item when fieldName == "rootdir":
checkValue = item.RootDir;
return true;
case Header item when fieldName == "samplemode":
checkValue = item.SampleMode.AsStringValue();
return true;
case Header item when fieldName == "system":
checkValue = item.System;
return true;
case Header item when fieldName == "timestamp":
checkValue = item.Timestamp;
return true;
case Header item when fieldName == "type":
checkValue = item.Timestamp;
return true;
case Header item when fieldName == "url":
checkValue = item.Url;
return true;
case Header item when fieldName == "version":
checkValue = item.Version;
return true;
case Info item when fieldName == "value":
checkValue = item.Value;

View File

@@ -45,16 +45,16 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
Description = item.Description,
RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey),
Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey),
Version = item.ReadString(Data.Models.Metadata.Header.VersionKey),
Date = item.ReadString(Data.Models.Metadata.Header.DateKey),
Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey),
Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey),
Url = item.ReadString(Data.Models.Metadata.Header.UrlKey),
Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey),
RootDir = item.RootDir,
Category = item.Category,
Version = item.Version,
Date = item.Date,
Author = item.Author,
Homepage = item.Homepage,
Url = item.Url,
Comment = item.Comment,
Header = item.ReadString(Data.Models.Metadata.Header.HeaderKey),
Type = item.ReadString(Data.Models.Metadata.Header.TypeKey),
Type = item.Type,
ForceMerging = item.ForceMerging,
ForceZipping = item.ForceZipping,
ForcePacking = item.ForcePacking,

View File

@@ -37,16 +37,16 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
Description = item.Description,
[Data.Models.Metadata.Header.RootDirKey] = item.RootDir,
[Data.Models.Metadata.Header.CategoryKey] = item.Category,
[Data.Models.Metadata.Header.VersionKey] = item.Version,
[Data.Models.Metadata.Header.DateKey] = item.Date,
[Data.Models.Metadata.Header.AuthorKey] = item.Author,
[Data.Models.Metadata.Header.HomepageKey] = item.Homepage,
[Data.Models.Metadata.Header.UrlKey] = item.Url,
[Data.Models.Metadata.Header.CommentKey] = item.Comment,
RootDir = item.RootDir,
Category = item.Category,
Version = item.Version,
Date = item.Date,
Author = item.Author,
Homepage = item.Homepage,
Url = item.Url,
Comment = item.Comment,
[Data.Models.Metadata.Header.HeaderKey] = item.Header,
[Data.Models.Metadata.Header.TypeKey] = item.Type,
Type = item.Type,
ForceMerging = item.ForceMerging,
ForceZipping = item.ForceZipping,
ForcePacking = item.ForcePacking,

View File

@@ -33,11 +33,11 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
Description = item.Description,
Version = item.ReadString(Data.Models.Metadata.Header.VersionKey),
Date = item.ReadString(Data.Models.Metadata.Header.DateKey),
Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey),
Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey),
Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey),
Version = item.Version,
Date = item.Date,
Author = item.Author,
Homepage = item.Homepage,
Comment = item.Comment,
};
return dosCenter;
}

View File

@@ -34,11 +34,11 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
Description = item.Description,
[Data.Models.Metadata.Header.VersionKey] = item.Version,
[Data.Models.Metadata.Header.DateKey] = item.Date,
[Data.Models.Metadata.Header.AuthorKey] = item.Author,
[Data.Models.Metadata.Header.HomepageKey] = item.Homepage,
[Data.Models.Metadata.Header.CommentKey] = item.Comment,
Version = item.Version,
Date = item.Date,
Author = item.Author,
Homepage = item.Homepage,
Comment = item.Comment,
};
return header;
}

View File

@@ -28,9 +28,9 @@ namespace SabreTools.Serialization.CrossModel
{
var mame = new Mame
{
Build = item.ReadString(Data.Models.Metadata.Header.BuildKey),
Build = item.Build,
Debug = item.Debug,
MameConfig = item.ReadString(Data.Models.Metadata.Header.MameConfigKey),
MameConfig = item.MameConfig,
};
return mame;

View File

@@ -32,9 +32,9 @@ namespace SabreTools.Serialization.CrossModel
{
var header = new Data.Models.Metadata.Header
{
[Data.Models.Metadata.Header.BuildKey] = item.Build,
Build = item.Build,
Debug = item.Debug,
[Data.Models.Metadata.Header.MameConfigKey] = item.MameConfig,
MameConfig = item.MameConfig,
};
return header;
}

View File

@@ -21,7 +21,7 @@ namespace SabreTools.Serialization.CrossModel
var header = obj.Read<Data.Models.Metadata.Header>(Data.Models.Metadata.MetadataFile.HeaderKey);
if (header is not null)
{
datafile.Build = header.ReadString(Data.Models.Metadata.Header.BuildKey);
datafile.Build = header.Build;
datafile.Debug = header.Debug;
datafile.SchemaLocation = header.ReadString(Data.Models.Metadata.Header.SchemaLocationKey);
datafile.Header = ConvertHeaderFromInternalModel(header);
@@ -41,19 +41,19 @@ namespace SabreTools.Serialization.CrossModel
{
var header = new Header
{
Id = item.ReadString(Data.Models.Metadata.Header.IdKey),
Id = item.Id,
Name = item.Name,
Description = item.Description,
RootDir = item.ReadString(Data.Models.Metadata.Header.RootDirKey),
Category = item.ReadString(Data.Models.Metadata.Header.CategoryKey),
Version = item.ReadString(Data.Models.Metadata.Header.VersionKey),
Date = item.ReadString(Data.Models.Metadata.Header.DateKey),
Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey),
Email = item.ReadString(Data.Models.Metadata.Header.EmailKey),
Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey),
Url = item.ReadString(Data.Models.Metadata.Header.UrlKey),
Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey),
Type = item.ReadString(Data.Models.Metadata.Header.TypeKey),
RootDir = item.RootDir,
Category = item.Category,
Version = item.Version,
Date = item.Date,
Author = item.Author,
Email = item.Email,
Homepage = item.Homepage,
Url = item.Url,
Comment = item.Comment,
Type = item.Type,
};
string? headerVal = item.ReadString(Data.Models.Metadata.Header.HeaderKey);
@@ -77,7 +77,7 @@ namespace SabreTools.Serialization.CrossModel
header.ClrMamePro.ForcePacking = forcePacking;
}
string? plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey);
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;

View File

@@ -39,7 +39,7 @@ namespace SabreTools.Serialization.CrossModel
{
var header = item.Header is not null ? ConvertHeaderToInternalModel(item.Header) : [];
header[Data.Models.Metadata.Header.BuildKey] = item.Build;
header.Build = item.Build;
header.Debug = item.Debug;
header[Data.Models.Metadata.Header.SchemaLocationKey] = item.SchemaLocation;
@@ -53,19 +53,19 @@ namespace SabreTools.Serialization.CrossModel
{
var header = new Data.Models.Metadata.Header
{
[Data.Models.Metadata.Header.IdKey] = item.Id,
Id = item.Id,
Name = item.Name,
Description = item.Description,
[Data.Models.Metadata.Header.RootDirKey] = item.RootDir,
[Data.Models.Metadata.Header.CategoryKey] = item.Category,
[Data.Models.Metadata.Header.VersionKey] = item.Version,
[Data.Models.Metadata.Header.DateKey] = item.Date,
[Data.Models.Metadata.Header.AuthorKey] = item.Author,
[Data.Models.Metadata.Header.EmailKey] = item.Email,
[Data.Models.Metadata.Header.HomepageKey] = item.Homepage,
[Data.Models.Metadata.Header.UrlKey] = item.Url,
[Data.Models.Metadata.Header.CommentKey] = item.Comment,
[Data.Models.Metadata.Header.TypeKey] = item.Type,
RootDir = item.RootDir,
Category = item.Category,
Version = item.Version,
Date = item.Date,
Author = item.Author,
Email = item.Email,
Homepage = item.Homepage,
Url = item.Url,
Comment = item.Comment,
Type = item.Type,
};
if (item.ClrMamePro is not null)
@@ -78,7 +78,7 @@ namespace SabreTools.Serialization.CrossModel
if (item.RomCenter is not null)
{
header[Data.Models.Metadata.Header.PluginKey] = item.RomCenter.Plugin;
header.Plugin = item.RomCenter.Plugin;
header.RomMode = item.RomCenter.RomMode;
header.BiosMode = item.RomCenter.BiosMode;
header.SampleMode = item.RomCenter.SampleMode;

View File

@@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel
{
var m1 = new Data.Models.Listxml.M1
{
Version = item.ReadString(Data.Models.Metadata.Header.VersionKey),
Version = item.Version,
};
return m1;
}

View File

@@ -31,7 +31,7 @@ namespace SabreTools.Serialization.CrossModel
{
var header = new Data.Models.Metadata.Header
{
[Data.Models.Metadata.Header.VersionKey] = item.Version,
Version = item.Version,
};
return header;
}

View File

@@ -27,7 +27,7 @@ namespace SabreTools.Serialization.CrossModel
{
var m1 = new Data.Models.Listxml.Mess
{
Version = item.ReadString(Data.Models.Metadata.Header.VersionKey),
Version = item.Version,
};
return m1;
}

View File

@@ -31,7 +31,7 @@ namespace SabreTools.Serialization.CrossModel
{
var header = new Data.Models.Metadata.Header
{
[Data.Models.Metadata.Header.VersionKey] = item.Version,
Version = item.Version,
};
return header;
}

View File

@@ -38,29 +38,29 @@ namespace SabreTools.Serialization.CrossModel
if (item.Name is not null
|| item.ContainsKey(Data.Models.Metadata.Header.ImFolderKey)
|| item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey)
|| item.ContainsKey(Data.Models.Metadata.Header.SystemKey)
|| item.DatVersion != null
|| item.System != null
|| item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsWidthKey)
|| item.ContainsKey(Data.Models.Metadata.Header.ScreenshotsHeightKey)
|| 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.ContainsKey(Data.Models.Metadata.Header.RomTitleKey))
|| item.RomTitle != null)
{
dat.Configuration = new Configuration
{
DatName = item.Name,
ImFolder = item.ReadString(Data.Models.Metadata.Header.ImFolderKey),
DatVersion = item.ReadString(Data.Models.Metadata.Header.DatVersionKey),
System = item.ReadString(Data.Models.Metadata.Header.SystemKey),
DatVersion = item.DatVersion,
System = item.System,
ScreenshotsWidth = item.ReadString(Data.Models.Metadata.Header.ScreenshotsWidthKey),
ScreenshotsHeight = item.ReadString(Data.Models.Metadata.Header.ScreenshotsHeightKey),
Infos = item.Read<Infos>(Data.Models.Metadata.Header.InfosKey),
CanOpen = item.Read<CanOpen>(Data.Models.Metadata.Header.CanOpenKey),
NewDat = item.Read<NewDat>(Data.Models.Metadata.Header.NewDatKey),
Search = item.Read<Search>(Data.Models.Metadata.Header.SearchKey),
RomTitle = item.ReadString(Data.Models.Metadata.Header.RomTitleKey),
RomTitle = item.RomTitle,
};
}

View File

@@ -39,15 +39,15 @@ namespace SabreTools.Serialization.CrossModel
{
header.Name = item.Configuration.DatName;
header[Data.Models.Metadata.Header.ImFolderKey] = item.Configuration.ImFolder;
header[Data.Models.Metadata.Header.DatVersionKey] = item.Configuration.DatVersion;
header[Data.Models.Metadata.Header.SystemKey] = item.Configuration.System;
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[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[Data.Models.Metadata.Header.RomTitleKey] = item.Configuration.RomTitle;
header.RomTitle = item.Configuration.RomTitle;
}
if (item.GUI is not null)

View File

@@ -28,7 +28,7 @@ namespace SabreTools.Serialization.CrossModel
{
var softwareDb = new SoftwareDb
{
Timestamp = item.ReadString(Data.Models.Metadata.Header.TimestampKey),
Timestamp = item.Timestamp,
};
return softwareDb;
}

View File

@@ -32,7 +32,7 @@ namespace SabreTools.Serialization.CrossModel
{
var header = new Data.Models.Metadata.Header
{
[Data.Models.Metadata.Header.TimestampKey] = item.Timestamp,
Timestamp = item.Timestamp,
};
return header;
}

View File

@@ -33,46 +33,46 @@ namespace SabreTools.Serialization.CrossModel
{
var metadataFile = new MetadataFile();
if (item.ContainsKey(Data.Models.Metadata.Header.AuthorKey)
|| item.ContainsKey(Data.Models.Metadata.Header.VersionKey)
|| item.ContainsKey(Data.Models.Metadata.Header.EmailKey)
|| item.ContainsKey(Data.Models.Metadata.Header.HomepageKey)
|| item.ContainsKey(Data.Models.Metadata.Header.UrlKey)
|| item.ContainsKey(Data.Models.Metadata.Header.DateKey)
|| item.ContainsKey(Data.Models.Metadata.Header.CommentKey))
if (item.Author != null
|| item.Version != null
|| item.Email != null
|| item.Homepage != null
|| item.Url != null
|| item.Date != null
|| item.Comment != null)
{
metadataFile.Credits = new Credits
{
Author = item.ReadString(Data.Models.Metadata.Header.AuthorKey),
Version = item.ReadString(Data.Models.Metadata.Header.VersionKey),
Email = item.ReadString(Data.Models.Metadata.Header.EmailKey),
Homepage = item.ReadString(Data.Models.Metadata.Header.HomepageKey),
Url = item.ReadString(Data.Models.Metadata.Header.UrlKey),
Date = item.ReadString(Data.Models.Metadata.Header.DateKey),
Comment = item.ReadString(Data.Models.Metadata.Header.CommentKey),
Author = item.Author,
Version = item.Version,
Email = item.Email,
Homepage = item.Homepage,
Url = item.Url,
Date = item.Date,
Comment = item.Comment,
};
}
if (item.ContainsKey(Data.Models.Metadata.Header.DatVersionKey)
|| item.ContainsKey(Data.Models.Metadata.Header.PluginKey)
if (item.DatVersion != null
|| item.Plugin != null
|| item.ForceMerging != Data.Models.Metadata.MergingFlag.None)
{
metadataFile.Dat = new Dat
{
Version = item.ReadString(Data.Models.Metadata.Header.DatVersionKey),
Plugin = item.ReadString(Data.Models.Metadata.Header.PluginKey),
Version = item.DatVersion,
Plugin = item.Plugin,
Split = item.ForceMerging == Data.Models.Metadata.MergingFlag.Split ? "yes" : "no",
Merge = item.ForceMerging == Data.Models.Metadata.MergingFlag.Merged ? "yes" : "no",
};
}
if (item.ContainsKey(Data.Models.Metadata.Header.RefNameKey)
|| item.ContainsKey(Data.Models.Metadata.Header.EmulatorVersionKey))
if (item.RefName != null
|| item.EmulatorVersion != null)
{
metadataFile.Emulator = new Emulator
{
RefName = item.ReadString(Data.Models.Metadata.Header.RefNameKey),
Version = item.ReadString(Data.Models.Metadata.Header.EmulatorVersionKey),
RefName = item.RefName,
Version = item.EmulatorVersion,
};
}

View File

@@ -34,19 +34,19 @@ namespace SabreTools.Serialization.CrossModel
if (item.Credits is not null)
{
header[Data.Models.Metadata.Header.AuthorKey] = item.Credits.Author;
header[Data.Models.Metadata.Header.VersionKey] = item.Credits.Version;
header[Data.Models.Metadata.Header.EmailKey] = item.Credits.Email;
header[Data.Models.Metadata.Header.HomepageKey] = item.Credits.Homepage;
header[Data.Models.Metadata.Header.UrlKey] = item.Credits.Url;
header[Data.Models.Metadata.Header.DateKey] = item.Credits.Date;
header[Data.Models.Metadata.Header.CommentKey] = item.Credits.Comment;
header.Author = item.Credits.Author;
header.Version = item.Credits.Version;
header.Email = item.Credits.Email;
header.Homepage = item.Credits.Homepage;
header.Url = item.Credits.Url;
header.Date = item.Credits.Date;
header.Comment = item.Credits.Comment;
}
if (item.Dat is not null)
{
header[Data.Models.Metadata.Header.DatVersionKey] = item.Dat.Version;
header[Data.Models.Metadata.Header.PluginKey] = item.Dat.Plugin;
header.DatVersion = item.Dat.Version;
header.Plugin = item.Dat.Plugin;
if (item.Dat.Split == "yes" || item.Dat.Split == "1")
header.ForceMerging = Data.Models.Metadata.MergingFlag.Split;
@@ -56,8 +56,8 @@ namespace SabreTools.Serialization.CrossModel
if (item.Emulator is not null)
{
header[Data.Models.Metadata.Header.RefNameKey] = item.Emulator.RefName;
header[Data.Models.Metadata.Header.EmulatorVersionKey] = item.Emulator.Version;
header.RefName = item.Emulator.RefName;
header.EmulatorVersion = item.Emulator.Version;
}
return header;

View File

@@ -30,7 +30,7 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
Description = item.Description,
Notes = item.ReadString(Data.Models.Metadata.Header.NotesKey),
Notes = item.Notes,
};
return softwareList;
}

View File

@@ -34,7 +34,7 @@ namespace SabreTools.Serialization.CrossModel
{
Name = item.Name,
Description = item.Description,
[Data.Models.Metadata.Header.NotesKey] = item.Notes,
Notes = item.Notes,
};
return header;
}