diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs
index 99d57f29..17f1670f 100644
--- a/SabreTools.Library/DatFiles/DatHeader.cs
+++ b/SabreTools.Library/DatFiles/DatHeader.cs
@@ -215,6 +215,34 @@ namespace SabreTools.Library.DatFiles
#endregion
+ #region OfflineList Fields
+
+ ///
+ /// System
+ ///
+ [JsonProperty("system")]
+ public string System { get; set; }
+
+ ///
+ /// Screenshots width
+ ///
+ [JsonProperty("screenshotswidth")]
+ public string ScreenshotsWidth { get; set; }
+
+ ///
+ /// Screenshots height
+ ///
+ [JsonProperty("screenshotsheight")]
+ public string ScreenshotsHeight { get; set; }
+
+ ///
+ /// Rom title
+ ///
+ [JsonProperty("romtitle")]
+ public string RomTitle { get; set; }
+
+ #endregion
+
#region Write pre-processing
///
diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs
index c0746eb6..1e5676ae 100644
--- a/SabreTools.Library/DatFiles/Json.cs
+++ b/SabreTools.Library/DatFiles/Json.cs
@@ -236,6 +236,30 @@ namespace SabreTools.Library.DatFiles
#endregion
+ #region OfflineList
+
+ case "system":
+ content = jtr.ReadAsString();
+ Header.System = (Header.System == null ? content : Header.System);
+ break;
+
+ case "screenshotswidth":
+ content = jtr.ReadAsString();
+ Header.ScreenshotsWidth = (Header.ScreenshotsWidth == null ? content : Header.ScreenshotsWidth);
+ break;
+
+ case "screenshotsheight":
+ content = jtr.ReadAsString();
+ Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? content : Header.ScreenshotsHeight);
+ break;
+
+ case "romtitle":
+ content = jtr.ReadAsString();
+ Header.RomTitle = (Header.MameConfig == null ? content : Header.RomTitle);
+ break;
+
+ #endregion
+
default:
break;
}
@@ -1042,6 +1066,34 @@ namespace SabreTools.Library.DatFiles
#endregion
+ #region OfflineList
+
+ if (!string.IsNullOrWhiteSpace(Header.System))
+ {
+ jtw.WritePropertyName("system");
+ jtw.WriteValue(Header.System);
+ }
+
+ if (!string.IsNullOrWhiteSpace(Header.ScreenshotsWidth))
+ {
+ jtw.WritePropertyName("screenshotswidth");
+ jtw.WriteValue(Header.ScreenshotsWidth);
+ }
+
+ if (!string.IsNullOrWhiteSpace(Header.ScreenshotsHeight))
+ {
+ jtw.WritePropertyName("screenshotsheight");
+ jtw.WriteValue(Header.ScreenshotsHeight);
+ }
+
+ if (!string.IsNullOrWhiteSpace(Header.RomTitle))
+ {
+ jtw.WritePropertyName("romtitle");
+ jtw.WriteValue(Header.RomTitle);
+ }
+
+ #endregion
+
// End header
jtw.WriteEndObject();
diff --git a/SabreTools.Library/DatFiles/OfflineList.cs b/SabreTools.Library/DatFiles/OfflineList.cs
index 60e87a17..c316a639 100644
--- a/SabreTools.Library/DatFiles/OfflineList.cs
+++ b/SabreTools.Library/DatFiles/OfflineList.cs
@@ -138,17 +138,23 @@ namespace SabreTools.Library.DatFiles
break;
case "system":
- reader.ReadElementContentAsString();
+ content = reader.ReadElementContentAsString();
+ Header.System = (Header.System == null ? content : Header.System);
break;
+ // TODO: Int32?
case "screenshotswidth":
- reader.ReadElementContentAsString(); // Int32?
+ content = reader.ReadElementContentAsString();
+ Header.ScreenshotsWidth = (Header.ScreenshotsWidth == null ? content : Header.ScreenshotsWidth);
break;
+ // TODO: Int32?
case "screenshotsheight":
- reader.ReadElementContentAsString(); // Int32?
+ content = reader.ReadElementContentAsString();
+ Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? content : Header.ScreenshotsHeight);
break;
+ // TODO: Use header values
case "infos":
ReadInfos(reader.ReadSubtree());
@@ -156,6 +162,7 @@ namespace SabreTools.Library.DatFiles
reader.Skip();
break;
+ // TODO: Use header values
case "canopen":
ReadCanOpen(reader.ReadSubtree());
@@ -163,6 +170,7 @@ namespace SabreTools.Library.DatFiles
reader.Skip();
break;
+ // TODO: Use header values
case "newdat":
ReadNewDat(reader.ReadSubtree());
@@ -170,6 +178,7 @@ namespace SabreTools.Library.DatFiles
reader.Skip();
break;
+ // TODO: Use header values
case "search":
ReadSearch(reader.ReadSubtree());
@@ -178,7 +187,8 @@ namespace SabreTools.Library.DatFiles
break;
case "romtitle":
- reader.ReadElementContentAsString();
+ content = reader.ReadElementContentAsString();
+ Header.RomTitle = (Header.RomTitle == null ? content : Header.RomTitle);
break;
default:
@@ -840,9 +850,9 @@ namespace SabreTools.Library.DatFiles
xtw.WriteStartElement("configuration");
xtw.WriteElementString("datName", Header.Name);
xtw.WriteElementString("datVersion", Items.TotalCount.ToString());
- xtw.WriteElementString("system", "none");
- xtw.WriteElementString("screenshotsWidth", "240");
- xtw.WriteElementString("screenshotsHeight", "160");
+ xtw.WriteElementString("system", Header.System ?? string.Empty);
+ xtw.WriteElementString("screenshotsWidth", Header.ScreenshotsWidth ?? string.Empty);
+ xtw.WriteElementString("screenshotsHeight", Header.ScreenshotsHeight ?? string.Empty);
xtw.WriteStartElement("infos");
@@ -985,7 +995,7 @@ namespace SabreTools.Library.DatFiles
// End search
xtw.WriteEndElement();
- xtw.WriteElementString("romTitle", "%u - %n");
+ xtw.WriteElementString("romTitle", Header.RomTitle ?? "%u - %n");
// End configuration
xtw.WriteEndElement();
diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs
index 8d55e357..603dcf32 100644
--- a/SabreTools.Library/DatFiles/SeparatedValue.cs
+++ b/SabreTools.Library/DatFiles/SeparatedValue.cs
@@ -208,6 +208,26 @@ namespace SabreTools.Library.DatFiles
#endregion
+ #region OfflineList
+
+ case "DatFile.System":
+ Header.System = (Header.System == null ? value : Header.System);
+ break;
+
+ case "DatFile.ScreenshotsWidth":
+ Header.ScreenshotsWidth = (Header.ScreenshotsWidth == null ? value : Header.ScreenshotsWidth);
+ break;
+
+ case "DatFile.ScreenshotsHeight":
+ Header.ScreenshotsHeight = (Header.ScreenshotsHeight == null ? value : Header.ScreenshotsHeight);
+ break;
+
+ case "DatFile.RomTitle":
+ Header.RomTitle = (Header.RomTitle == null ? value : Header.RomTitle);
+ break;
+
+ #endregion
+
#endregion // DatFile
#region Machine
@@ -766,6 +786,34 @@ namespace SabreTools.Library.DatFiles
#endregion
+ #region OfflineList
+
+ case "system":
+ return "DatFile.System";
+
+ case "screenshotwidth":
+ case "screenshotswidth":
+ case "screenshot width":
+ case "screenshot-width":
+ case "screenshots width":
+ case "screenshots-width":
+ return "DatFile.ScreenshotsWidth";
+
+ case "screenshotheight":
+ case "screenshotsheight":
+ case "screenshot height":
+ case "screenshot-height":
+ case "screenshots height":
+ case "screenshots-height":
+ return "DatFile.ScreenshotsHeight";
+
+ case "romtitle":
+ case "rom title":
+ case "rom-title":
+ return "DatFile.RomTitle";
+
+ #endregion
+
#endregion // DatFile
#region Machine