增加运行时标识

This commit is contained in:
ww-rm
2025-03-21 01:05:08 +08:00
parent 8ff99ee925
commit 2535a9ebf9
5 changed files with 37 additions and 16 deletions

View File

@@ -18,7 +18,7 @@ namespace SpineViewer.Dialogs
public BatchOpenSpineDialog() public BatchOpenSpineDialog()
{ {
InitializeComponent(); InitializeComponent();
comboBox_Version.DataSource = VersionHelper.Versions.ToList(); comboBox_Version.DataSource = VersionHelper.Names.ToList();
comboBox_Version.DisplayMember = "Value"; comboBox_Version.DisplayMember = "Value";
comboBox_Version.ValueMember = "Key"; comboBox_Version.ValueMember = "Key";
comboBox_Version.SelectedValue = Spine.Version.Auto; comboBox_Version.SelectedValue = Spine.Version.Auto;
@@ -61,7 +61,7 @@ namespace SpineViewer.Dialogs
if (version != Spine.Version.Auto && !Spine.Spine.ImplementedVersions.Contains(version)) if (version != Spine.Version.Auto && !Spine.Spine.ImplementedVersions.Contains(version))
{ {
MessageBox.Show($"{version.String()} 版本尚未实现(咕咕咕~", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show($"{version.GetName()} 版本尚未实现(咕咕咕~", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return; return;
} }

View File

@@ -24,7 +24,7 @@ namespace SpineViewer.Dialogs
InitializeComponent(); InitializeComponent();
// XXX: 文件格式转换暂时不支持自动检测版本 // XXX: 文件格式转换暂时不支持自动检测版本
var impVersions = VersionHelper.Versions.ToDictionary(); var impVersions = VersionHelper.Names.ToDictionary();
impVersions.Remove(Spine.Version.Auto); impVersions.Remove(Spine.Version.Auto);
comboBox_SourceVersion.DataSource = impVersions.ToList(); comboBox_SourceVersion.DataSource = impVersions.ToList();
@@ -77,13 +77,13 @@ namespace SpineViewer.Dialogs
if (!SkeletonConverter.ImplementedVersions.Contains(sourceVersion)) if (!SkeletonConverter.ImplementedVersions.Contains(sourceVersion))
{ {
MessageBox.Show($"{sourceVersion.String()} 版本尚未实现(咕咕咕~", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show($"{sourceVersion.GetName()} 版本尚未实现(咕咕咕~", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return; return;
} }
if (!SkeletonConverter.ImplementedVersions.Contains(targetVersion)) if (!SkeletonConverter.ImplementedVersions.Contains(targetVersion))
{ {
MessageBox.Show($"{targetVersion.String()} 版本尚未实现(咕咕咕~", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show($"{targetVersion.GetName()} 版本尚未实现(咕咕咕~", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return; return;
} }

View File

@@ -17,7 +17,7 @@ namespace SpineViewer.Dialogs
public OpenSpineDialog() public OpenSpineDialog()
{ {
InitializeComponent(); InitializeComponent();
comboBox_Version.DataSource = VersionHelper.Versions.ToList(); comboBox_Version.DataSource = VersionHelper.Names.ToList();
comboBox_Version.DisplayMember = "Value"; comboBox_Version.DisplayMember = "Value";
comboBox_Version.ValueMember = "Key"; comboBox_Version.ValueMember = "Key";
comboBox_Version.SelectedValue = Spine.Version.Auto; comboBox_Version.SelectedValue = Spine.Version.Auto;
@@ -78,7 +78,7 @@ namespace SpineViewer.Dialogs
if (version != Spine.Version.Auto && !Spine.Spine.ImplementedVersions.Contains(version)) if (version != Spine.Version.Auto && !Spine.Spine.ImplementedVersions.Contains(version))
{ {
MessageBox.Show($"{version.String()} 版本尚未实现(咕咕咕~", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show($"{version.GetName()} 版本尚未实现(咕咕咕~", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return; return;
} }

View File

@@ -18,7 +18,7 @@ namespace SpineViewer.Spine
if (destinationType == typeof(string) && value is Version version) if (destinationType == typeof(string) && value is Version version)
{ {
// 调用自定义的 String() 方法 // 调用自定义的 String() 方法
return version.String(); return version.GetName();
} }
return base.ConvertTo(context, culture, value, destinationType); return base.ConvertTo(context, culture, value, destinationType);

View File

@@ -12,10 +12,15 @@ namespace SpineViewer.Spine
public static class VersionHelper public static class VersionHelper
{ {
/// <summary> /// <summary>
/// 描述缓存 /// 版本名称
/// </summary> /// </summary>
public static readonly ReadOnlyDictionary<Version, string> Versions; public static readonly ReadOnlyDictionary<Version, string> Names;
private static readonly Dictionary<Version, string> versions = []; private static readonly Dictionary<Version, string> names = [];
/// <summary>
/// Runtime 版本字符串
/// </summary>
private static readonly Dictionary<Version, string> runtimes = [];
static VersionHelper() static VersionHelper()
{ {
@@ -24,17 +29,33 @@ namespace SpineViewer.Spine
{ {
var field = typeof(Version).GetField(value.ToString()); var field = typeof(Version).GetField(value.ToString());
var attribute = field?.GetCustomAttribute<DescriptionAttribute>(); var attribute = field?.GetCustomAttribute<DescriptionAttribute>();
versions[(Version)value] = attribute?.Description ?? value.ToString(); names[(Version)value] = attribute?.Description ?? value.ToString();
} }
Versions = versions.AsReadOnly(); Names = names.AsReadOnly();
runtimes[Version.V21] = Assembly.GetAssembly(typeof(SpineRuntime21.Skeleton)).GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
runtimes[Version.V36] = Assembly.GetAssembly(typeof(SpineRuntime36.Skeleton)).GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
runtimes[Version.V37] = Assembly.GetAssembly(typeof(SpineRuntime37.Skeleton)).GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
runtimes[Version.V38] = Assembly.GetAssembly(typeof(SpineRuntime38.Skeleton)).GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
runtimes[Version.V40] = Assembly.GetAssembly(typeof(SpineRuntime40.Skeleton)).GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
runtimes[Version.V41] = Assembly.GetAssembly(typeof(SpineRuntime41.Skeleton)).GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
runtimes[Version.V42] = Assembly.GetAssembly(typeof(SpineRuntime42.Skeleton)).GetCustomAttribute<AssemblyInformationalVersionAttribute>()?.InformationalVersion;
} }
/// <summary> /// <summary>
/// 版本字符串 /// 版本字符串名称
/// </summary> /// </summary>
public static string String(this Version version) public static string GetName(this Version version)
{ {
return Versions.TryGetValue(version, out var description) ? description : version.ToString(); return Names.TryGetValue(version, out var val) ? val : version.ToString();
}
/// <summary>
/// Runtime 版本字符串名称
/// </summary>
public static string GetRuntime(this Version version)
{
return runtimes.TryGetValue(version, out var val) ? val : GetName(version);
} }
} }