Wire up Logiqx TruRip/EmuArc fields

This commit is contained in:
Matt Nadareski
2020-08-20 22:42:04 -07:00
parent d90e9ee8a1
commit bcd765b375
8 changed files with 726 additions and 54 deletions

View File

@@ -451,7 +451,8 @@ namespace SabreTools.Library.DatFiles
switch (jtr.Value)
{
// Common
#region Common
case "name":
machine.Name = jtr.ReadAsString();
break;
@@ -504,7 +505,10 @@ namespace SabreTools.Library.DatFiles
ReadItems(sr, jtr, filename, indexId, machine);
break;
// AttractMode
#endregion
#region AttractMode
case "players":
machine.Players = jtr.ReadAsString();
break;
@@ -527,7 +531,10 @@ namespace SabreTools.Library.DatFiles
machine.Buttons = jtr.ReadAsString();
break;
// ListXML
#endregion
#region ListXML
case "sourcefile":
machine.SourceFile = jtr.ReadAsString();
break;
@@ -571,7 +578,10 @@ namespace SabreTools.Library.DatFiles
break;
// Logiqx
#endregion
#region Logiqx
case "board":
machine.Board = jtr.ReadAsString();
break;
@@ -579,11 +589,48 @@ namespace SabreTools.Library.DatFiles
machine.RebuildTo = jtr.ReadAsString();
break;
// SoftwareList
#endregion
#region Logiqx EmuArc
case "titleid":
machine.TitleID = jtr.ReadAsString();
break;
case "developer":
machine.Developer = jtr.ReadAsString();
break;
case "genre":
machine.Genre = jtr.ReadAsString();
break;
case "subgenre":
machine.Subgenre = jtr.ReadAsString();
break;
case "ratings":
machine.Ratings = jtr.ReadAsString();
break;
case "score":
machine.Score = jtr.ReadAsString();
break;
case "enabled":
machine.Enabled = jtr.ReadAsString();
break;
case "hascrc":
machine.HasCrc = jtr.ReadAsString().AsYesNo();
break;
case "relatedto":
machine.RelatedTo = jtr.ReadAsString();
break;
#endregion
#region SoftwareList
case "supported":
machine.Supported = jtr.ReadAsString().AsYesNo();
break;
#endregion
default:
break;
}
@@ -1382,7 +1429,8 @@ namespace SabreTools.Library.DatFiles
// Build the state based on excluded fields
jtw.WriteStartObject();
// Common
#region Common
jtw.WritePropertyName("name");
jtw.WriteValue(datItem.GetField(Field.MachineName, Header.ExcludeFields));
@@ -1450,7 +1498,10 @@ namespace SabreTools.Library.DatFiles
}
}
// AttractMode
#endregion
#region AttractMode
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Players, Header.ExcludeFields)))
{
jtw.WritePropertyName("players");
@@ -1487,7 +1538,10 @@ namespace SabreTools.Library.DatFiles
jtw.WriteValue(datItem.Machine.Buttons);
}
// ListXML
#endregion
#region ListXML
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SourceFile, Header.ExcludeFields)))
{
jtw.WritePropertyName("sourcefile");
@@ -1543,7 +1597,10 @@ namespace SabreTools.Library.DatFiles
jtw.WriteEndArray();
}
// Logiqx
#endregion
#region Logiqx
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Board, Header.ExcludeFields)))
{
jtw.WritePropertyName("board");
@@ -1555,7 +1612,68 @@ namespace SabreTools.Library.DatFiles
jtw.WriteValue(datItem.Machine.RebuildTo);
}
// SoftwareList
#endregion
#region Logiqx EmuArc
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.TitleID, Header.ExcludeFields)))
{
jtw.WritePropertyName("titleid");
jtw.WriteValue(datItem.Machine.TitleID);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Developer, Header.ExcludeFields)))
{
jtw.WritePropertyName("developer");
jtw.WriteValue(datItem.Machine.Developer);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Genre, Header.ExcludeFields)))
{
jtw.WritePropertyName("genre");
jtw.WriteValue(datItem.Machine.Genre);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Subgenre, Header.ExcludeFields)))
{
jtw.WritePropertyName("subgenre");
jtw.WriteValue(datItem.Machine.Subgenre);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Ratings, Header.ExcludeFields)))
{
jtw.WritePropertyName("ratings");
jtw.WriteValue(datItem.Machine.Ratings);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Score, Header.ExcludeFields)))
{
jtw.WritePropertyName("score");
jtw.WriteValue(datItem.Machine.Score);
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Enabled, Header.ExcludeFields)))
{
jtw.WritePropertyName("enabled");
jtw.WriteValue(datItem.Machine.Enabled);
}
if (!Header.ExcludeFields.Contains(Field.HasCrc) && datItem.Machine.HasCrc != null)
{
if (datItem.Machine.HasCrc == true)
{
jtw.WritePropertyName("hascrc");
jtw.WriteValue("yes");
}
else if (datItem.Machine.HasCrc == false)
{
jtw.WritePropertyName("hascrc");
jtw.WriteValue("no");
}
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RelatedTo, Header.ExcludeFields)))
{
jtw.WritePropertyName("relatedto");
jtw.WriteValue(datItem.Machine.RelatedTo);
}
#endregion
#region SoftwareList
if (!Header.ExcludeFields.Contains(Field.Supported) && datItem.Machine.Supported != null)
{
if (datItem.Machine.Supported == true)
@@ -1570,6 +1688,8 @@ namespace SabreTools.Library.DatFiles
}
}
#endregion
jtw.WritePropertyName("items");
jtw.WriteStartArray();

