From a7a5521be127fa17d5e98ea392839865b0f6220c Mon Sep 17 00:00:00 2001 From: ww-rm Date: Thu, 20 Mar 2025 14:20:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E7=89=88?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpineViewer/Dialogs/BatchOpenSpineDialog.cs | 4 ++-- SpineViewer/Dialogs/ConvertFileFormatDialog.cs | 7 ++++++- SpineViewer/Dialogs/OpenSpineDialog.cs | 4 ++-- SpineViewer/Spine/Version.cs | 7 +++++-- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/SpineViewer/Dialogs/BatchOpenSpineDialog.cs b/SpineViewer/Dialogs/BatchOpenSpineDialog.cs index 3709d97..ef5b06d 100644 --- a/SpineViewer/Dialogs/BatchOpenSpineDialog.cs +++ b/SpineViewer/Dialogs/BatchOpenSpineDialog.cs @@ -22,7 +22,7 @@ namespace SpineViewer.Dialogs comboBox_Version.DataSource = VersionHelper.Versions.ToList(); comboBox_Version.DisplayMember = "Value"; comboBox_Version.ValueMember = "Key"; - comboBox_Version.SelectedValue = Spine.Version.V38; + comboBox_Version.SelectedValue = Spine.Version.Auto; } private void BatchOpenSpineDialog_Load(object sender, EventArgs e) @@ -60,7 +60,7 @@ namespace SpineViewer.Dialogs } } - if (!Spine.Spine.ImplementedVersions.Contains(version)) + if (version != Spine.Version.Auto && !Spine.Spine.ImplementedVersions.Contains(version)) { MessageBox.Show($"{version.String()} 版本尚未实现(咕咕咕~)", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; diff --git a/SpineViewer/Dialogs/ConvertFileFormatDialog.cs b/SpineViewer/Dialogs/ConvertFileFormatDialog.cs index 0fca2ad..85fc584 100644 --- a/SpineViewer/Dialogs/ConvertFileFormatDialog.cs +++ b/SpineViewer/Dialogs/ConvertFileFormatDialog.cs @@ -22,7 +22,12 @@ namespace SpineViewer.Dialogs public ConvertFileFormatDialog() { InitializeComponent(); - comboBox_SourceVersion.DataSource = VersionHelper.Versions.ToList(); + + // XXX: 文件格式转换暂时不支持自动检测版本 + var impVersions = VersionHelper.Versions.ToDictionary(); + impVersions.Remove(Spine.Version.Auto); + + comboBox_SourceVersion.DataSource = impVersions.ToList(); comboBox_SourceVersion.DisplayMember = "Value"; comboBox_SourceVersion.ValueMember = "Key"; comboBox_SourceVersion.SelectedValue = Spine.Version.V38; diff --git a/SpineViewer/Dialogs/OpenSpineDialog.cs b/SpineViewer/Dialogs/OpenSpineDialog.cs index f73cfaa..e99c62a 100644 --- a/SpineViewer/Dialogs/OpenSpineDialog.cs +++ b/SpineViewer/Dialogs/OpenSpineDialog.cs @@ -22,7 +22,7 @@ namespace SpineViewer.Dialogs comboBox_Version.DataSource = VersionHelper.Versions.ToList(); comboBox_Version.DisplayMember = "Value"; comboBox_Version.ValueMember = "Key"; - comboBox_Version.SelectedValue = Spine.Version.V38; + comboBox_Version.SelectedValue = Spine.Version.Auto; } private void OpenSpineDialog_Load(object sender, EventArgs e) @@ -78,7 +78,7 @@ namespace SpineViewer.Dialogs atlasPath = Path.GetFullPath(atlasPath); } - if (!Spine.Spine.ImplementedVersions.Contains(version)) + if (version != Spine.Version.Auto && !Spine.Spine.ImplementedVersions.Contains(version)) { MessageBox.Show($"{version.String()} 版本尚未实现(咕咕咕~)", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; diff --git a/SpineViewer/Spine/Version.cs b/SpineViewer/Spine/Version.cs index eb93c09..ab0e47f 100644 --- a/SpineViewer/Spine/Version.cs +++ b/SpineViewer/Spine/Version.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Reflection; @@ -13,7 +14,8 @@ namespace SpineViewer.Spine /// /// 描述缓存 /// - public static readonly Dictionary Versions = []; + public static readonly ReadOnlyDictionary Versions; + private static readonly Dictionary versions = []; static VersionHelper() { @@ -22,8 +24,9 @@ namespace SpineViewer.Spine { var field = typeof(Version).GetField(value.ToString()); var attribute = field?.GetCustomAttribute(); - Versions[(Version)value] = attribute?.Description ?? value.ToString(); + versions[(Version)value] = attribute?.Description ?? value.ToString(); } + Versions = versions.AsReadOnly(); } ///