Add ListXML header fields

This commit is contained in:
Matt Nadareski
2020-08-20 15:13:57 -07:00
parent c3781b3397
commit 90f704b72b
4 changed files with 135 additions and 25 deletions

View File

@@ -13,9 +13,9 @@ namespace SabreTools.Library.DatFiles
/// </summary> /// </summary>
public class DatHeader : ICloneable public class DatHeader : ICloneable
{ {
#region Publicly facing variables #region Fields
#region Data common to most DAT types #region Common Fields
/// <summary> /// <summary>
/// External name of the DAT /// External name of the DAT
@@ -178,6 +178,32 @@ namespace SabreTools.Library.DatFiles
#endregion #endregion
#region ListXML Fields
/// <summary>
/// Debug build flag
/// </summary>
[JsonProperty("debug")]
public bool? Debug { get; set; } = false;
/// <summary>
/// MAME configuration name
/// </summary>
[JsonProperty("mameconfig")]
public string MameConfig { get; set; }
#endregion
#region Missfile Fields
/// <summary>
/// Output the item name
/// </summary>
[JsonIgnore]
public bool UseRomName { get; set; }
#endregion
#region Write pre-processing #region Write pre-processing
/// <summary> /// <summary>
@@ -224,16 +250,6 @@ namespace SabreTools.Library.DatFiles
#endregion #endregion
#region Data specific to the Miss DAT type
/// <summary>
/// Output the item name
/// </summary>
[JsonIgnore]
public bool UseRomName { get; set; }
#endregion
#region Depot Information #region Depot Information
/// <summary> /// <summary>

View File

@@ -120,6 +120,8 @@ namespace SabreTools.Library.DatFiles
string content; string content;
switch (jtr.Value) switch (jtr.Value)
{ {
#region Common
case "name": case "name":
content = jtr.ReadAsString(); content = jtr.ReadAsString();
Header.Name = (Header.Name == null ? content : Header.Name); Header.Name = (Header.Name == null ? content : Header.Name);
@@ -180,6 +182,11 @@ namespace SabreTools.Library.DatFiles
Header.Comment = (Header.Comment == null ? content : Header.Comment); Header.Comment = (Header.Comment == null ? content : Header.Comment);
break; break;
case "header":
content = jtr.ReadAsString();
Header.HeaderSkipper = (Header.HeaderSkipper == null ? content : Header.HeaderSkipper);
break;
case "type": // This is exclusive to TruRip XML case "type": // This is exclusive to TruRip XML
content = jtr.ReadAsString(); content = jtr.ReadAsString();
Header.Type = (Header.Type == null ? content : Header.Type); Header.Type = (Header.Type == null ? content : Header.Type);
@@ -192,23 +199,34 @@ namespace SabreTools.Library.DatFiles
break; break;
case "forcepacking":
if (Header.ForcePacking == ForcePacking.None)
Header.ForcePacking = jtr.ReadAsString().AsForcePacking();
break;
case "forcenodump": case "forcenodump":
if (Header.ForceNodump == ForceNodump.None) if (Header.ForceNodump == ForceNodump.None)
Header.ForceNodump = jtr.ReadAsString().AsForceNodump(); Header.ForceNodump = jtr.ReadAsString().AsForceNodump();
break; break;
case "header": case "forcepacking":
content = jtr.ReadAsString(); if (Header.ForcePacking == ForcePacking.None)
Header.HeaderSkipper = (Header.HeaderSkipper == null ? content : Header.HeaderSkipper); Header.ForcePacking = jtr.ReadAsString().AsForcePacking();
break; break;
#endregion
#region ListXML
case "debug":
content = jtr.ReadAsString();
Header.Debug = (Header.Debug == null ? content.AsYesNo() : Header.Debug);
break;
case "mameconfig":
content = jtr.ReadAsString();
Header.MameConfig = (Header.MameConfig == null ? content : Header.MameConfig);
break;
#endregion
default: default:
break; break;
} }
@@ -875,6 +893,8 @@ namespace SabreTools.Library.DatFiles
jtw.WritePropertyName("header"); jtw.WritePropertyName("header");
jtw.WriteStartObject(); jtw.WriteStartObject();
#region Common
jtw.WritePropertyName("name"); jtw.WritePropertyName("name");
jtw.WriteValue(Header.Name); jtw.WriteValue(Header.Name);
jtw.WritePropertyName("description"); jtw.WritePropertyName("description");
@@ -977,6 +997,32 @@ namespace SabreTools.Library.DatFiles
jtw.WriteValue(Header.HeaderSkipper); jtw.WriteValue(Header.HeaderSkipper);
} }
#endregion
#region ListXML
if (Header.Debug != null)
{
jtw.WritePropertyName("debug");
switch (Header.Debug)
{
case true:
jtw.WriteValue("yes"));
break;
case false:
jtw.WriteValue("no");
break;
}
}
if (!string.IsNullOrWhiteSpace(Header.MameConfig))
{
jtw.WritePropertyName("mameconfig");
jtw.WriteValue(Header.MameConfig);
}
#endregion
// End header // End header
jtw.WriteEndObject(); jtw.WriteEndObject();

