mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-21 22:35:06 +00:00
Add dir RomVault header extension field
This commit is contained in:
@@ -21,5 +21,10 @@ namespace SabreTools.Data.Models.Logiqx
|
||||
/// <remarks>(zip|unzip) "zip"</remarks>
|
||||
[XmlAttribute("forcepacking")]
|
||||
public PackingFlag ForcePacking { get; set; }
|
||||
|
||||
/// <remarks>(noautodir|nogame)</remarks>
|
||||
/// TODO: Turn this into an enum like the other flags
|
||||
[XmlAttribute("dir")]
|
||||
public string? Dir { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,8 @@ namespace SabreTools.Data.Models.Metadata
|
||||
|
||||
public string? Description { get; set; }
|
||||
|
||||
public string? DirHandling { get; set; }
|
||||
|
||||
public string? Email { get; set; }
|
||||
|
||||
public string? EmulatorVersion { get; set; }
|
||||
@@ -137,6 +139,7 @@ namespace SabreTools.Data.Models.Metadata
|
||||
obj.DatVersion = DatVersion;
|
||||
obj.Debug = Debug;
|
||||
obj.Description = Description;
|
||||
obj.DirHandling = DirHandling;
|
||||
obj.Email = Email;
|
||||
obj.EmulatorVersion = EmulatorVersion;
|
||||
obj.FileName = FileName;
|
||||
@@ -227,6 +230,11 @@ namespace SabreTools.Data.Models.Metadata
|
||||
else if (Description is not null && !Description.Equals(other.Description, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
if ((DirHandling is null) ^ (other.DirHandling is null))
|
||||
return false;
|
||||
else if (DirHandling is not null && !DirHandling.Equals(other.DirHandling, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
if ((Email is null) ^ (other.Email is null))
|
||||
return false;
|
||||
else if (Email is not null && !Email.Equals(other.Email, StringComparison.OrdinalIgnoreCase))
|
||||
|
||||
@@ -212,6 +212,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
DatVersion = "datversion",
|
||||
Debug = true,
|
||||
Description = "description",
|
||||
DirHandling = "noautodir",
|
||||
Email = "email",
|
||||
EmulatorVersion = "emulatorversion",
|
||||
FileName = "filename",
|
||||
@@ -1006,6 +1007,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("datversion", datHeader.DatVersion);
|
||||
Assert.True(datHeader.Debug);
|
||||
Assert.Equal("description", datHeader.Description);
|
||||
Assert.Equal("noautodir", datHeader.DirHandling);
|
||||
Assert.Equal("email", datHeader.Email);
|
||||
Assert.Equal("emulatorversion", datHeader.EmulatorVersion);
|
||||
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, datHeader.ForceMerging);
|
||||
|
||||
@@ -344,6 +344,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.Equal("datversion", header.DatVersion);
|
||||
Assert.True(header.Debug);
|
||||
Assert.Equal("description", header.Description);
|
||||
Assert.Equal("noautodir", header.DirHandling);
|
||||
Assert.Equal("email", header.Email);
|
||||
Assert.Equal("emulatorversion", header.EmulatorVersion);
|
||||
Assert.Equal("filename", header.FileName);
|
||||
|
||||
@@ -104,6 +104,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
Header.Debug = header.Debug;
|
||||
if (Header.Description is null)
|
||||
Header.Description = header.Description;
|
||||
if (Header.DirHandling is null)
|
||||
Header.DirHandling = header.DirHandling;
|
||||
if (Header.Email is null)
|
||||
Header.Email = header.Email;
|
||||
if (Header.EmulatorVersion is null)
|
||||
|
||||
@@ -84,6 +84,12 @@ namespace SabreTools.Metadata.DatFiles
|
||||
set => _internal.Description = value;
|
||||
}
|
||||
|
||||
public string? DirHandling
|
||||
{
|
||||
get => _internal.DirHandling;
|
||||
set => _internal.DirHandling = value;
|
||||
}
|
||||
|
||||
public string? Email
|
||||
{
|
||||
get => _internal.Email;
|
||||
|
||||
@@ -1103,6 +1103,7 @@ namespace SabreTools.Metadata.Filter.Test
|
||||
[InlineData("header.datversion", "datversion")]
|
||||
[InlineData("header.debug", "yes")]
|
||||
[InlineData("header.description", "description")]
|
||||
[InlineData("header.dir", "noautodir")]
|
||||
[InlineData("header.email", "email")]
|
||||
[InlineData("header.emulatorversion", "emulatorversion")]
|
||||
[InlineData("header.filename", "filename")]
|
||||
@@ -1151,6 +1152,7 @@ namespace SabreTools.Metadata.Filter.Test
|
||||
DatVersion = "datversion",
|
||||
Debug = true,
|
||||
Description = "description",
|
||||
DirHandling = "noautodir",
|
||||
Email = "email",
|
||||
EmulatorVersion = "emulatorversion",
|
||||
FileName = "filename",
|
||||
|
||||
@@ -309,6 +309,8 @@ namespace SabreTools.Metadata.Filter
|
||||
"datversion",
|
||||
"debug",
|
||||
"description",
|
||||
"dir",
|
||||
"dirhandling",
|
||||
"email",
|
||||
"emulatorversion",
|
||||
"filename",
|
||||
|
||||
@@ -1280,6 +1280,10 @@ namespace SabreTools.Metadata.Filter
|
||||
case "description":
|
||||
checkValue = obj.Description;
|
||||
return true;
|
||||
case "dir":
|
||||
case "dirhandling":
|
||||
checkValue = obj.DirHandling;
|
||||
return true;
|
||||
case "email":
|
||||
checkValue = obj.Email;
|
||||
return true;
|
||||
|
||||
@@ -79,6 +79,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
|
||||
ForceNodump = Data.Models.Metadata.NodumpFlag.Required,
|
||||
ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
|
||||
Dir = "noautodir",
|
||||
};
|
||||
|
||||
var clrmamepro = new Data.Models.Logiqx.ClrMamePro
|
||||
@@ -332,6 +333,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rv.ForceMerging);
|
||||
Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, rv.ForceNodump);
|
||||
Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, rv.ForcePacking);
|
||||
Assert.Equal("noautodir", rv.Dir);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -71,6 +71,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
header.RomVault.ForceNodump = item.ForceNodump;
|
||||
if (item.ForcePacking is not Data.Models.Metadata.PackingFlag.None)
|
||||
header.RomVault.ForcePacking = item.ForcePacking;
|
||||
if (item.DirHandling is not null)
|
||||
header.RomVault.Dir = item.DirHandling;
|
||||
|
||||
header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro();
|
||||
if (item.HeaderSkipper is not null)
|
||||
|
||||
@@ -69,6 +69,15 @@ namespace SabreTools.Serialization.CrossModel
|
||||
Subset = item.Subset,
|
||||
};
|
||||
|
||||
if (item.RomVault is not null)
|
||||
{
|
||||
header.HeaderSkipper = item.RomVault.Header;
|
||||
header.ForceMerging = item.RomVault.ForceMerging;
|
||||
header.ForceNodump = item.RomVault.ForceNodump;
|
||||
header.ForcePacking = item.RomVault.ForcePacking;
|
||||
header.DirHandling = item.RomVault.Dir;
|
||||
}
|
||||
|
||||
if (item.ClrMamePro is not null)
|
||||
{
|
||||
header.HeaderSkipper = item.ClrMamePro.Header;
|
||||
|
||||
@@ -144,6 +144,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
|
||||
ForceNodump = Data.Models.Metadata.NodumpFlag.Required,
|
||||
ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
|
||||
Dir = "noautodir",
|
||||
};
|
||||
|
||||
var clrmamepro = new Data.Models.Logiqx.ClrMamePro
|
||||
@@ -385,6 +386,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Assert.Equal(Data.Models.Metadata.MergingFlag.Merged, rv.ForceMerging);
|
||||
Assert.Equal(Data.Models.Metadata.NodumpFlag.Required, rv.ForceNodump);
|
||||
Assert.Equal(Data.Models.Metadata.PackingFlag.Zip, rv.ForcePacking);
|
||||
Assert.Equal("noautodir", rv.Dir);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -341,6 +341,7 @@ namespace SabreTools.Serialization.Readers
|
||||
obj.ForceMerging = reader.GetAttribute("forcemerging").AsMergingFlag();
|
||||
obj.ForceNodump = reader.GetAttribute("forcenodump").AsNodumpFlag();
|
||||
obj.ForcePacking = reader.GetAttribute("forcepacking").AsPackingFlag();
|
||||
obj.Dir = reader.GetAttribute("dir");
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
@@ -212,6 +212,7 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteOptionalAttributeString("forcenodump", obj.ForceNodump.AsStringValue());
|
||||
if (obj.ForcePacking != Data.Models.Metadata.PackingFlag.None)
|
||||
writer.WriteOptionalAttributeString("forcepacking", obj.ForcePacking.AsStringValue());
|
||||
writer.WriteOptionalAttributeString("dir", obj.Dir);
|
||||
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user