From ad39a04fffae222144537e49ad9bfb630c26eecf Mon Sep 17 00:00:00 2001 From: ww-rm Date: Sat, 29 Mar 2025 16:59:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8DSpineVersion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpineViewer/Controls/SpineListView.cs | 4 +- SpineViewer/Dialogs/BatchOpenSpineDialog.cs | 10 ++-- .../Dialogs/ConvertFileFormatDialog.cs | 18 +++---- SpineViewer/Dialogs/OpenSpineDialog.cs | 10 ++-- SpineViewer/MainForm.cs | 4 +- .../SkeletonConverter/SkeletonConverter38.cs | 6 +-- .../Spine/Implementations/Spine/Spine21.cs | 2 +- .../Spine/Implementations/Spine/Spine36.cs | 2 +- .../Spine/Implementations/Spine/Spine37.cs | 2 +- .../Spine/Implementations/Spine/Spine38.cs | 2 +- .../Spine/Implementations/Spine/Spine40.cs | 2 +- .../Spine/Implementations/Spine/Spine41.cs | 2 +- .../Spine/Implementations/Spine/Spine42.cs | 2 +- SpineViewer/Spine/SkeletonConverter.cs | 6 +-- SpineViewer/Spine/Spine.cs | 10 ++-- SpineViewer/Spine/SpineHelper.cs | 54 +++++++++---------- SpineViewer/Spine/TypeConverter.cs | 4 +- 17 files changed, 70 insertions(+), 70 deletions(-) diff --git a/SpineViewer/Controls/SpineListView.cs b/SpineViewer/Controls/SpineListView.cs index b1c4905..18d2db4 100644 --- a/SpineViewer/Controls/SpineListView.cs +++ b/SpineViewer/Controls/SpineListView.cs @@ -219,11 +219,11 @@ namespace SpineViewer.Controls if (MessageBox.Quest($"共发现 {validPaths.Count} 个可加载骨骼,数量较多,是否一次性全部加载?") == DialogResult.Cancel) return; } - BatchAdd(new Dialogs.BatchOpenSpineDialogResult(Spine.Version.Auto, validPaths.ToArray())); + BatchAdd(new Dialogs.BatchOpenSpineDialogResult(SpineVersion.Auto, validPaths.ToArray())); } else if (validPaths.Count > 0) { - Insert(new Dialogs.OpenSpineDialogResult(Spine.Version.Auto, validPaths[0])); + Insert(new Dialogs.OpenSpineDialogResult(SpineVersion.Auto, validPaths[0])); } } diff --git a/SpineViewer/Dialogs/BatchOpenSpineDialog.cs b/SpineViewer/Dialogs/BatchOpenSpineDialog.cs index be2ed8a..76dab4c 100644 --- a/SpineViewer/Dialogs/BatchOpenSpineDialog.cs +++ b/SpineViewer/Dialogs/BatchOpenSpineDialog.cs @@ -24,12 +24,12 @@ namespace SpineViewer.Dialogs comboBox_Version.DataSource = SpineHelper.Names.ToList(); comboBox_Version.DisplayMember = "Value"; comboBox_Version.ValueMember = "Key"; - comboBox_Version.SelectedValue = Spine.Version.Auto; + comboBox_Version.SelectedValue = SpineVersion.Auto; } private void button_Ok_Click(object sender, EventArgs e) { - var version = (Spine.Version)comboBox_Version.SelectedValue; + var version = (SpineVersion)comboBox_Version.SelectedValue; var items = skelFileListBox.Items; @@ -48,7 +48,7 @@ namespace SpineViewer.Dialogs } } - if (version != Spine.Version.Auto && !Spine.Spine.HasImplementation(version)) + if (version != SpineVersion.Auto && !Spine.Spine.HasImplementation(version)) { MessageBox.Info($"{version.GetName()} 版本尚未实现(咕咕咕~)"); return; @@ -67,12 +67,12 @@ namespace SpineViewer.Dialogs /// /// 批量打开对话框结果 /// - public class BatchOpenSpineDialogResult(Spine.Version version, string[] skelPaths) + public class BatchOpenSpineDialogResult(SpineVersion version, string[] skelPaths) { /// /// 版本 /// - public Spine.Version Version => version; + public SpineVersion Version => version; /// /// 路径列表 diff --git a/SpineViewer/Dialogs/ConvertFileFormatDialog.cs b/SpineViewer/Dialogs/ConvertFileFormatDialog.cs index 2da3d3f..0990613 100644 --- a/SpineViewer/Dialogs/ConvertFileFormatDialog.cs +++ b/SpineViewer/Dialogs/ConvertFileFormatDialog.cs @@ -25,21 +25,21 @@ namespace SpineViewer.Dialogs comboBox_SourceVersion.DataSource = SpineHelper.Names.ToList(); comboBox_SourceVersion.DisplayMember = "Value"; comboBox_SourceVersion.ValueMember = "Key"; - comboBox_SourceVersion.SelectedValue = Spine.Version.Auto; + comboBox_SourceVersion.SelectedValue = SpineVersion.Auto; // 目标版本不包含自动 var versionsWithoutAuto = SpineHelper.Names.ToDictionary(); - versionsWithoutAuto.Remove(Spine.Version.Auto); + versionsWithoutAuto.Remove(SpineVersion.Auto); comboBox_TargetVersion.DataSource = versionsWithoutAuto.ToList(); comboBox_TargetVersion.DisplayMember = "Value"; comboBox_TargetVersion.ValueMember = "Key"; - comboBox_TargetVersion.SelectedValue = Spine.Version.V38; + comboBox_TargetVersion.SelectedValue = SpineVersion.V38; } private void button_Ok_Click(object sender, EventArgs e) { - var sourceVersion = (Spine.Version)comboBox_SourceVersion.SelectedValue; - var targetVersion = (Spine.Version)comboBox_TargetVersion.SelectedValue; + var sourceVersion = (SpineVersion)comboBox_SourceVersion.SelectedValue; + var targetVersion = (SpineVersion)comboBox_TargetVersion.SelectedValue; var jsonTarget = radioButton_JsonTarget.Checked; var items = skelFileListBox.Items; @@ -59,7 +59,7 @@ namespace SpineViewer.Dialogs } } - if (sourceVersion != Spine.Version.Auto && !SkeletonConverter.HasImplementation(sourceVersion)) + if (sourceVersion != SpineVersion.Auto && !SkeletonConverter.HasImplementation(sourceVersion)) { MessageBox.Info($"{sourceVersion.GetName()} 版本尚未实现(咕咕咕~)"); return; @@ -84,7 +84,7 @@ namespace SpineViewer.Dialogs /// /// 文件格式转换对话框结果包装类 /// - public class ConvertFileFormatDialogResult(string[] skelPaths, Spine.Version sourceVersion, Spine.Version targetVersion, bool jsonTarget) + public class ConvertFileFormatDialogResult(string[] skelPaths, SpineVersion sourceVersion, SpineVersion targetVersion, bool jsonTarget) { /// /// 骨骼文件路径列表 @@ -94,12 +94,12 @@ namespace SpineViewer.Dialogs /// /// 源版本 /// - public Spine.Version SourceVersion => sourceVersion; + public SpineVersion SourceVersion => sourceVersion; /// /// 目标版本 /// - public Spine.Version TargetVersion => targetVersion; + public SpineVersion TargetVersion => targetVersion; /// /// 目标格式是否为 Json diff --git a/SpineViewer/Dialogs/OpenSpineDialog.cs b/SpineViewer/Dialogs/OpenSpineDialog.cs index 464e714..354cadb 100644 --- a/SpineViewer/Dialogs/OpenSpineDialog.cs +++ b/SpineViewer/Dialogs/OpenSpineDialog.cs @@ -23,7 +23,7 @@ namespace SpineViewer.Dialogs comboBox_Version.DataSource = SpineHelper.Names.ToList(); comboBox_Version.DisplayMember = "Value"; comboBox_Version.ValueMember = "Key"; - comboBox_Version.SelectedValue = Spine.Version.Auto; + comboBox_Version.SelectedValue = SpineVersion.Auto; } private void OpenSpineDialog_Load(object sender, EventArgs e) @@ -53,7 +53,7 @@ namespace SpineViewer.Dialogs { var skelPath = textBox_SkelPath.Text; var atlasPath = textBox_AtlasPath.Text; - var version = (Spine.Version)comboBox_Version.SelectedValue; + var version = (SpineVersion)comboBox_Version.SelectedValue; if (!File.Exists(skelPath)) { @@ -79,7 +79,7 @@ namespace SpineViewer.Dialogs atlasPath = Path.GetFullPath(atlasPath); } - if (version != Spine.Version.Auto && !Spine.Spine.HasImplementation(version)) + if (version != SpineVersion.Auto && !Spine.Spine.HasImplementation(version)) { MessageBox.Info($"{version.GetName()} 版本尚未实现(咕咕咕~)"); return; @@ -98,12 +98,12 @@ namespace SpineViewer.Dialogs /// /// 打开骨骼对话框结果 /// - public class OpenSpineDialogResult(Spine.Version version, string skelPath, string? atlasPath = null) + public class OpenSpineDialogResult(SpineVersion version, string skelPath, string? atlasPath = null) { /// /// 版本 /// - public Spine.Version Version => version; + public SpineVersion Version => version; /// /// skel 文件路径 diff --git a/SpineViewer/MainForm.cs b/SpineViewer/MainForm.cs index f475582..842abe7 100644 --- a/SpineViewer/MainForm.cs +++ b/SpineViewer/MainForm.cs @@ -183,7 +183,7 @@ namespace SpineViewer int success = 0; int error = 0; - SkeletonConverter srcCvter = srcVersion != Spine.Version.Auto ? SkeletonConverter.New(srcVersion) : null; + SkeletonConverter srcCvter = srcVersion != SpineVersion.Auto ? SkeletonConverter.New(srcVersion) : null; SkeletonConverter tgtCvter = SkeletonConverter.New(tgtVersion); worker.ReportProgress(0, $"已处理 0/{totalCount}"); @@ -200,7 +200,7 @@ namespace SpineViewer try { - if (srcVersion == Spine.Version.Auto) + if (srcVersion == SpineVersion.Auto) { try { diff --git a/SpineViewer/Spine/Implementations/SkeletonConverter/SkeletonConverter38.cs b/SpineViewer/Spine/Implementations/SkeletonConverter/SkeletonConverter38.cs index 5d8f59d..21f631a 100644 --- a/SpineViewer/Spine/Implementations/SkeletonConverter/SkeletonConverter38.cs +++ b/SpineViewer/Spine/Implementations/SkeletonConverter/SkeletonConverter38.cs @@ -11,7 +11,7 @@ using System.Globalization; namespace SpineViewer.Spine.Implementations.SkeletonConverter { - [SpineImplementation(Version.V38)] + [SpineImplementation(SpineVersion.V38)] class SkeletonConverter38 : SpineViewer.Spine.SkeletonConverter { private BinaryReader reader = null; @@ -1286,11 +1286,11 @@ namespace SpineViewer.Spine.Implementations.SkeletonConverter base.WriteJson(root, jsonPath); } - public override JsonObject ToVersion(JsonObject root, Version version) + public override JsonObject ToVersion(JsonObject root, SpineVersion version) { root = version switch { - Version.V38 => root.DeepClone().AsObject(), + SpineVersion.V38 => root.DeepClone().AsObject(), _ => throw new NotImplementedException(), }; return root; diff --git a/SpineViewer/Spine/Implementations/Spine/Spine21.cs b/SpineViewer/Spine/Implementations/Spine/Spine21.cs index a078c4b..818de4a 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine21.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine21.cs @@ -10,7 +10,7 @@ using SpineRuntime21; namespace SpineViewer.Spine.Implementations.Spine { - [SpineImplementation(Version.V21)] + [SpineImplementation(SpineVersion.V21)] internal class Spine21 : SpineViewer.Spine.Spine { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); diff --git a/SpineViewer/Spine/Implementations/Spine/Spine36.cs b/SpineViewer/Spine/Implementations/Spine/Spine36.cs index 4d6b99f..c9ab7b8 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine36.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine36.cs @@ -10,7 +10,7 @@ using SpineRuntime36; namespace SpineViewer.Spine.Implementations.Spine { - [SpineImplementation(Version.V36)] + [SpineImplementation(SpineVersion.V36)] internal class Spine36 : SpineViewer.Spine.Spine { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); diff --git a/SpineViewer/Spine/Implementations/Spine/Spine37.cs b/SpineViewer/Spine/Implementations/Spine/Spine37.cs index a675dc2..8ac850b 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine37.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine37.cs @@ -7,7 +7,7 @@ using SpineRuntime37; namespace SpineViewer.Spine.Implementations.Spine { - [SpineImplementation(Version.V37)] + [SpineImplementation(SpineVersion.V37)] internal class Spine37 : SpineViewer.Spine.Spine { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); diff --git a/SpineViewer/Spine/Implementations/Spine/Spine38.cs b/SpineViewer/Spine/Implementations/Spine/Spine38.cs index 9273122..1af6b81 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine38.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine38.cs @@ -10,7 +10,7 @@ using SpineRuntime38.Attachments; namespace SpineViewer.Spine.Implementations.Spine { - [SpineImplementation(Version.V38)] + [SpineImplementation(SpineVersion.V38)] internal class Spine38 : SpineViewer.Spine.Spine { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); diff --git a/SpineViewer/Spine/Implementations/Spine/Spine40.cs b/SpineViewer/Spine/Implementations/Spine/Spine40.cs index 6566c56..1542e0f 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine40.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine40.cs @@ -9,7 +9,7 @@ using SpineRuntime40; namespace SpineViewer.Spine.Implementations.Spine { - [SpineImplementation(Version.V40)] + [SpineImplementation(SpineVersion.V40)] internal class Spine40 : SpineViewer.Spine.Spine { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); diff --git a/SpineViewer/Spine/Implementations/Spine/Spine41.cs b/SpineViewer/Spine/Implementations/Spine/Spine41.cs index 2175f4d..129fde7 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine41.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine41.cs @@ -9,7 +9,7 @@ using SpineRuntime41; namespace SpineViewer.Spine.Implementations.Spine { - [SpineImplementation(Version.V41)] + [SpineImplementation(SpineVersion.V41)] internal class Spine41 : SpineViewer.Spine.Spine { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); diff --git a/SpineViewer/Spine/Implementations/Spine/Spine42.cs b/SpineViewer/Spine/Implementations/Spine/Spine42.cs index dc77014..b1a46e7 100644 --- a/SpineViewer/Spine/Implementations/Spine/Spine42.cs +++ b/SpineViewer/Spine/Implementations/Spine/Spine42.cs @@ -9,7 +9,7 @@ using SpineRuntime42; namespace SpineViewer.Spine.Implementations.Spine { - [SpineImplementation(Version.V42)] + [SpineImplementation(SpineVersion.V42)] internal class Spine42 : SpineViewer.Spine.Spine { private static readonly Animation EmptyAnimation = new(EMPTY_ANIMATION, [], 0); diff --git a/SpineViewer/Spine/SkeletonConverter.cs b/SpineViewer/Spine/SkeletonConverter.cs index e88e0fe..923247d 100644 --- a/SpineViewer/Spine/SkeletonConverter.cs +++ b/SpineViewer/Spine/SkeletonConverter.cs @@ -15,12 +15,12 @@ namespace SpineViewer.Spine /// /// SkeletonConverter 基类, 使用静态方法 New 来创建具体版本对象 /// - public abstract class SkeletonConverter : ImplementationResolver + public abstract class SkeletonConverter : ImplementationResolver { /// /// 创建特定版本的 SkeletonConverter /// - public static SkeletonConverter New(Version version) => New(version, []); + public static SkeletonConverter New(SpineVersion version) => New(version, []); /// /// Json 格式控制 @@ -89,7 +89,7 @@ namespace SpineViewer.Spine /// /// 转换到目标版本 /// - public abstract JsonObject ToVersion(JsonObject root, Version version); + public abstract JsonObject ToVersion(JsonObject root, SpineVersion version); /// /// 二进制骨骼文件读 diff --git a/SpineViewer/Spine/Spine.cs b/SpineViewer/Spine/Spine.cs index 60fae32..917bcf2 100644 --- a/SpineViewer/Spine/Spine.cs +++ b/SpineViewer/Spine/Spine.cs @@ -21,7 +21,7 @@ namespace SpineViewer.Spine /// /// Spine 基类, 使用静态方法 New 来创建具体版本对象 /// - public abstract class Spine : ImplementationResolver, SFML.Graphics.Drawable, IDisposable + public abstract class Spine : ImplementationResolver, SFML.Graphics.Drawable, IDisposable { /// /// 常规骨骼文件后缀集合 @@ -54,7 +54,7 @@ namespace SpineViewer.Spine /// /// /// - public static Version GetVersion(string skelPath) + public static SpineVersion GetVersion(string skelPath) { string versionString = null; using var input = File.OpenRead(skelPath); @@ -105,9 +105,9 @@ namespace SpineViewer.Spine /// /// 创建特定版本的 Spine /// - public static Spine New(Version version, string skelPath, string? atlasPath = null) + public static Spine New(SpineVersion version, string skelPath, string? atlasPath = null) { - if (version == Version.Auto) version = GetVersion(skelPath); + if (version == SpineVersion.Auto) version = GetVersion(skelPath); var spine = New(version, [skelPath, atlasPath]); // 统一初始化 @@ -176,7 +176,7 @@ namespace SpineViewer.Spine /// [TypeConverter(typeof(VersionConverter))] [Category("[0] 基本信息"), DisplayName("运行时版本")] - public Version Version { get; } + public SpineVersion Version { get; } /// /// 资源所在完整目录 diff --git a/SpineViewer/Spine/SpineHelper.cs b/SpineViewer/Spine/SpineHelper.cs index 20853b7..c23ae25 100644 --- a/SpineViewer/Spine/SpineHelper.cs +++ b/SpineViewer/Spine/SpineHelper.cs @@ -12,7 +12,7 @@ namespace SpineViewer.Spine /// /// 支持的 Spine 版本 /// - public enum Version + public enum SpineVersion { [Description("")] Auto = 0x0000, [Description("2.1.x")] V21 = 0x0201, @@ -29,9 +29,9 @@ namespace SpineViewer.Spine /// Spine 实现类标记 /// [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] - public class SpineImplementationAttribute(Version version) : Attribute, IImplementationKey + public class SpineImplementationAttribute(SpineVersion version) : Attribute, IImplementationKey { - public Version ImplementationKey { get; private set; } = version; + public SpineVersion ImplementationKey { get; private set; } = version; } /// @@ -42,38 +42,38 @@ namespace SpineViewer.Spine /// /// 版本名称 /// - public static readonly ReadOnlyDictionary Names; - private static readonly Dictionary names = []; + public static readonly ReadOnlyDictionary Names; + private static readonly Dictionary names = []; /// /// Runtime 版本字符串 /// - private static readonly Dictionary runtimes = []; + private static readonly Dictionary runtimes = []; static SpineHelper() { // 初始化缓存 - foreach (var value in Enum.GetValues(typeof(Version))) + foreach (var value in Enum.GetValues(typeof(SpineVersion))) { - var field = typeof(Version).GetField(value.ToString()); + var field = typeof(SpineVersion).GetField(value.ToString()); var attribute = field?.GetCustomAttribute(); - names[(Version)value] = attribute?.Description ?? value.ToString(); + names[(SpineVersion)value] = attribute?.Description ?? value.ToString(); } Names = names.AsReadOnly(); - runtimes[Version.V21] = Assembly.GetAssembly(typeof(SpineRuntime21.Skeleton)).GetCustomAttribute()?.InformationalVersion; - runtimes[Version.V36] = Assembly.GetAssembly(typeof(SpineRuntime36.Skeleton)).GetCustomAttribute()?.InformationalVersion; - runtimes[Version.V37] = Assembly.GetAssembly(typeof(SpineRuntime37.Skeleton)).GetCustomAttribute()?.InformationalVersion; - runtimes[Version.V38] = Assembly.GetAssembly(typeof(SpineRuntime38.Skeleton)).GetCustomAttribute()?.InformationalVersion; - runtimes[Version.V40] = Assembly.GetAssembly(typeof(SpineRuntime40.Skeleton)).GetCustomAttribute()?.InformationalVersion; - runtimes[Version.V41] = Assembly.GetAssembly(typeof(SpineRuntime41.Skeleton)).GetCustomAttribute()?.InformationalVersion; - runtimes[Version.V42] = Assembly.GetAssembly(typeof(SpineRuntime42.Skeleton)).GetCustomAttribute()?.InformationalVersion; + runtimes[SpineVersion.V21] = Assembly.GetAssembly(typeof(SpineRuntime21.Skeleton)).GetCustomAttribute()?.InformationalVersion; + runtimes[SpineVersion.V36] = Assembly.GetAssembly(typeof(SpineRuntime36.Skeleton)).GetCustomAttribute()?.InformationalVersion; + runtimes[SpineVersion.V37] = Assembly.GetAssembly(typeof(SpineRuntime37.Skeleton)).GetCustomAttribute()?.InformationalVersion; + runtimes[SpineVersion.V38] = Assembly.GetAssembly(typeof(SpineRuntime38.Skeleton)).GetCustomAttribute()?.InformationalVersion; + runtimes[SpineVersion.V40] = Assembly.GetAssembly(typeof(SpineRuntime40.Skeleton)).GetCustomAttribute()?.InformationalVersion; + runtimes[SpineVersion.V41] = Assembly.GetAssembly(typeof(SpineRuntime41.Skeleton)).GetCustomAttribute()?.InformationalVersion; + runtimes[SpineVersion.V42] = Assembly.GetAssembly(typeof(SpineRuntime42.Skeleton)).GetCustomAttribute()?.InformationalVersion; } /// /// 版本字符串名称 /// - public static string GetName(this Version version) + public static string GetName(this SpineVersion version) { return Names.TryGetValue(version, out var val) ? val : version.ToString(); } @@ -81,7 +81,7 @@ namespace SpineViewer.Spine /// /// Runtime 版本字符串名称 /// - public static string GetRuntime(this Version version) + public static string GetRuntime(this SpineVersion version) { return runtimes.TryGetValue(version, out var val) ? val : GetName(version); } @@ -92,17 +92,17 @@ namespace SpineViewer.Spine /// /// /// - public static Version GetVersion(string versionString) + public static SpineVersion GetVersion(string versionString) { ArgumentNullException.ThrowIfNullOrEmpty(versionString); - if (versionString.StartsWith("2.1.")) return Version.V21; - else if (versionString.StartsWith("3.6.")) return Version.V36; - else if (versionString.StartsWith("3.7.")) return Version.V37; - else if (versionString.StartsWith("3.8.")) return Version.V38; - else if (versionString.StartsWith("4.0.")) return Version.V40; - else if (versionString.StartsWith("4.1.")) return Version.V41; - else if (versionString.StartsWith("4.2.")) return Version.V42; - else if (versionString.StartsWith("4.3.")) return Version.V43; + if (versionString.StartsWith("2.1.")) return SpineVersion.V21; + else if (versionString.StartsWith("3.6.")) return SpineVersion.V36; + else if (versionString.StartsWith("3.7.")) return SpineVersion.V37; + else if (versionString.StartsWith("3.8.")) return SpineVersion.V38; + else if (versionString.StartsWith("4.0.")) return SpineVersion.V40; + else if (versionString.StartsWith("4.1.")) return SpineVersion.V41; + else if (versionString.StartsWith("4.2.")) return SpineVersion.V42; + else if (versionString.StartsWith("4.3.")) return SpineVersion.V43; else throw new InvalidDataException($"Unknown verison: {versionString}"); } } diff --git a/SpineViewer/Spine/TypeConverter.cs b/SpineViewer/Spine/TypeConverter.cs index e6b558a..fad151e 100644 --- a/SpineViewer/Spine/TypeConverter.cs +++ b/SpineViewer/Spine/TypeConverter.cs @@ -11,11 +11,11 @@ namespace SpineViewer.Spine { public class VersionConverter : EnumConverter { - public VersionConverter() : base(typeof(Version)) { } + public VersionConverter() : base(typeof(SpineVersion)) { } public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type? destinationType) { - if (destinationType == typeof(string) && value is Version version) + if (destinationType == typeof(string) && value is SpineVersion version) return version.GetName(); return base.ConvertTo(context, culture, value, destinationType); }