mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-22 14:55:11 +00:00
Lazily make OfflineList-specific header items properties
This commit is contained in:
@@ -69,25 +69,25 @@ namespace SabreTools.Metadata.DatFiles
|
||||
Header.Name = header.Name;
|
||||
|
||||
// Convert subheader values
|
||||
var canOpen = item.Read<Data.Models.OfflineList.CanOpen>(Data.Models.Metadata.Header.CanOpenKey);
|
||||
var canOpen = item.CanOpen;
|
||||
if (canOpen?.Extension is not null)
|
||||
Header.Write<string[]?>(Data.Models.Metadata.Header.CanOpenKey, canOpen.Extension);
|
||||
Header.CanOpen = canOpen;
|
||||
|
||||
var images = item.Read<Data.Models.OfflineList.Images>(Data.Models.Metadata.Header.ImagesKey);
|
||||
var images = item.Images;
|
||||
if (images is not null)
|
||||
Header.Write<Data.Models.OfflineList.Images?>(Data.Models.Metadata.Header.ImagesKey, images);
|
||||
Header.Images = images;
|
||||
|
||||
var infos = item.Read<Data.Models.OfflineList.Infos>(Data.Models.Metadata.Header.InfosKey);
|
||||
var infos = item.Infos;
|
||||
if (infos is not null)
|
||||
Header.Write<Data.Models.OfflineList.Infos?>(Data.Models.Metadata.Header.InfosKey, infos);
|
||||
Header.Infos = infos;
|
||||
|
||||
var newDat = item.Read<Data.Models.OfflineList.NewDat>(Data.Models.Metadata.Header.NewDatKey);
|
||||
var newDat = item.NewDat;
|
||||
if (newDat is not null)
|
||||
Header.Write<Data.Models.OfflineList.NewDat?>(Data.Models.Metadata.Header.NewDatKey, newDat);
|
||||
Header.NewDat = newDat;
|
||||
|
||||
var search = item.Read<Data.Models.OfflineList.Search>(Data.Models.Metadata.Header.SearchKey);
|
||||
var search = item.Search;
|
||||
if (search is not null)
|
||||
Header.Write<Data.Models.OfflineList.Search?>(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<string?>(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)
|
||||
|
||||
@@ -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.OfflineList.Images?>(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.OfflineList.Infos?>(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.OfflineList.NewDat?>(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.OfflineList.Search?>(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.OfflineList.Images>(Data.Models.Metadata.Header.ImagesKey);
|
||||
header.Images = Images;
|
||||
if (InfosSpecified)
|
||||
header[Data.Models.Metadata.Header.InfosKey] = Read<Data.Models.OfflineList.Infos>(Data.Models.Metadata.Header.InfosKey);
|
||||
header.Infos = Infos;
|
||||
if (NewDatSpecified)
|
||||
header[Data.Models.Metadata.Header.NewDatKey] = Read<Data.Models.OfflineList.NewDat>(Data.Models.Metadata.Header.NewDatKey);
|
||||
header.NewDat = NewDat;
|
||||
if (SearchSpecified)
|
||||
header[Data.Models.Metadata.Header.SearchKey] = Read<Data.Models.OfflineList.Search>(Data.Models.Metadata.Header.SearchKey);
|
||||
header.Search = Search;
|
||||
|
||||
return header;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user