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();
}
}