45 lines
1.2 KiB
C#
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;
|
|
}
|
|
}
|
|
} |