Trurip finally gets integrated, more at 11

This commit is contained in:
Matt Nadareski
2026-04-04 15:17:58 -04:00
parent 12e1086838
commit d08427f1ba
11 changed files with 279 additions and 339 deletions

View File

@@ -51,6 +51,12 @@ namespace SabreTools.Metadata.DatItems
set => _internal.Control = value;
}
public string? CRC
{
get => _internal.CRC;
set => _internal.CRC = value;
}
public string? Country
{
get => _internal.Country;
@@ -63,6 +69,12 @@ namespace SabreTools.Metadata.DatItems
set => _internal.Description = value;
}
public string? Developer
{
get => _internal.Developer;
set => _internal.Developer = value;
}
public string? DirName
{
get => _internal.DirName;
@@ -93,6 +105,12 @@ namespace SabreTools.Metadata.DatItems
set => _internal.Emulator = value;
}
public string? Enabled
{
get => _internal.Enabled;
set => _internal.Enabled = value;
}
public string? Extra
{
get => _internal.Extra;
@@ -111,6 +129,12 @@ namespace SabreTools.Metadata.DatItems
set => _internal.GenMSXID = value;
}
public string? Genre
{
get => _internal.Genre;
set => _internal.Genre = value;
}
public string? Hash
{
get => _internal.Hash;
@@ -219,12 +243,24 @@ namespace SabreTools.Metadata.DatItems
set => _internal.Publisher = value;
}
public string? Ratings
{
get => _internal.Ratings;
set => _internal.Ratings = value;
}
public string? RebuildTo
{
get => _internal.RebuildTo;
set => _internal.RebuildTo = value;
}
public string? RelatedTo
{
get => _internal.RelatedTo;
set => _internal.RelatedTo = value;
}
public string? ReleaseNumber
{
get => _internal.ReleaseNumber;
@@ -261,6 +297,18 @@ namespace SabreTools.Metadata.DatItems
set => _internal.SaveType = value;
}
public string? Score
{
get => _internal.Score;
set => _internal.Score = value;
}
public string? Source
{
get => _internal.Source;
set => _internal.Source = value;
}
public string? SourceFile
{
get => _internal.SourceFile;
@@ -279,6 +327,12 @@ namespace SabreTools.Metadata.DatItems
set => _internal.Status = value;
}
public string? Subgenre
{
get => _internal.Subgenre;
set => _internal.Subgenre = value;
}
public Data.Models.Metadata.Supported? Supported
{
get => _internal.Supported;
@@ -297,6 +351,12 @@ namespace SabreTools.Metadata.DatItems
set => _internal.Tags = value;
}
public string? TitleID
{
get => _internal.TitleID;
set => _internal.TitleID = value;
}
public string? Url
{
get => _internal.Url;
@@ -321,7 +381,6 @@ namespace SabreTools.Metadata.DatItems
public Machine(Data.Models.Metadata.Machine machine)
{
_internal = machine.DeepClone() as Data.Models.Metadata.Machine ?? [];
Remove(Data.Models.Metadata.Machine.TruripKey);
// Process flag values
if (Im1CRC is not null)
@@ -329,11 +388,6 @@ namespace SabreTools.Metadata.DatItems
if (Im2CRC is not null)
Im2CRC = TextHelper.NormalizeCRC32(Im2CRC);
// Handle Trurip object, if it exists
var truripItem = machine.Read<Data.Models.Logiqx.Trurip>(Data.Models.Metadata.Machine.TruripKey);
if (truripItem is not null)
Write(Data.Models.Metadata.Machine.TruripKey, new Trurip(truripItem));
}
#endregion

View File

@@ -1,146 +0,0 @@
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Data.Extensions;
namespace SabreTools.Metadata.DatItems
{
/// <summary>
/// Represents TruRip/EmuArc-specific values on a machine
/// </summary>
[JsonObject("trurip"), XmlRoot("trurip")]
public sealed class Trurip : ICloneable
{
#region Fields
/// <summary>
/// Title ID
/// </summary>
[JsonProperty("titleid", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("titleid")]
public string? TitleID { get; set; } = null;
/// <summary>
/// Machine developer
/// </summary>
[JsonProperty("developer", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("developer")]
public string? Developer { get; set; } = null;
/// <summary>
/// Game genre
/// </summary>
[JsonProperty("genre", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("genre")]
public string? Genre { get; set; } = null;
/// <summary>
/// Game subgenre
/// </summary>
[JsonProperty("subgenre", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("subgenre")]
public string? Subgenre { get; set; } = null;
/// <summary>
/// Game ratings
/// </summary>
[JsonProperty("ratings", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("ratings")]
public string? Ratings { get; set; } = null;
/// <summary>
/// Game score
/// </summary>
[JsonProperty("score", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("score")]
public string? Score { get; set; } = null;
/// <summary>
/// Is the machine enabled
/// </summary>
[JsonProperty("enabled", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("enabled")]
public string? Enabled { get; set; } = null; // bool?
/// <summary>
/// Does the game have a CRC check
/// </summary>
[JsonProperty("hascrc", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("hascrc")]
public bool? Crc { get; set; } = null;
[JsonIgnore]
public bool CrcSpecified { get { return Crc is not null; } }
/// <summary>
/// Machine relations
/// </summary>
[JsonProperty("relatedto", DefaultValueHandling = DefaultValueHandling.Ignore)]
[XmlElement("relatedto")]
public string? RelatedTo { get; set; } = null;
#endregion
#region Constructors
public Trurip() { }
public Trurip(Data.Models.Logiqx.Trurip trurip)
{
TitleID = trurip.TitleID;
Developer = trurip.Developer;
Genre = trurip.Genre;
Subgenre = trurip.Subgenre;
Ratings = trurip.Ratings;
Score = trurip.Score;
Enabled = trurip.Enabled;
Crc = trurip.CRC.AsYesNo();
RelatedTo = trurip.RelatedTo;
}
#endregion
#region Cloning methods
/// <summary>
/// Create a clone of the current object
/// </summary>
/// <returns>New object with the same values as the current one</returns>
public object Clone()
{
return new Trurip()
{
TitleID = this.TitleID,
Developer = this.Developer,
Genre = this.Genre,
Subgenre = this.Subgenre,
Ratings = this.Ratings,
Score = this.Score,
Enabled = this.Enabled,
Crc = this.Crc,
RelatedTo = this.RelatedTo,
};
}
/// <summary>
/// Convert to the internal Logiqx model
/// </summary>
public Data.Models.Logiqx.Trurip ConvertToLogiqx()
{
return new Data.Models.Logiqx.Trurip()
{
TitleID = this.TitleID,
Developer = this.Developer,
Genre = this.Genre,
Subgenre = this.Subgenre,
Ratings = this.Ratings,
Score = this.Score,
Enabled = this.Enabled,
CRC = this.Crc.FromYesNo(),
RelatedTo = this.RelatedTo,
};
}
#endregion
}
}