diff --git a/src/MaaWpfGui/ViewModels/TaskViewModel.cs b/src/MaaWpfGui/ViewModels/TaskViewModel.cs index 5de2794a87..e449f4c276 100644 --- a/src/MaaWpfGui/ViewModels/TaskViewModel.cs +++ b/src/MaaWpfGui/ViewModels/TaskViewModel.cs @@ -17,14 +17,17 @@ using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; +using System.Runtime.CompilerServices; +using MaaWpfGui.Configuration.Factory; +using MaaWpfGui.Configuration.Single.MaaTask; using MaaWpfGui.Main; +using MaaWpfGui.Models; using MaaWpfGui.Services; using MaaWpfGui.Utilities; using Newtonsoft.Json.Linq; using Stylet; namespace MaaWpfGui.ViewModels; - public abstract class TaskViewModel : PropertyChangedBase { private readonly Dictionary> _propertyDependencies = []; // 属性依赖关系, key为被订阅的属性名, value为依赖于该属性的属性名列表 @@ -81,13 +84,49 @@ public abstract class TaskViewModel : PropertyChangedBase } } + protected T? GetTaskConfig() + where T : BaseTask + { + return ConfigFactory.CurrentConfig.TaskQueue[TaskSettingVisibilityInfo.Current.CurrentIndex] as T; + } + + protected bool SetTaskConfig(Func isEqual, Action @setValue, [CallerMemberName] string propertyName = "") + where T : BaseTask + { + if (ConfigFactory.CurrentConfig.TaskQueue[TaskSettingVisibilityInfo.Current.CurrentIndex] is T task) + { + if (!isEqual(task)) + { + setValue(task); + NotifyOfPropertyChange(propertyName); + return true; + } + } + + return false; + } + public virtual void ProcSubTaskMsg(AsstMsg msg, JObject details) { } + /// + /// 刷新UI + /// + /// 需要刷新的任务 + public virtual void RefreshUI(BaseTask baseTask) + { + } + /// /// 序列化MAA任务 /// /// 返回(Asst任务类型, 参数) + /// [Obsolete] 重构后弃用 public abstract (AsstTaskType Type, JObject Params) Serialize(); + + public virtual bool? SerializeTask(BaseTask baseTask, int? taskId = null) + { + return null; + } }