MachineType is common, add Logiqx header values

This commit is contained in:
Matt Nadareski
2020-08-20 15:39:32 -07:00
parent 5ef365249f
commit e65b45b80f
9 changed files with 145 additions and 82 deletions

View File

@@ -183,6 +183,7 @@ namespace SabreTools.Library.DatFiles
/// <summary> /// <summary>
/// Debug build flag /// Debug build flag
/// </summary> /// </summary>
/// <remarks>Also in Logiqx</remarks>
[JsonProperty("debug")] [JsonProperty("debug")]
public bool? Debug { get; set; } = false; public bool? Debug { get; set; } = false;
@@ -194,6 +195,16 @@ namespace SabreTools.Library.DatFiles
#endregion #endregion
#region Logiqx
/// <summary>
/// Build version
/// </summary>
[JsonProperty("build")]
public string Build { get; set; }
#endregion
#region Missfile Fields #region Missfile Fields
/// <summary> /// <summary>

View File

@@ -227,6 +227,15 @@ namespace SabreTools.Library.DatFiles
#endregion #endregion
#region Logiqx
case "build":
content = jtr.ReadAsString();
Header.Build = (Header.Build == null ? content : Header.Build);
break;
#endregion
default: default:
break; break;
} }
@@ -341,6 +350,24 @@ namespace SabreTools.Library.DatFiles
break; break;
case "sampleof": case "sampleof":
machine.SampleOf = jtr.ReadAsString(); machine.SampleOf = jtr.ReadAsString();
break;
case "isbios":
string isbios = jtr.ReadAsString();
if (string.Equals(isbios, "yes", StringComparison.OrdinalIgnoreCase))
machine.MachineType &= MachineType.Bios;
break;
case "isdevice":
string isdevice = jtr.ReadAsString();
if (string.Equals(isdevice, "yes", StringComparison.OrdinalIgnoreCase))
machine.MachineType &= MachineType.Device;
break;
case "ismechanical":
string ismechanical = jtr.ReadAsString();
if (string.Equals(ismechanical, "yes", StringComparison.OrdinalIgnoreCase))
machine.MachineType &= MachineType.Mechanical;
break; break;
case "items": case "items":
ReadItems(sr, jtr, filename, indexId, machine); ReadItems(sr, jtr, filename, indexId, machine);
@@ -412,24 +439,6 @@ namespace SabreTools.Library.DatFiles
} }
break; break;
case "isbios":
string isbios = jtr.ReadAsString();
if (string.Equals(isbios, "yes", StringComparison.OrdinalIgnoreCase))
machine.MachineType &= MachineType.Bios;
break;
case "isdevice":
string isdevice = jtr.ReadAsString();
if (string.Equals(isdevice, "yes", StringComparison.OrdinalIgnoreCase))
machine.MachineType &= MachineType.Device;
break;
case "ismechanical":
string ismechanical = jtr.ReadAsString();
if (string.Equals(ismechanical, "yes", StringComparison.OrdinalIgnoreCase))
machine.MachineType &= MachineType.Mechanical;
break;
// Logiqx // Logiqx
case "board": case "board":
@@ -1023,6 +1032,16 @@ namespace SabreTools.Library.DatFiles
#endregion #endregion
#region Logiqx
if (!string.IsNullOrWhiteSpace(Header.Build))
{
jtw.WritePropertyName("build");
jtw.WriteValue(Header.Build);
}
#endregion
// End header // End header
jtw.WriteEndObject(); jtw.WriteEndObject();
@@ -1105,6 +1124,24 @@ namespace SabreTools.Library.DatFiles
jtw.WritePropertyName("sampleof"); jtw.WritePropertyName("sampleof");
jtw.WriteValue(datItem.Machine.SampleOf); jtw.WriteValue(datItem.Machine.SampleOf);
} }
if (!Header.ExcludeFields.Contains(Field.MachineType))
{
if (datItem.Machine.MachineType.HasFlag(MachineType.Bios))
{
jtw.WritePropertyName("isbios");
jtw.WriteValue("yes");
}
if (datItem.Machine.MachineType.HasFlag(MachineType.Device))
{
jtw.WritePropertyName("isdevice");
jtw.WriteValue("yes");
}
if (datItem.Machine.MachineType.HasFlag(MachineType.Mechanical))
{
jtw.WritePropertyName("ismechanical");
jtw.WriteValue("yes");
}
}
// AttractMode // AttractMode
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Players, Header.ExcludeFields))) if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Players, Header.ExcludeFields)))
@@ -1198,24 +1235,6 @@ namespace SabreTools.Library.DatFiles
jtw.WriteEndArray(); jtw.WriteEndArray();
} }
if (!Header.ExcludeFields.Contains(Field.MachineType))
{
if (datItem.Machine.MachineType.HasFlag(MachineType.Bios))
{
jtw.WritePropertyName("isbios");
jtw.WriteValue("yes");
}
if (datItem.Machine.MachineType.HasFlag(MachineType.Device))
{
jtw.WritePropertyName("isdevice");
jtw.WriteValue("yes");
}
if (datItem.Machine.MachineType.HasFlag(MachineType.Mechanical))
{
jtw.WritePropertyName("ismechanical");
jtw.WriteValue("yes");
}
}
// Logiqx // Logiqx
if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Board, Header.ExcludeFields))) if (!string.IsNullOrWhiteSpace(datItem.GetField(Field.Board, Header.ExcludeFields)))

