Kursach_StealthAction/Assets/Tremble/Import/Q3Map2VersionInfo.cs
2026-10-11 19:16:11 +03:00

45 lines
1.2 KiB
C#

//
// This file is part of the Tremble package by Tiny Goose.
// Copyright (c) 2024-2026 TinyGoose Ltd., All Rights Reserved.
//
using System;
namespace TinyGoose.Tremble
{
public struct Q3Map2VersionInfo
{
public int Major;
public int Minor;
public int Patch;
public char Letter;
public string GitHash;
public override string ToString() => $"v{Major}.{Minor}.{Patch}{Letter}-git-{GitHash}";
private static Q3Map2VersionInfo Empty => new() { Major = 0, Minor = 0, Patch = 0, Letter = 'x', GitHash = "deadbeef" };
public static Q3Map2VersionInfo Parse(string version)
{
if (String.IsNullOrEmpty(version) || !version.ContainsInvariant("-") || !version.ContainsInvariant("."))
return Empty;
string[] rootVersionInfo = version.Split('-');
if (rootVersionInfo.Length != 3)
return Empty;
string[] versionParts = rootVersionInfo[0].Split('.');
if (versionParts.Length != 3)
return Empty;
Q3Map2VersionInfo info;
info.Major = int.Parse(versionParts[0].Substring(1));
info.Minor = int.Parse(versionParts[1]);
info.Patch = int.Parse(versionParts[2].Substring(0, versionParts[2].Length - 1));
info.Letter = versionParts[2][^1];
info.GitHash = rootVersionInfo[2];
return info;
}
}
}