View File

@@ -367,7 +367,7 @@ namespace SabreTools.Library.DatFiles
machine.Category = reader.ReadElementContentAsString();
break;
case "trurip": // This is special metadata unique to TruRip
case "trurip": // This is special metadata unique to EmuArc
ReadTruRip(reader.ReadSubtree(), machine);
// Skip the trurip node now that we've processed it
@@ -556,7 +556,7 @@ namespace SabreTools.Library.DatFiles
}
/// <summary>
/// Read TruRip information
/// Read EmuArc information
/// </summary>
/// <param name="keep">True if full pathnames are to be kept, false otherwise (default)</param>
/// <param name="machine">Machine information to pass to contained items</param>
@@ -582,15 +582,15 @@ namespace SabreTools.Library.DatFiles
switch (reader.Name)
{
case "titleid":
reader.ReadElementContentAsString();
machine.TitleID = reader.ReadElementContentAsString();
break;
case "publisher":
machine.Publisher = reader.ReadElementContentAsString();
break;
case "developer": // Manufacturer is as close as this gets
machine.Manufacturer = reader.ReadElementContentAsString();
case "developer":
machine.Developer = reader.ReadElementContentAsString();
break;
case "year":
@@ -598,31 +598,31 @@ namespace SabreTools.Library.DatFiles
break;
case "genre":
machine.Category = reader.ReadElementContentAsString();
machine.Genre = reader.ReadElementContentAsString();
break;
case "subgenre":
reader.ReadElementContentAsString();
machine.Subgenre = reader.ReadElementContentAsString();
break;
case "ratings":
reader.ReadElementContentAsString();
machine.Ratings = reader.ReadElementContentAsString();
break;
case "score":
reader.ReadElementContentAsString();
machine.Score = reader.ReadElementContentAsString();
break;
case "players":
reader.ReadElementContentAsString();
machine.Players = reader.ReadElementContentAsString();
break;
case "enabled":
reader.ReadElementContentAsString();
machine.Enabled = reader.ReadElementContentAsString();
break;
case "crc":
reader.ReadElementContentAsString().AsYesNo();
machine.HasCrc = reader.ReadElementContentAsString().AsYesNo();
break;
case "source":
@@ -634,7 +634,7 @@ namespace SabreTools.Library.DatFiles
break;
case "relatedto":
reader.ReadElementContentAsString();
machine.RelatedTo = reader.ReadElementContentAsString();
break;
default:
@@ -1008,6 +1008,58 @@ namespace SabreTools.Library.DatFiles
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Category, Header.ExcludeFields)))
xtw.WriteElementString("category", datItem.Machine.Category);
if (datItem.Machine.TitleID != null
|| datItem.Machine.Developer != null
|| datItem.Machine.Genre != null
|| datItem.Machine.Subgenre != null
|| datItem.Machine.Ratings != null
|| datItem.Machine.Score != null
|| datItem.Machine.Enabled != null
|| datItem.Machine.HasCrc != null
|| datItem.Machine.RelatedTo != null)
{
xtw.WriteStartElement("trurip");
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.TitleID, Header.ExcludeFields)))
xtw.WriteElementString("titleid", datItem.Machine.TitleID);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Publisher, Header.ExcludeFields)))
xtw.WriteElementString("publisher", datItem.Machine.Publisher);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Developer, Header.ExcludeFields)))
xtw.WriteElementString("developer", datItem.Machine.Developer);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Year, Header.ExcludeFields)))
xtw.WriteElementString("year", datItem.Machine.Year);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Genre, Header.ExcludeFields)))
xtw.WriteElementString("genre", datItem.Machine.Genre);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Subgenre, Header.ExcludeFields)))
xtw.WriteElementString("subgenre", datItem.Machine.Subgenre);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Ratings, Header.ExcludeFields)))
xtw.WriteElementString("ratings", datItem.Machine.Ratings);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Score, Header.ExcludeFields)))
xtw.WriteElementString("score", datItem.Machine.Score);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Players, Header.ExcludeFields)))
xtw.WriteElementString("players", datItem.Machine.Players);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Enabled, Header.ExcludeFields)))
xtw.WriteElementString("enabled", datItem.Machine.Enabled);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.TitleID, Header.ExcludeFields)))
xtw.WriteElementString("titleid", datItem.Machine.TitleID);
if (!Header.ExcludeFields.Contains(Field.HasCrc) && datItem.Machine.HasCrc != null)
{
if (datItem.Machine.HasCrc == true)
xtw.WriteElementString("crc", "yes");
else if (datItem.Machine.HasCrc == false)
xtw.WriteElementString("crc", "no");
}
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.SourceFile, Header.ExcludeFields)))
xtw.WriteElementString("source", datItem.Machine.SourceFile);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.CloneOf, Header.ExcludeFields)))
xtw.WriteElementString("cloneof", datItem.Machine.CloneOf);
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.RelatedTo, Header.ExcludeFields)))
xtw.WriteElementString("relatedto", datItem.Machine.RelatedTo);
// End trurip
xtw.WriteEndElement();
}
xtw.Flush();
}
catch (Exception ex)

