diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs index b1d57c1957..e084b0105f 100644 --- a/src/MaaWpfGui/Main/AsstProxy.cs +++ b/src/MaaWpfGui/Main/AsstProxy.cs @@ -2615,42 +2615,6 @@ namespace MaaWpfGui.Main return id != 0; } - /// - /// 自动生息演算。 - /// - /// 要组装的支援道具。 - /// 生息演算主题["Tales"] - /// - /// 策略。可用值包括: - /// - /// - /// 0 - /// 无存档时通过进出关卡刷生息点数 - /// - /// - /// 1 - /// 有存档时通过合成支援道具刷生息点数 - /// - /// - /// - /// 点击类型:0 连点;1 长按 - /// 单次最大制造轮数 - /// 是否成功。 - public bool AsstAppendReclamation(string[] toolToCraft, string theme = "Tales", int mode = 1, int incrementMode = 0, int numCraftBatches = 16) - { - var taskParams = new JObject - { - ["tools_to_craft"] = new JArray(toolToCraft), - ["theme"] = theme, - ["mode"] = mode, - ["increment_mode"] = incrementMode, - ["num_craft_batches"] = numCraftBatches, - }; - AsstTaskId id = AsstAppendTaskWithEncoding(AsstTaskType.Reclamation, taskParams); - _taskStatus.Add(id, TaskType.Reclamation); - return id != 0; - } - /// /// 公招识别。 /// @@ -2780,6 +2744,19 @@ namespace MaaWpfGui.Main return id != 0 && AsstStart(); } + public bool AsstAppendTaskWithEncoding(TaskType wpfTasktype, AsstTaskType type, JObject? taskParams = null) + { + taskParams ??= []; + AsstTaskId id = AsstAppendTask(_handle, type.ToString(), JsonConvert.SerializeObject(taskParams)); + if (id == 0) + { + return false; + } + + _taskStatus.Add(id, wpfTasktype); + return true; + } + public bool ContainsTask(TaskType type) { return _taskStatus.ContainsValue(type); diff --git a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs index 4f7e675267..69c004ce07 100644 --- a/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs +++ b/src/MaaWpfGui/ViewModels/UI/TaskQueueViewModel.cs @@ -1861,16 +1861,9 @@ namespace MaaWpfGui.ViewModels.UI private static bool AppendReclamation() { - var toolToCraft = ReclamationTask.ReclamationToolToCraft.Split(';', ';').Select(s => s.Trim()); - - _ = int.TryParse(ReclamationTask.ReclamationMode, out var mode); - - return Instances.AsstProxy.AsstAppendReclamation( - toolToCraft.ToArray(), - ReclamationTask.ReclamationTheme, - mode, - ReclamationTask.ReclamationIncrementMode, - ReclamationTask.ReclamationMaxCraftCountPerRound); + // 被RemoteControlService反射调用,暂不移除 + var (type, param) = ReclamationTask.Serialize(); + return Instances.AsstProxy.AsstAppendTaskWithEncoding(AsstProxy.TaskType.Reclamation, type, param); } /// diff --git a/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/ReclamationSettingsUserControlModel.cs b/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/ReclamationSettingsUserControlModel.cs index b9f6eec7bd..538ae3c9f7 100644 --- a/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/ReclamationSettingsUserControlModel.cs +++ b/src/MaaWpfGui/ViewModels/UserControl/TaskQueue/ReclamationSettingsUserControlModel.cs @@ -13,10 +13,13 @@ #nullable enable using System; using System.Collections.Generic; +using System.Linq; using MaaWpfGui.Constants; using MaaWpfGui.Helper; +using MaaWpfGui.Services; using MaaWpfGui.Utilities.ValueType; using MaaWpfGui.ViewModels.UI; +using Newtonsoft.Json.Linq; namespace MaaWpfGui.ViewModels.UserControl.TaskQueue; @@ -77,7 +80,7 @@ public class ReclamationSettingsUserControlModel : TaskViewModel } } - private string _reclamationToolToCraft = ConfigurationHelper.GetValue(ConfigurationKeys.ReclamationToolToCraft, string.Empty); + private string _reclamationToolToCraft = ConfigurationHelper.GetValue(ConfigurationKeys.ReclamationToolToCraft, string.Empty).Replace(';', ';'); public string ReclamationToolToCraft { @@ -93,6 +96,7 @@ public class ReclamationSettingsUserControlModel : TaskViewModel set { + value = value.Replace(';', ';'); SetAndNotify(ref _reclamationToolToCraft, value); ConfigurationHelper.SetValue(ConfigurationKeys.ReclamationToolToCraft, value); } @@ -130,4 +134,38 @@ public class ReclamationSettingsUserControlModel : TaskViewModel ConfigurationHelper.SetValue(ConfigurationKeys.ReclamationMaxCraftCountPerRound, value.ToString()); } } + + /// + /// 自动生息演算。 + /// + /// 要组装的支援道具。 + /// 生息演算主题["Tales"] + /// + /// 策略。可用值包括: + /// + /// + /// 0 + /// 无存档时通过进出关卡刷生息点数 + /// + /// + /// 1 + /// 有存档时通过合成支援道具刷生息点数 + /// + /// + /// + /// 点击类型:0 连点;1 长按 + /// 单次最大制造轮数 + /// 返回(Asst任务类型, 参数) + public (AsstTaskType Type, JObject Params) Serialize() + { + var data = new JObject + { + ["theme"] = ReclamationTheme, + ["mode"] = ReclamationMode, + ["increment_mode"] = ReclamationIncrementMode, + ["num_craft_batches"] = ReclamationMaxCraftCountPerRound, + ["tools_to_craft"] = new JArray(ReclamationToolToCraft.Split(';').Select(s => s.Trim())), + }; + return (AsstTaskType.Reclamation, data); + } }