using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using Point = OpenCvSharp.Point;
using Size = OpenCvSharp.Size;
namespace BetterGenshinImpact.GameTask.Placeholder;
///
/// 一个用于开发测试的识别、或者全局占位触发器
/// 这个触发器启动的时候,直接独占
///
public class TestTrigger : ITaskTrigger
{
public string Name => "自定义占位触发器";
public bool IsEnabled { get; set; }
public int Priority => 9999;
public bool IsExclusive { get; private set; }
private readonly Pen _pen = new(Color.Coral, 1);
//private readonly AutoGeniusInvokationAssets _autoGeniusInvokationAssets;
// private readonly YoloV8 _predictor = new(Global.Absolute("Assets\\Model\\Domain\\bgi_tree.onnx"));
public TestTrigger()
{
var info = TaskContext.Instance().SystemInfo;
//_autoGeniusInvokationAssets = new AutoGeniusInvokationAssets();
}
public void Init()
{
IsEnabled = false;
IsExclusive = false;
}
public void OnCapture(CaptureContent content)
{
// TestArrow(content);
// TestCamera(content);
// Detect(content);
// var angle = CameraOrientation.Compute(content);
// Debug.WriteLine(angle);
// if (angle < 180)
// {
// // 左移视角
// Simulation.SendInputEx.Mouse.MoveMouseBy(-angle, 0);
// }
// else if (angle is > 180 and < 360)
// {
// // 右移视角
// Simulation.SendInputEx.Mouse.MoveMouseBy(360 - angle, 0);
// }
// else
// {
// // 360 度 东方向视角
// }
//var dictionary = GeniusInvokationControl.FindMultiPicFromOneImage2OneByOne(content.CaptureRectArea.SrcGreyMat, _autoGeniusInvokationAssets.RollPhaseDiceMats, 0.7);
//if (dictionary.Count > 0)
//{
// int i = 0;
// foreach (var pair in dictionary)
// {
// var list = pair.Value;
// foreach (var p in list)
// {
// i++;
// VisionContext.Instance().DrawContent.PutRect("i" + i,
// new RectDrawable(new Rect(p.X, p.Y,
// _autoGeniusInvokationAssets.RollPhaseDiceMats[pair.Key].Width,
// _autoGeniusInvokationAssets.RollPhaseDiceMats[pair.Key].Height)));
// }
// }
// Debug.WriteLine("找到了" + i + "个");
//}
//var foundRectArea = content.CaptureRectArea.Find(_autoGeniusInvokationAssets.ElementalTuningConfirmButtonRo);
//if (!foundRectArea.IsEmpty())
//{
// Debug.WriteLine("找到了");
//}
//else
//{
// Debug.WriteLine("没找到");
//}
// 小地图匹配测试
// var tar = ElementAssets.Instance.PaimonMenuRo.TemplateImageGreyMat!;
// var p = MatchTemplateHelper.MatchTemplate(content.CaptureRectArea.SrcGreyMat, tar, TemplateMatchModes.CCoeffNormed, null, 0.9);
// if (p.X == 0 || p.Y == 0)
// {
// return;
// }
//
// var miniMapMat = new Mat(content.CaptureRectArea.SrcGreyMat, new Rect(p.X + 24, p.Y - 15, 210, 210));
// var mask = new Mat(new Size(miniMapMat.Width, miniMapMat.Height), MatType.CV_8UC1, Scalar.Black);
// Cv2.Circle(mask, new Point(miniMapMat.Width / 2, miniMapMat.Height / 2), 90, Scalar.White, -1);
// var res = new Mat();
// Cv2.BitwiseAnd(miniMapMat, miniMapMat, res, mask);
// EntireMap.Instance.GetMapPositionAndDrawByFeatureMatch(res);
// Cv2.ImWrite(Global.Absolute(@"log\minimap.png"), res);
// 大地图测试
// var mat = content.CaptureRectArea.SrcGreyMat;
// // mat = mat.Resize(new Size(240, 135));
// var p = BigMap.Instance.GetBigMapPositionByFeatureMatch(mat);
//
// var s = 2.56;
// WeakReferenceMessenger.Default.Send(new PropertyChangedMessage