From 41c644f2af53ac3b27ff43221d8aa5cb354301ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AD=B1=E5=82=91?= Date: Wed, 20 Sep 2023 12:56:38 +0800 Subject: [PATCH] Add Run multiple commands at one time --- Source/GrasscutterTools/Forms/FormMain.cs | 2 +- .../OpenCommand/OpenCommandAPI.cs | 17 +++++++++++++++++ Source/GrasscutterTools/Program.cs | 14 ++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Source/GrasscutterTools/Forms/FormMain.cs b/Source/GrasscutterTools/Forms/FormMain.cs index 9402fd7..71c8f48 100644 --- a/Source/GrasscutterTools/Forms/FormMain.cs +++ b/Source/GrasscutterTools/Forms/FormMain.cs @@ -442,7 +442,7 @@ namespace GrasscutterTools.Forms /// 是否执行成功 private async Task RunRawCommands(string commands) { - if (commands.IndexOf('|') == -1) + if (commands.IndexOf('|') == -1 || Common.OC?.CanInvokeMultipleCmd == true) return await RunCommands(FormatCommand(commands)); return await RunCommands(commands.Split('|').Select(FormatCommand).ToArray()); } diff --git a/Source/GrasscutterTools/OpenCommand/OpenCommandAPI.cs b/Source/GrasscutterTools/OpenCommand/OpenCommandAPI.cs index 0a406c6..6f373c9 100644 --- a/Source/GrasscutterTools/OpenCommand/OpenCommandAPI.cs +++ b/Source/GrasscutterTools/OpenCommand/OpenCommandAPI.cs @@ -44,11 +44,28 @@ namespace GrasscutterTools.OpenCommand public bool CanInvoke { get; private set; } + private Version version = new Version(1, 6, 1); + + public Version Version + { + get => version; + private set + { + version = value; + CanInvokeMultipleCmd = version >= new Version(1, 7); + } + } + + public bool CanInvokeMultipleCmd { get; private set; } + public async Task Ping() { //try //{ var response = await DoRequest("ping"); + if (response.Data is string str && Version.TryParse(str, out var version)) + Version = version; + return response.RetCode == 200; //} //catch (Exception) diff --git a/Source/GrasscutterTools/Program.cs b/Source/GrasscutterTools/Program.cs index abf8e8b..06a487e 100644 --- a/Source/GrasscutterTools/Program.cs +++ b/Source/GrasscutterTools/Program.cs @@ -190,11 +190,21 @@ namespace GrasscutterTools try { - foreach (var cmd in commands.Split('|').Select(FormatCommand)) + Common.OC.Ping().Wait(1000); + + if (Common.OC.CanInvokeMultipleCmd) { - var msg = Common.OC.Invoke(cmd).Result; + var msg = Common.OC.Invoke(FormatCommand(commands)).Result; Console.WriteLine(string.IsNullOrEmpty(msg) ? "OK" : msg); } + else + { + foreach (var cmd in commands.Split('|').Select(FormatCommand)) + { + var msg = Common.OC.Invoke(cmd).Result; + Console.WriteLine(string.IsNullOrEmpty(msg) ? "OK" : msg); + } + } return true; } catch (Exception ex)