mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-03-20 08:29:50 +08:00
优化项目结构并新增任务和路径文件 主要更改: - 在 `BetterGenshinImpact.csproj` 文件中,添加了对 `GameTask\Common\Element\Assets\Json\**` 目录的处理,并确保其内容始终复制到输出目录。 - 在 `RecognitionObject.cs` 文件中,新增了多个静态方法 `Ocr` 和一个静态实例 `OcrThis`。 - 在 `PathExecutor.cs` 文件中,优化了路径执行逻辑,新增 `GetPosition` 方法,并调整了超时判断。 - 在 `AutoPickAssets.cs` 文件中,添加了多个 `using` 语句,新增 `_logger` 和 `PickRo` 字段,并在构造函数中添加了自定义拾取按键的处理逻辑。 - 在 `AutoPickTrigger.cs` 文件中,移除了自定义拾取按键的初始化逻辑。 - 在 `OneKeyExpeditionTask.cs` 文件中,注释掉了 `Cv2.ImWrite` 方法的调用。 - 在 `TpTask.cs` 文件中,添加了点位很近时不切换的判断逻辑。 - 在 `BvSimpleOperation.cs` 文件中,新增了多个点击按钮的方法和 `FindF`、`FindFAndPress` 方法。 - 在 `BvStatus.cs` 文件中,新增了多个方法用于判断是否在对话界面并等待对话界面加载完成。 - 在 `GameTaskManager.cs` 文件中,添加了 `MapAssets.DestroyInstance` 方法的调用。 - 在 `HotKeyPageViewModel.cs` 文件中,注释掉了 `ElementalCollectHandler` 的测试代码,并添加了 `GoToAdventurersGuildTask` 的测试代码。 - 在 `TaskSettingsPageViewModel.cs` 文件中,更新了 `OnGoToAutoGeniusInvokationUrlAsync` 方法中的 URL。 - 添加了 `BetterGenshinImpact - Backup.csproj` 文件,配置了项目属性、资源文件和包引用。 - 添加了 `冒险家协会_枫丹.json`、`合成台_枫丹.json` 和 `合成台_璃月.json` 文件,定义了前往相应地点的路径和动作。 - 添加了 `ChooseTalkOptionTask.cs` 文件,实现了选择对话选项的任务。 - 添加了 `GoToAdventurersGuildTask.cs` 文件,实现了前往冒险家协会领取奖励的任务。
77 lines
2.6 KiB
C#
77 lines
2.6 KiB
C#
using BetterGenshinImpact.Core.Simulator;
|
|
using BetterGenshinImpact.GameTask.AutoGeniusInvokation.Exception;
|
|
using BetterGenshinImpact.GameTask.AutoSkip.Assets;
|
|
using BetterGenshinImpact.GameTask.Common;
|
|
using BetterGenshinImpact.View.Drawable;
|
|
using Microsoft.Extensions.Logging;
|
|
using System;
|
|
using static BetterGenshinImpact.GameTask.Common.TaskControl;
|
|
using static Vanara.PInvoke.User32;
|
|
|
|
namespace BetterGenshinImpact.GameTask.AutoSkip;
|
|
|
|
public class OneKeyExpeditionTask
|
|
{
|
|
public void Run(AutoSkipAssets assets)
|
|
{
|
|
try
|
|
{
|
|
SystemControl.ActivateWindow();
|
|
|
|
for (int i = 0; i < 2; i++)
|
|
{
|
|
// 1.全部领取
|
|
var region = CaptureToRectArea(true);
|
|
// Cv2.ImWrite($"log/ts.png", region.SrcMat);
|
|
var ra = region.Find(assets.CollectRo);
|
|
if (!ra.IsEmpty())
|
|
{
|
|
ra.Click();
|
|
Logger.LogInformation("探索派遣:{Text}", "全部领取");
|
|
Sleep(1100);
|
|
// 2.重新派遣
|
|
NewRetry.Do(() =>
|
|
{
|
|
Sleep(1);
|
|
region = CaptureToRectArea(true);
|
|
var ra2 = region.Find(assets.ReRo);
|
|
if (ra2.IsEmpty())
|
|
{
|
|
throw new RetryException("未检测到弹出菜单");
|
|
}
|
|
else
|
|
{
|
|
ra2.Click();
|
|
Logger.LogInformation("探索派遣:{Text}", "再次派遣");
|
|
}
|
|
}, TimeSpan.FromSeconds(1), 3);
|
|
|
|
// 3.退出派遣页面 ESC
|
|
Sleep(500);
|
|
Simulation.SendInput.Keyboard.KeyPress(VK.VK_ESCAPE);
|
|
Logger.LogInformation("探索派遣:{Text}", "完成");
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
Logger.LogInformation("探索派遣:{Text}", "未找到领取按钮");
|
|
if (i == 0)
|
|
{
|
|
Logger.LogInformation("探索派遣:{Text}", "等待1s后重试");
|
|
Sleep(1000);
|
|
}
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Logger.LogInformation(e.Message);
|
|
}
|
|
finally
|
|
{
|
|
VisionContext.Instance().DrawContent.ClearAll();
|
|
}
|
|
}
|
|
}
|