View File

@@ -76,8 +76,8 @@ namespace SabreTools.Library.DatFiles
{ {
// The datafile tag can have some attributes // The datafile tag can have some attributes
case "datafile": case "datafile":
// string build = xtr.GetAttribute("build"); Header.Build = (Header.Build == null ? xtr.GetAttribute("build") : Header.Build);
// string debug = xtr.GetAttribute("debug"); // (yes|no) "no" Header.Debug = (Header.Debug == null ? xtr.GetAttribute("debug").AsYesNo() : Header.Debug);
xtr.Read(); xtr.Read();
break; break;
@@ -776,6 +776,21 @@ namespace SabreTools.Library.DatFiles
xtw.WriteStartElement("datafile"); xtw.WriteStartElement("datafile");
if (Header.Build != null)
xtw.WriteAttributeString("build", Header.Build);
if (Header.Debug != null)
{
switch (Header.Debug)
{
case true:
xtw.WriteAttributeString("debug", "yes");
break;
case false:
xtw.WriteAttributeString("debug", "no");
break;
}
}
xtw.WriteStartElement("header"); xtw.WriteStartElement("header");
xtw.WriteElementString("name", Header.Name); xtw.WriteElementString("name", Header.Name);
xtw.WriteElementString("description", Header.Description); xtw.WriteElementString("description", Header.Description);

View File

@@ -200,6 +200,14 @@ namespace SabreTools.Library.DatFiles
#endregion #endregion
#region Logiqx
case "DatFile.Build":
Header.Build = (Header.Build == null ? value : Header.Build);
break;
#endregion
#endregion // DatFile #endregion // DatFile
#region Machine #region Machine
@@ -246,6 +254,10 @@ namespace SabreTools.Library.DatFiles
machine.SampleOf = value; machine.SampleOf = value;
break; break;
case "Machine.MachineType":
machine.MachineType = value.AsMachineType();
break;
#endregion #endregion
#region AttractMode #region AttractMode
@@ -321,10 +333,6 @@ namespace SabreTools.Library.DatFiles
break; break;
case "Machine.MachineType":
machine.MachineType = value.AsMachineType();
break;
#endregion #endregion
#region Logiqx #region Logiqx
@@ -751,6 +759,13 @@ namespace SabreTools.Library.DatFiles
#endregion #endregion
#region Logiqx
case "build":
return "DatFile.Build";
#endregion
#endregion // DatFile #endregion // DatFile
#region Machine #region Machine
@@ -803,6 +818,14 @@ namespace SabreTools.Library.DatFiles
case "sampleof": case "sampleof":
return "Machine.SampleOf"; return "Machine.SampleOf";
case "gametype":
case "game type":
case "game-type":
case "machinetype":
case "machine type":
case "machine-type":
return "Machine.MachineType";
#endregion #endregion
#region AttractMode #region AttractMode
@@ -861,14 +884,6 @@ namespace SabreTools.Library.DatFiles
case "infos": case "infos":
return "Machine.Infos"; return "Machine.Infos";
case "gametype":
case "game type":
case "game-type":
case "machinetype":
case "machine type":
case "machine-type":
return "Machine.MachineType";
#endregion #endregion
#region Logiqx #region Logiqx

View File

@@ -157,6 +157,7 @@ namespace SabreTools.Library.DatItems
Field.RomOf, Field.RomOf,
Field.CloneOf, Field.CloneOf,
Field.SampleOf, Field.SampleOf,
Field.MachineType,
// AttractMode // AttractMode
Field.Players, Field.Players,
@@ -173,7 +174,6 @@ namespace SabreTools.Library.DatItems
Field.Devices, Field.Devices,
Field.SlotOptions, Field.SlotOptions,
Field.Infos, Field.Infos,
Field.MachineType,
// Logiqx // Logiqx
Field.Board, Field.Board,

View File

@@ -37,6 +37,7 @@ namespace SabreTools.Library.DatItems
RomOf, RomOf,
CloneOf, CloneOf,
SampleOf, SampleOf,
MachineType,
// AttractMode Machine // AttractMode Machine
Players, Players,
@@ -53,7 +54,6 @@ namespace SabreTools.Library.DatItems
Devices, Devices,
SlotOptions, SlotOptions,
Infos, Infos,
MachineType,
// Logiqx Machine // Logiqx Machine
Board, Board,

View File

@@ -25,6 +25,7 @@ namespace SabreTools.Library.DatItems
/// <summary> /// <summary>
/// Additional notes /// Additional notes
/// </summary> /// </summary>
/// <remarks>Known as "Extra" in AttractMode</remarks>
[JsonProperty("comment")] [JsonProperty("comment")]
public string Comment { get; set; } = null; public string Comment { get; set; } = null;
@@ -76,6 +77,12 @@ namespace SabreTools.Library.DatItems
[JsonProperty("sampleof")] [JsonProperty("sampleof")]
public string SampleOf { get; set; } = null; public string SampleOf { get; set; } = null;
/// <summary>
/// Type of the machine
/// </summary>
[JsonProperty("type")]
public MachineType MachineType { get; set; } = MachineType.NULL;
#endregion #endregion
#region AttractMode Fields #region AttractMode Fields
@@ -129,6 +136,7 @@ namespace SabreTools.Library.DatItems
/// <summary> /// <summary>
/// Emulator source file related to the machine /// Emulator source file related to the machine
/// </summary> /// </summary>
/// <remarks>Also in Logiqx</remarks>
[JsonProperty("sourcefile")] [JsonProperty("sourcefile")]
public string SourceFile { get; set; } = null; public string SourceFile { get; set; } = null;
@@ -136,6 +144,7 @@ namespace SabreTools.Library.DatItems
/// Machine runnable status /// Machine runnable status
/// </summary> /// </summary>
/// <remarks>yes = true, partial = null, no = false</remarks> /// <remarks>yes = true, partial = null, no = false</remarks>
/// <remarks>Also in Logiqx</remarks>
[JsonProperty("runnable")] [JsonProperty("runnable")]
public bool? Runnable { get; set; } = null; public bool? Runnable { get; set; } = null;
@@ -157,12 +166,6 @@ namespace SabreTools.Library.DatItems
[JsonProperty("infos")] [JsonProperty("infos")]
public List<KeyValuePair<string, string>> Infos { get; set; } = null; public List<KeyValuePair<string, string>> Infos { get; set; } = null;
/// <summary>
/// Type of the machine
/// </summary>
[JsonProperty("type")]
public MachineType MachineType { get; set; } = MachineType.NULL;
#endregion #endregion
#region Logiqx Fields #region Logiqx Fields
@@ -239,6 +242,9 @@ namespace SabreTools.Library.DatItems
case Field.SampleOf: case Field.SampleOf:
fieldValue = SampleOf; fieldValue = SampleOf;
break; break;
case Field.MachineType:
fieldValue = MachineType.ToString();
break;
// AttractMode // AttractMode
case Field.Players: case Field.Players:
@@ -279,9 +285,6 @@ namespace SabreTools.Library.DatItems
case Field.Infos: case Field.Infos:
fieldValue = string.Join(";", (Infos ?? new List<KeyValuePair<string, string>>()).Select(i => $"{i.Key}={i.Value}")); fieldValue = string.Join(";", (Infos ?? new List<KeyValuePair<string, string>>()).Select(i => $"{i.Key}={i.Value}"));
break; break;
case Field.MachineType:
fieldValue = MachineType.ToString();
break;
// Logiqx // Logiqx
case Field.Board: case Field.Board:
@@ -645,6 +648,9 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.SampleOf)) if (fields.Contains(Field.SampleOf))
SampleOf = null; SampleOf = null;
if (fields.Contains(Field.MachineType))
MachineType = MachineType.NULL;
#endregion #endregion
#region AttractMode #region AttractMode
@@ -689,9 +695,6 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.Infos)) if (fields.Contains(Field.Infos))
Infos = null; Infos = null;
if (fields.Contains(Field.MachineType))
MachineType = MachineType.NULL;
#endregion #endregion
#region Logiqx #region Logiqx
@@ -759,6 +762,9 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.SampleOf)) if (fields.Contains(Field.SampleOf))
SampleOf = machine.SampleOf; SampleOf = machine.SampleOf;
if (fields.Contains(Field.MachineType))
MachineType = machine.MachineType;
#endregion #endregion
#region AttractMode #region AttractMode
@@ -803,9 +809,6 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.Infos)) if (fields.Contains(Field.Infos))
Infos = machine.Infos; Infos = machine.Infos;
if (fields.Contains(Field.MachineType))
MachineType = machine.MachineType;
#endregion #endregion
#region Logiqx #region Logiqx

