Files
BeWoPlaner/BeWo/Core/BeWoAppVersion.cs

75 lines
1.8 KiB
C#
Raw Permalink Normal View History

2025-08-11 12:52:19 +02:00
using BS.Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Core
{
public class BeWoAppVersion
{
public Version BaseVersion { get; }
public BeWoClientReleaseStage Stage { get; }
2025-12-01 13:28:36 +01:00
public Version FeatureVersion { get; }
2025-08-11 12:52:19 +02:00
public BeWoClientFeature Feature { get; }
2025-08-11 13:05:31 +02:00
public static bool IsInDeveloperMode { get; private set; }
2025-08-11 12:52:19 +02:00
public BeWoAppVersion(Version baseVersion, BeWoClientReleaseStage stage, Version stageVersion, BeWoClientFeature feature = BeWoClientFeature.None)
{
BaseVersion = baseVersion;
Stage = stage;
2025-12-01 13:28:36 +01:00
FeatureVersion = stageVersion;
2025-08-11 12:52:19 +02:00
Feature = feature;
}
2025-08-11 13:05:31 +02:00
public void TryActiveDeveloperMode(string[] args)
{
#if !DEBUG
if (Stage != BeWoClientReleaseStage.Sandbox && Stage != BeWoClientReleaseStage.ProofOfConcept)
2025-08-11 13:05:31 +02:00
return;
if (args.All(x => x != "/bewodevmode" && x != "--bewodevmode"))
return;
#endif
// Darf noch nicht aktiviert sein
2025-08-11 13:05:31 +02:00
if (IsInDeveloperMode)
throw new NotImplementedException();
IsInDeveloperMode = true;
}
2025-08-11 12:52:19 +02:00
public override string ToString()
{
2025-12-01 13:28:36 +01:00
var sb = new StringBuilder();
sb.Append($"Version {BaseVersion}");
2025-08-11 12:52:19 +02:00
if (Stage == BeWoClientReleaseStage.Release)
2025-12-01 13:28:36 +01:00
return sb.ToString();
2025-08-11 12:52:19 +02:00
2025-12-01 13:28:36 +01:00
sb.Append(" ");
2025-08-11 12:52:19 +02:00
if (Feature != BeWoClientFeature.None)
{
2025-12-01 13:28:36 +01:00
// https://stackoverflow.com/questions/9684619/label-doesnt-display-character
sb.Append(Feature.ToString().ToLower());
sb.Append("__");
sb.Append(FeatureVersion);
sb.Append("__");
2025-08-11 12:52:19 +02:00
}
2025-12-01 13:28:36 +01:00
sb.Append($"{Stage.ToString().ToLower()}");
if (Stage == BeWoClientReleaseStage.Sandbox || Stage == BeWoClientReleaseStage.ProofOfConcept)
2025-08-11 13:05:31 +02:00
{
2025-12-01 13:28:36 +01:00
sb.Append($" (dev:{(IsInDeveloperMode ? "1" : "0")})");
2025-08-11 13:05:31 +02:00
}
2025-12-01 13:28:36 +01:00
return sb.ToString();
2025-08-11 12:52:19 +02:00
}
}
}