View File

@@ -66,8 +66,8 @@ namespace SabreTools.Library.DatFiles
case "mame": case "mame":
Header.Name = (Header.Name == null ? xtr.GetAttribute("build") : Header.Name); Header.Name = (Header.Name == null ? xtr.GetAttribute("build") : Header.Name);
Header.Description = (Header.Description == null ? Header.Name : Header.Description); Header.Description = (Header.Description == null ? Header.Name : Header.Description);
string mame_debug = xtr.GetAttribute("debug"); // (yes|no) "no" Header.Debug = (Header.Debug == null ? xtr.GetAttribute("debug").AsYesNo() : Header.Debug);
string mame_mameconfig = xtr.GetAttribute("mameconfig"); // CDATA Header.MameConfig = (Header.MameConfig == null ? xtr.GetAttribute("mameconfig") : Header.MameConfig);
xtr.Read(); xtr.Read();
break; break;
@@ -310,6 +310,9 @@ namespace SabreTools.Library.DatFiles
reader.Read(); reader.Read();
break; break;
// TODO: Should these be new DatItem types?
// TODO: Should any be additional Machine fields?
case "chip": case "chip":
// string chip_name = reader.GetAttribute("name"); // string chip_name = reader.GetAttribute("name");
// string chip_tag = reader.GetAttribute("tag"); // string chip_tag = reader.GetAttribute("tag");
@@ -665,8 +668,21 @@ namespace SabreTools.Library.DatFiles
xtw.WriteStartElement("mame"); xtw.WriteStartElement("mame");
xtw.WriteAttributeString("build", Header.Name); xtw.WriteAttributeString("build", Header.Name);
//xtw.WriteAttributeString("debug", Debug); if (Header.Debug != null)
//xtw.WriteAttributeString("mameconfig", MameConfig); {
switch (Header.Debug)
{
case true:
xtw.WriteAttributeString("debug", "yes");
break;
case false:
xtw.WriteAttributeString("debug", "no");
break;
}
}
if (!string.IsNullOrEmpty(Header.MameConfig))
xtw.WriteAttributeString("mameconfig", Header.MameConfig);
xtw.Flush(); xtw.Flush();
} }

View File

@@ -116,6 +116,8 @@ namespace SabreTools.Library.DatFiles
{ {
#region DatFile #region DatFile
#region Common
case "DatFile.FileName": case "DatFile.FileName":
Header.FileName = (Header.FileName== null ? value : Header.FileName); Header.FileName = (Header.FileName== null ? value : Header.FileName);
break; break;
@@ -186,6 +188,20 @@ namespace SabreTools.Library.DatFiles
#endregion #endregion
#region ListXML
case "DatFile.Debug":
Header.Debug = (Header.Debug == null ? value.AsYesNo() : Header.Debug);
break;
case "DatFile.MameConfig":
Header.MameConfig = (Header.MameConfig == null ? value : Header.MameConfig);
break;
#endregion
#endregion // DatFile
#region Machine #region Machine
#region Common #region Common
@@ -654,6 +670,8 @@ namespace SabreTools.Library.DatFiles
{ {
#region DatFile #region DatFile
#region Common
case "file": case "file":
case "filename": case "filename":
case "file name": case "file name":
@@ -721,6 +739,20 @@ namespace SabreTools.Library.DatFiles
#endregion #endregion
#region ListXML
case "debug":
return "DatFile.Debug";
case "mameconfig":
case "mame config":
case "mame-config":
return "DatFile.MameConfig";
#endregion
#endregion // DatFile
#region Machine #region Machine
#region Common #region Common