using System.Threading; using System.Threading.Tasks; using BetterGenshinImpact.Core.Recognition; using BetterGenshinImpact.GameTask.Model.Area; namespace BetterGenshinImpact.GameTask.Common.BgiVision; /// /// 一些基础图像识别操作 /// public static partial class Bv { /// /// 等待图像被找到 /// /// 识别对象 /// 任务取消令牌 /// 重试次数 /// 重试间隔 /// public static async Task WaitUntilFound(RecognitionObject ro, CancellationToken ct, int retryTimes = 5, int delayMs = 1000) { return await NewRetry.WaitForAction(() => TaskControl.CaptureToRectArea().Find(ro).IsExist(), ct, retryTimes); } /// /// /// /// /// /// /// /// public static async Task ClickUntilFound(RecognitionObject ro, CancellationToken ct, int retryTimes = 5, int delayMs = 1000) { return await NewRetry.WaitForAction(() => { var region = TaskControl.CaptureToRectArea(); var foundRa = region.Find(ro); if (foundRa.IsExist()) { foundRa.Click(); return true; } return false; }, ct, retryTimes); } /// /// 是否找到对应的识别对象 /// /// 图像区域 /// 识别目标 /// public static bool Find(ImageRegion region, RecognitionObject ro) { return region.Find(ro).IsExist(); } }