mirror of
https://github.com/jie65535/GrasscutterCommandGenerator.git
synced 2025-10-24 20:49:47 +08:00
Add Command Version Control
Add more comments(zh) Optimize code structure Update the loading order to avoid repeated loading to optimize startup speed.
This commit is contained in:
94
Source/GrasscutterTools/Game/CommandVersion.cs
Normal file
94
Source/GrasscutterTools/Game/CommandVersion.cs
Normal file
@@ -0,0 +1,94 @@
|
||||
using System;
|
||||
|
||||
namespace GrasscutterTools.Game
|
||||
{
|
||||
/// <summary>
|
||||
/// 命令版本
|
||||
///
|
||||
/// 用法:
|
||||
/// ver = Version.TryParse(input, out Version current) ? new CommandVersion(current) : CommandVersion.Latest();
|
||||
///
|
||||
/// </summary>
|
||||
internal class CommandVersion
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化当前版本
|
||||
/// </summary>
|
||||
/// <param name="current"></param>
|
||||
public CommandVersion(Version current)
|
||||
{
|
||||
this.current = current ?? throw new ArgumentNullException(nameof(current));
|
||||
}
|
||||
|
||||
private Version current;
|
||||
|
||||
/// <summary>
|
||||
/// 当前命令版本
|
||||
/// </summary>
|
||||
public Version Current
|
||||
{
|
||||
get => current;
|
||||
set
|
||||
{
|
||||
if (current != value)
|
||||
{
|
||||
current = value;
|
||||
OnVersionChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 选中版本改变事件
|
||||
/// </summary>
|
||||
public event EventHandler VersionChanged;
|
||||
|
||||
/// <summary>
|
||||
/// 触发版本更改事件
|
||||
/// </summary>
|
||||
private void OnVersionChanged() => VersionChanged?.Invoke(this, EventArgs.Empty);
|
||||
|
||||
/// <summary>
|
||||
/// 当前支持的最新版本 - 当未选择版本时,默认为最新版本
|
||||
/// </summary>
|
||||
public static CommandVersion Latest() => new CommandVersion(List[List.Length - 1]);
|
||||
|
||||
|
||||
#region - 版本列表 Version List -
|
||||
|
||||
// 忽略更早以前的版本
|
||||
/// <summary>
|
||||
/// v1.2.1 2022/6/18
|
||||
/// git 30c7bb94439a123417a6a1e0116acd3c40f2d115
|
||||
/// </summary>
|
||||
public static readonly Version V1_2_1 = new Version(1, 2, 1);
|
||||
|
||||
/// <summary>
|
||||
/// v1.2.1 -> v1.2.2 2022/6/22
|
||||
/// git aa43943025fefcda9739c9fcf242e67f1a7b83b4
|
||||
/// </summary>
|
||||
public static readonly Version V1_2_2 = new Version(1, 2, 2);
|
||||
|
||||
/// <summary>
|
||||
/// v1.2.2 -> v1.2.3 2022/7/21
|
||||
/// git a07b3f21e6fbeb9abfad8862d6fa0dc4a1c3c1a3
|
||||
/// </summary>
|
||||
public static readonly Version V1_2_3 = new Version(1, 2, 3);
|
||||
|
||||
// More...
|
||||
/// <summary>
|
||||
/// v1.2.3 -> v1.2.4 2022/7/21
|
||||
/// git hash
|
||||
/// </summary>
|
||||
//public static readonly Version V1_2_4 = new Version(1, 2, 4);
|
||||
|
||||
public static Version[] List { get; } = new Version[] {
|
||||
V1_2_1,
|
||||
V1_2_2,
|
||||
V1_2_3,
|
||||
//V1_2_4,
|
||||
};
|
||||
|
||||
#endregion - 版本列表 Version List -
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user