From 319e3842399e407e6c8b6acb249c021e677033ac Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Thu, 17 Jul 2025 08:08:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0Config=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=AF=BB=E5=86=99,=20=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E5=88=B7=E6=96=B0,=20=E4=BB=BB=E5=8A=A1=E6=B7=BB=E6=94=B9base?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaWpfGui/ViewModels/TaskViewModel.cs | 41 ++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) 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; + } }