View File

@@ -490,6 +490,13 @@ namespace SabreTools.Library.Filtering
SampleOf.PositiveSet.Add(value); SampleOf.PositiveSet.Add(value);
break; break;
case Field.MachineType:
if (negate)
MachineTypes.Negative |= value.AsMachineType();
else
MachineTypes.Positive |= value.AsMachineType();
break;
#endregion #endregion
#region AttractMode #region AttractMode
@@ -575,13 +582,6 @@ namespace SabreTools.Library.Filtering
SlotOptions.PositiveSet.Add(value); SlotOptions.PositiveSet.Add(value);
break; break;
case Field.MachineType:
if (negate)
MachineTypes.Negative |= value.AsMachineType();
else
MachineTypes.Positive |= value.AsMachineType();
break;
#endregion #endregion
#region Logiqx #region Logiqx

View File

@@ -176,6 +176,14 @@ namespace SabreTools.Library.Tools
case "sampleof": case "sampleof":
return Field.SampleOf; return Field.SampleOf;
case "gametype":
case "game type":
case "game-type":
case "machinetype":
case "machine type":
case "machine-type":
return Field.MachineType;
#endregion #endregion
#region AttractMode #region AttractMode
@@ -234,14 +242,6 @@ namespace SabreTools.Library.Tools
case "infos": case "infos":
return Field.Infos; return Field.Infos;
case "gametype":
case "game type":
case "game-type":
case "machinetype":
case "machine type":
case "machine-type":
return Field.MachineType;
#endregion #endregion
#region Logiqx #region Logiqx