完善文件转换功能

This commit is contained in:
ww-rm
2025-04-14 23:52:39 +08:00
parent 1deb74eca9
commit 15bc2dc3b8

View File

@@ -347,19 +347,15 @@ namespace SpineViewer
private void ConvertFileFormat_Work(object? sender, DoWorkEventArgs e) private void ConvertFileFormat_Work(object? sender, DoWorkEventArgs e)
{ {
var worker = sender as BackgroundWorker; var worker = sender as BackgroundWorker;
var arguments = e.Argument as Dialogs.ConvertFileFormatDialogResult; var args = e.Argument as Dialogs.ConvertFileFormatDialogResult;
var skelPaths = arguments.SkelPaths; var newSuffix = args.JsonTarget ? ".json" : ".skel";
var srcVersion = arguments.SourceVersion;
var tgtVersion = arguments.TargetVersion;
var jsonTarget = arguments.JsonTarget;
var newSuffix = jsonTarget ? ".json" : ".skel";
int totalCount = skelPaths.Length; int totalCount = args.SkelPaths.Length;
int success = 0; int success = 0;
int error = 0; int error = 0;
SkeletonConverter srcCvter = srcVersion != SpineVersion.Auto ? SkeletonConverter.New(srcVersion) : null; SkeletonConverter srcCvter = args.SourceVersion != SpineVersion.Auto ? SkeletonConverter.New(args.SourceVersion) : null;
SkeletonConverter tgtCvter = SkeletonConverter.New(tgtVersion); SkeletonConverter tgtCvter = SkeletonConverter.New(args.TargetVersion);
worker.ReportProgress(0, $"已处理 0/{totalCount}"); worker.ReportProgress(0, $"已处理 0/{totalCount}");
for (int i = 0; i < totalCount; i++) for (int i = 0; i < totalCount; i++)
@@ -370,12 +366,13 @@ namespace SpineViewer
break; break;
} }
var skelPath = skelPaths[i]; var skelPath = args.SkelPaths[i];
var newPath = Path.ChangeExtension(skelPath, newSuffix); var newPath = Path.ChangeExtension(skelPath, newSuffix);
if (args.OutputDir is string outputDir) newPath = Path.Combine(outputDir, Path.GetFileName(newPath));
try try
{ {
if (srcVersion == SpineVersion.Auto) if (args.SourceVersion == SpineVersion.Auto)
{ {
try try
{ {
@@ -387,8 +384,9 @@ namespace SpineViewer
} }
} }
var root = srcCvter.Read(skelPath); var root = srcCvter.Read(skelPath);
root = srcCvter.ToVersion(root, tgtVersion); root = srcCvter.ToVersion(root, args.TargetVersion);
if (jsonTarget) tgtCvter.WriteJson(root, newPath); else tgtCvter.WriteBinary(root, newPath); if (args.JsonTarget) tgtCvter.WriteJson(root, newPath);
else tgtCvter.WriteBinary(root, newPath);
success++; success++;
} }
catch (Exception ex) catch (Exception ex)