mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-04-28 17:37:47 +00:00
40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
using SabreTools.Serialization.Interfaces;
|
|
|
|
namespace SabreTools.Serialization.Strings
|
|
{
|
|
public partial class XMID : IStringSerializer<Models.Xbox.XMID>
|
|
{
|
|
/// <inheritdoc/>
|
|
public Models.Xbox.XMID? Deserialize(string? str)
|
|
{
|
|
if (string.IsNullOrEmpty(str))
|
|
return null;
|
|
|
|
string xmid = str!.TrimEnd('\0');
|
|
if (string.IsNullOrEmpty(xmid))
|
|
return null;
|
|
|
|
return ParseXMID(xmid);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Parse an XGD2/3 XMID string
|
|
/// </summary>
|
|
/// <param name="xmidString">XMID string to attempt to parse</param>
|
|
/// <returns>Filled XMID on success, null on error</returns>
|
|
private static Models.Xbox.XMID? ParseXMID(string? xmidString)
|
|
{
|
|
if (xmidString == null || xmidString.Length != 8)
|
|
return null;
|
|
|
|
var xmid = new Models.Xbox.XMID();
|
|
|
|
xmid.PublisherIdentifier = xmidString.Substring(0, 2);
|
|
xmid.GameID = xmidString.Substring(2, 3);
|
|
xmid.VersionNumber = xmidString.Substring(5, 2);
|
|
xmid.RegionIdentifier = xmidString[7];
|
|
|
|
return xmid;
|
|
}
|
|
}
|
|
} |