View File

@@ -415,6 +415,46 @@ namespace SabreTools.Library.DatFiles
#endregion
#region Logiqx EmuArc
case "Machine.TitleID":
machine.TitleID = value;
break;
case "Machine.Developer":
machine.Developer = value;
break;
case "Machine.Genre":
machine.Genre = value;
break;
case "Machine.Subgenre":
machine.Subgenre = value;
break;
case "Machine.Ratings":
machine.Ratings = value;
break;
case "Machine.Score":
machine.Score = value;
break;
case "Machine.Enabled":
machine.Enabled = value;
break;
case "Machine.HasCrc":
machine.HasCrc = value.AsYesNo();
break;
case "Machine.RelatedTo":
machine.RelatedTo = value;
break;
#endregion
#region SoftwareList
case "Machine.Supported":
@@ -1089,6 +1129,43 @@ namespace SabreTools.Library.DatFiles
#endregion
#region Logiqx EmuArc
case "titleid":
case "title id":
case "title-id":
return "Machine.TitleID";
case "developer":
return "Machine.Developer";
case "genre":
return "Machine.Genre";
case "subgenre":
return "Machine.Subgenre";
case "ratings":
return "Machine.Ratings";
case "score":
return "Machine.Score";
case "enabled":
return "Machine.Enabled";
case "hascrc":
case "has crc":
case "has-crc":
return "Machine.HasCrc";
case "relatedto":
case "related to":
case "related-to":
return "Machine.RelatedTo";
#endregion
#region SoftwareList
case "supported":