mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-09-24 07:45:06 +00:00
Add RomVault subheader
This commit is contained in:
@@ -52,6 +52,9 @@ namespace SabreTools.Data.Models.Logiqx
|
||||
[XmlElement("type")]
|
||||
public string? Type { get; set; }
|
||||
|
||||
[XmlElement("romvault")]
|
||||
public RomVault? RomVault { get; set; }
|
||||
|
||||
[XmlElement("clrmamepro")]
|
||||
public ClrMamePro? ClrMamePro { get; set; }
|
||||
|
||||
|
||||
25
SabreTools.Data.Models/Logiqx/RomVault.cs
Normal file
25
SabreTools.Data.Models/Logiqx/RomVault.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System.Xml;
|
||||
using System.Xml.Serialization;
|
||||
using SabreTools.Data.Models.Metadata;
|
||||
|
||||
namespace SabreTools.Data.Models.Logiqx
|
||||
{
|
||||
[XmlRoot("romvault")]
|
||||
public class RomVault
|
||||
{
|
||||
[XmlAttribute("header")]
|
||||
public string? Header { get; set; }
|
||||
|
||||
/// <remarks>(none|split|merged|nonmerged|fullmerged|device|full) "split"</remarks>
|
||||
[XmlAttribute("forcemerging")]
|
||||
public MergingFlag ForceMerging { get; set; }
|
||||
|
||||
/// <remarks>(obsolete|required|ignore) "obsolete"</remarks>
|
||||
[XmlAttribute("forcenodump")]
|
||||
public NodumpFlag ForceNodump { get; set; }
|
||||
|
||||
/// <remarks>(zip|unzip) "zip"</remarks>
|
||||
[XmlAttribute("forcepacking")]
|
||||
public PackingFlag ForcePacking { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -73,6 +73,14 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
/// </summary>
|
||||
private static Data.Models.Logiqx.Datafile Build(bool game)
|
||||
{
|
||||
var romvault = new Data.Models.Logiqx.RomVault
|
||||
{
|
||||
Header = "XXXXXX",
|
||||
ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
|
||||
ForceNodump = Data.Models.Metadata.NodumpFlag.Required,
|
||||
ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
|
||||
};
|
||||
|
||||
var clrmamepro = new Data.Models.Logiqx.ClrMamePro
|
||||
{
|
||||
Header = "XXXXXX",
|
||||
@@ -107,6 +115,7 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Url = "XXXXXX",
|
||||
Comment = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
RomVault = romvault,
|
||||
ClrMamePro = clrmamepro,
|
||||
RomCenter = romcenter,
|
||||
};
|
||||
@@ -303,10 +312,23 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
Assert.Equal("XXXXXX", header.Url);
|
||||
Assert.Equal("XXXXXX", header.Comment);
|
||||
Assert.Equal("XXXXXX", header.Type);
|
||||
Validate(header.RomVault);
|
||||
Validate(header.ClrMamePro);
|
||||
Validate(header.RomCenter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a RomVault
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Logiqx.RomVault? rv)
|
||||
{
|
||||
Assert.NotNull(rv);
|
||||
Assert.Equal("XXXXXX", rv.Header);
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ClrMamePro
|
||||
/// </summary>
|
||||
|
||||
@@ -61,6 +61,16 @@ namespace SabreTools.Serialization.CrossModel
|
||||
|| item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None
|
||||
|| item.ForcePacking is not Data.Models.Metadata.PackingFlag.None)
|
||||
{
|
||||
header.RomVault = new RomVault();
|
||||
if (item.HeaderSkipper is not null)
|
||||
header.RomVault.Header = item.HeaderSkipper;
|
||||
if (item.ForceMerging is not Data.Models.Metadata.MergingFlag.None)
|
||||
header.RomVault.ForceMerging = item.ForceMerging;
|
||||
if (item.ForceNodump is not Data.Models.Metadata.NodumpFlag.None)
|
||||
header.RomVault.ForceNodump = item.ForceNodump;
|
||||
if (item.ForcePacking is not Data.Models.Metadata.PackingFlag.None)
|
||||
header.RomVault.ForcePacking = item.ForcePacking;
|
||||
|
||||
header.ClrMamePro = new Data.Models.Logiqx.ClrMamePro();
|
||||
if (item.HeaderSkipper is not null)
|
||||
header.ClrMamePro.Header = item.HeaderSkipper;
|
||||
|
||||
@@ -138,6 +138,14 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
/// </summary>
|
||||
private static Data.Models.Logiqx.Datafile Build(bool game)
|
||||
{
|
||||
var romvault = new Data.Models.Logiqx.RomVault
|
||||
{
|
||||
Header = "XXXXXX",
|
||||
ForceMerging = Data.Models.Metadata.MergingFlag.Merged,
|
||||
ForceNodump = Data.Models.Metadata.NodumpFlag.Required,
|
||||
ForcePacking = Data.Models.Metadata.PackingFlag.Zip,
|
||||
};
|
||||
|
||||
var clrmamepro = new Data.Models.Logiqx.ClrMamePro
|
||||
{
|
||||
Header = "XXXXXX",
|
||||
@@ -172,6 +180,7 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Url = "XXXXXX",
|
||||
Comment = "XXXXXX",
|
||||
Type = "XXXXXX",
|
||||
RomVault = romvault,
|
||||
ClrMamePro = clrmamepro,
|
||||
RomCenter = romcenter,
|
||||
};
|
||||
@@ -356,10 +365,23 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
Assert.Equal("XXXXXX", header.Url);
|
||||
Assert.Equal("XXXXXX", header.Comment);
|
||||
Assert.Equal("XXXXXX", header.Type);
|
||||
Validate(header.RomVault);
|
||||
Validate(header.ClrMamePro);
|
||||
Validate(header.RomCenter);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a RomVault
|
||||
/// </summary>
|
||||
private static void Validate(Data.Models.Logiqx.RomVault? rv)
|
||||
{
|
||||
Assert.NotNull(rv);
|
||||
Assert.Equal("XXXXXX", rv.Header);
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate a ClrMamePro
|
||||
/// </summary>
|
||||
|
||||
@@ -244,6 +244,13 @@ namespace SabreTools.Serialization.Readers
|
||||
|
||||
obj.Type = reader.ReadElementContentAsString();
|
||||
break;
|
||||
case "romvault":
|
||||
if (obj.RomVault is not null && Debug)
|
||||
Console.WriteLine($"'{reader.Name}' element already found, overwriting");
|
||||
|
||||
obj.RomVault = ParseRomVault(reader);
|
||||
reader.Skip();
|
||||
break;
|
||||
case "clrmamepro":
|
||||
if (obj.ClrMamePro is not null && Debug)
|
||||
Console.WriteLine($"'{reader.Name}' element already found, overwriting");
|
||||
@@ -289,6 +296,23 @@ namespace SabreTools.Serialization.Readers
|
||||
return obj;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parse from an XmlTextReader into a RomVault
|
||||
/// </summary>
|
||||
/// <param name="reader">XmlTextReader to read from</param>
|
||||
/// <returns>Filled RomVault on success, null on error</returns>
|
||||
public RomVault ParseRomVault(XmlTextReader reader)
|
||||
{
|
||||
var obj = new RomVault();
|
||||
|
||||
obj.Header = reader.GetAttribute("header");
|
||||
obj.ForceMerging = reader.GetAttribute("forcemerging").AsMergingFlag();
|
||||
obj.ForceNodump = reader.GetAttribute("forcenodump").AsNodumpFlag();
|
||||
obj.ForcePacking = reader.GetAttribute("forcepacking").AsPackingFlag();
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Items
|
||||
|
||||
@@ -159,6 +159,9 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteOptionalElementString("comment", obj.Comment);
|
||||
writer.WriteOptionalElementString("type", obj.Type);
|
||||
|
||||
if (obj.RomVault is not null)
|
||||
WriteRomVault(obj.RomVault, writer);
|
||||
|
||||
if (obj.ClrMamePro is not null)
|
||||
WriteClrMamePro(obj.ClrMamePro, writer);
|
||||
|
||||
@@ -192,6 +195,26 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write a RomVault to an XmlTextWriter
|
||||
/// </summary>
|
||||
/// <param name="obj">RomVault to write</param>
|
||||
/// <param name="writer">XmlTextReader to write to</param>
|
||||
private static void WriteRomVault(RomVault obj, XmlTextWriter writer)
|
||||
{
|
||||
writer.WriteStartElement("romvault");
|
||||
|
||||
writer.WriteOptionalAttributeString("header", obj.Header);
|
||||
if (obj.ForceMerging != Data.Models.Metadata.MergingFlag.None)
|
||||
writer.WriteOptionalAttributeString("forcemerging", obj.ForceMerging.AsStringValue());
|
||||
if (obj.ForceNodump != Data.Models.Metadata.NodumpFlag.None)
|
||||
writer.WriteOptionalAttributeString("forcenodump", obj.ForceNodump.AsStringValue());
|
||||
if (obj.ForcePacking != Data.Models.Metadata.PackingFlag.None)
|
||||
writer.WriteOptionalAttributeString("forcepacking", obj.ForcePacking.AsStringValue());
|
||||
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Items
|
||||
|
||||
Reference in New Issue
Block a user