From fda93cf78e787ccecd93dbda01801afad95f870f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=89=E9=B8=AD=E8=9B=8B?= Date: Sun, 8 Jun 2025 22:40:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=80=E6=9C=89=E7=B1=BB=E5=9E=8BTask?= =?UTF-8?q?=E7=9A=84=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Model/Gear/KeyMouseGearTask.cs | 22 +++++++++++++ .../Model/Gear/PathingGearTask.cs | 32 +++++++++++++++++++ .../Model/Gear/ShellGearTask.cs | 21 ++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 BetterGenshinImpact/Model/Gear/KeyMouseGearTask.cs create mode 100644 BetterGenshinImpact/Model/Gear/PathingGearTask.cs create mode 100644 BetterGenshinImpact/Model/Gear/ShellGearTask.cs diff --git a/BetterGenshinImpact/Model/Gear/KeyMouseGearTask.cs b/BetterGenshinImpact/Model/Gear/KeyMouseGearTask.cs new file mode 100644 index 00000000..a5364ade --- /dev/null +++ b/BetterGenshinImpact/Model/Gear/KeyMouseGearTask.cs @@ -0,0 +1,22 @@ +using System.IO; +using System.Threading.Tasks; +using BetterGenshinImpact.Core.Config; +using BetterGenshinImpact.Core.Recorder; +using BetterGenshinImpact.Core.Script; + +namespace BetterGenshinImpact.Model.Gear; + +public class KeyMouseGearTask : BaseGearTask +{ + public KeyMouseGearTask(string path) + { + FilePath = path; + } + + public override async Task Run(params object[] configs) + { + // 加载并执行 + var json = await File.ReadAllTextAsync(FilePath); + await KeyMouseMacroPlayer.PlayMacro(json, CancellationContext.Instance.Cts.Token, false); + } +} \ No newline at end of file diff --git a/BetterGenshinImpact/Model/Gear/PathingGearTask.cs b/BetterGenshinImpact/Model/Gear/PathingGearTask.cs new file mode 100644 index 00000000..227c8207 --- /dev/null +++ b/BetterGenshinImpact/Model/Gear/PathingGearTask.cs @@ -0,0 +1,32 @@ +using System.Threading.Tasks; +using BetterGenshinImpact.Core.Config; +using BetterGenshinImpact.Core.Script; +using BetterGenshinImpact.GameTask; +using BetterGenshinImpact.GameTask.AutoPathing; +using BetterGenshinImpact.GameTask.AutoPathing.Model; + +namespace BetterGenshinImpact.Model.Gear; + +public class PathingGearTask : BaseGearTask +{ + public PathingGearTask(string path) + { + FilePath = path; + } + + public override async Task Run(params object[] configs) + { + // 加载并执行 + var task = PathingTask.BuildFromFilePath(FilePath); + var pathingTask = new PathExecutor(CancellationContext.Instance.Cts.Token); + if (configs.Length > 0) + { + pathingTask.PartyConfig = (PathingPartyConfig)configs[0]; + } + if (pathingTask.PartyConfig.AutoPickEnabled) + { + TaskTriggerDispatcher.Instance().AddTrigger("AutoPick", null); + } + await pathingTask.Pathing(task); + } +} \ No newline at end of file diff --git a/BetterGenshinImpact/Model/Gear/ShellGearTask.cs b/BetterGenshinImpact/Model/Gear/ShellGearTask.cs new file mode 100644 index 00000000..1b00e57d --- /dev/null +++ b/BetterGenshinImpact/Model/Gear/ShellGearTask.cs @@ -0,0 +1,21 @@ +using System.Threading.Tasks; +using BetterGenshinImpact.Core.Config; +using BetterGenshinImpact.Core.Script; +using BetterGenshinImpact.GameTask.Shell; + +namespace BetterGenshinImpact.Model.Gear; + +public class ShellGearTask : BaseGearTask +{ + public override async Task Run(params object[] configs) + { + ShellConfig? shellConfig = null; + if (configs.Length > 0) + { + shellConfig = (ShellConfig)configs[0]; + } + + var task = new ShellTask(ShellTaskParam.BuildFromConfig(Name, shellConfig ?? new ShellConfig())); + await task.Start(CancellationContext.Instance.Cts.Token); + } +} \ No newline at end of file