diff --git a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.cs b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.cs
index d6dcf46f..4e20d00c 100644
--- a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.cs
+++ b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.cs
@@ -59,6 +59,8 @@ public class AutoDomainTask : ISoloTask
private readonly string challengeCompletedLocalizedString;
private readonly string autoLeavingLocalizedString;
private readonly string skipLocalizedString;
+ private readonly string leyLineDisorderLocalizedString;
+ private readonly string clickanywheretocloseLocalizedString;
public AutoDomainTask(AutoDomainParam taskParam)
{
@@ -78,6 +80,8 @@ public class AutoDomainTask : ISoloTask
this.challengeCompletedLocalizedString = stringLocalizer.WithCultureGet(cultureInfo, "挑战达成");
this.autoLeavingLocalizedString = stringLocalizer.WithCultureGet(cultureInfo, "自动退出");
this.skipLocalizedString = stringLocalizer.WithCultureGet(cultureInfo, "跳过");
+ this.leyLineDisorderLocalizedString = stringLocalizer.WithCultureGet(cultureInfo, "地脉异常");
+ this.clickanywheretocloseLocalizedString = stringLocalizer.WithCultureGet(cultureInfo, "点击任意位置关闭");
}
public async Task Start(CancellationToken ct)
@@ -382,7 +386,7 @@ public class AutoDomainTask : ISoloTask
// }
var ocrList = ra.FindMulti(RecognitionObject.Ocr(0, ra.Height * 0.2, ra.Width, ra.Height * 0.6));
- var done = ocrList.FirstOrDefault(txt => txt.Text.Contains("地脉异常") || txt.Text.Contains("点击任意") || txt.Text.Contains("位置关闭"));
+ var done = ocrList.FirstOrDefault(t => Regex.IsMatch(t.Text, this.leyLineDisorderLocalizedString) || Regex.IsMatch(t.Text, this.clickanywheretocloseLocalizedString));
if (done != null)
{
await Delay(1000, _ct);
diff --git a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.en.resx b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.en.resx
index 64720193..e763f9dc 100644
--- a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.en.resx
+++ b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.en.resx
@@ -117,8 +117,14 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Ley.*Line.*Disorder
+
- [Challenge,Completed]
+ (Challenge|Completed)
+
+
+ Click.*any.*where.*to.*close
Leaving
diff --git a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.fr.resx b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.fr.resx
index 2b0b6840..1a4e1308 100644
--- a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.fr.resx
+++ b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.fr.resx
@@ -117,8 +117,14 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Anomalie.*énergétique
+
- [Défi,terminé]
+ (Défi|terminé)
+
+
+ Cliquez.*pour.*fermer
Sortie
diff --git a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.zh-Hans.resx b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.zh-Hans.resx
index 4b01df9c..f2631d8a 100644
--- a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.zh-Hans.resx
+++ b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.zh-Hans.resx
@@ -117,11 +117,17 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 地脉异常
+
- [挑战,达成]
+ (挑战|达成)
+
+
+ 点击任意位置关闭
- [自动,退出]
+ (自动|退出)
跳过
diff --git a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.zh-Hant.resx b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.zh-Hant.resx
index e2b4f460..7fe233ef 100644
--- a/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.zh-Hant.resx
+++ b/BetterGenshinImpact/GameTask/AutoDomain/AutoDomainTask.zh-Hant.resx
@@ -117,11 +117,17 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 地[脈服][異翼昊]常
+
- [挑戰,達成]
+ (挑戰|達成)
+
+
+ 點擊任意位置關閉
- [自動,退出]
+ (自動|退出)
跳過
diff --git a/BetterGenshinImpact/GameTask/AutoFishing/AutoFishingImageRecognition.fr.resx b/BetterGenshinImpact/GameTask/AutoFishing/AutoFishingImageRecognition.fr.resx
index e81752ca..e310ae30 100644
--- a/BetterGenshinImpact/GameTask/AutoFishing/AutoFishingImageRecognition.fr.resx
+++ b/BetterGenshinImpact/GameTask/AutoFishing/AutoFishingImageRecognition.fr.resx
@@ -121,6 +121,6 @@
mordu
- P[ê|é]cher
+ P[êé]cher
\ No newline at end of file
diff --git a/BetterGenshinImpact/GameTask/Common/Element/Assets/MapLazyAssets.zh-Hant.resx b/BetterGenshinImpact/GameTask/Common/Element/Assets/MapLazyAssets.zh-Hant.resx
index e49b43e1..0e90c436 100644
--- a/BetterGenshinImpact/GameTask/Common/Element/Assets/MapLazyAssets.zh-Hant.resx
+++ b/BetterGenshinImpact/GameTask/Common/Element/Assets/MapLazyAssets.zh-Hant.resx
@@ -118,7 +118,7 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- 委[託,話]
+ 委[託話]
楓丹
diff --git a/BetterGenshinImpact/GameTask/Common/Job/ClaimEncounterPointsRewardsTask.zh-Hant.resx b/BetterGenshinImpact/GameTask/Common/Job/ClaimEncounterPointsRewardsTask.zh-Hant.resx
index a97a24e7..1de9a6c0 100644
--- a/BetterGenshinImpact/GameTask/Common/Job/ClaimEncounterPointsRewardsTask.zh-Hant.resx
+++ b/BetterGenshinImpact/GameTask/Common/Job/ClaimEncounterPointsRewardsTask.zh-Hant.resx
@@ -118,6 +118,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- 委[託,話]
+ 委[託話]
\ No newline at end of file
diff --git a/BetterGenshinImpact/GameTask/Common/Job/GoToCraftingBenchTask.fr.resx b/BetterGenshinImpact/GameTask/Common/Job/GoToCraftingBenchTask.fr.resx
index 164dd0e9..9f7351af 100644
--- a/BetterGenshinImpact/GameTask/Common/Job/GoToCraftingBenchTask.fr.resx
+++ b/BetterGenshinImpact/GameTask/Common/Job/GoToCraftingBenchTask.fr.resx
@@ -118,6 +118,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- Synth[è|é]se
+ Synth[èé](se|tiser)
\ No newline at end of file
diff --git a/Test/BetterGenshinImpact.UnitTest/CoreTests/RecognitionTests/OCRTests/PaddleCollection.cs b/Test/BetterGenshinImpact.UnitTest/CoreTests/RecognitionTests/OCRTests/PaddleCollection.cs
new file mode 100644
index 00000000..fbdd8b0b
--- /dev/null
+++ b/Test/BetterGenshinImpact.UnitTest/CoreTests/RecognitionTests/OCRTests/PaddleCollection.cs
@@ -0,0 +1,25 @@
+using BetterGenshinImpact.Core.Recognition.OCR;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace BetterGenshinImpact.UnitTest.CoreTests.RecognitionTests.OCRTests
+{
+ [CollectionDefinition("Paddle Collection")]
+ public class PaddleCollection : ICollectionFixture
+ {
+ }
+
+ public class PaddleFixture
+ {
+ private readonly ConcurrentDictionary paddleOcrServices = new ConcurrentDictionary();
+
+ public PaddleOcrService Get(string cultureInfoName = "zh-Hans")
+ {
+ return paddleOcrServices.GetOrAdd(cultureInfoName, name => { lock (paddleOcrServices) { return new PaddleOcrService(name); } });
+ }
+ }
+}
diff --git a/Test/BetterGenshinImpact.UnitTest/CoreTests/RecognitionTests/OCRTests/PaddleOcrServiceTests.cs b/Test/BetterGenshinImpact.UnitTest/CoreTests/RecognitionTests/OCRTests/PaddleOcrServiceTests.cs
index e68f0a97..110ef79a 100644
--- a/Test/BetterGenshinImpact.UnitTest/CoreTests/RecognitionTests/OCRTests/PaddleOcrServiceTests.cs
+++ b/Test/BetterGenshinImpact.UnitTest/CoreTests/RecognitionTests/OCRTests/PaddleOcrServiceTests.cs
@@ -7,32 +7,42 @@ using System.Threading.Tasks;
using BetterGenshinImpact.Core.Recognition.OCR;
using System.Drawing;
using OpenCvSharp.Extensions;
-using System.Text.RegularExpressions;
-using System.Collections.Concurrent;
namespace BetterGenshinImpact.UnitTest.CoreTests.RecognitionTests.OCRTests
{
+ [Collection("Paddle Collection")]
public partial class PaddleOcrServiceTests
{
- private static readonly ConcurrentDictionary paddleOcrServices = new ConcurrentDictionary();
+ private readonly PaddleFixture paddle;
+ public PaddleOcrServiceTests(PaddleFixture paddle)
+ {
+ this.paddle = paddle;
+ }
[Theory]
- [InlineData("zh-Hans", "挑战,达成", "[挑战,达成]")]
+ [InlineData("zh-Hans", "挑战,达成", "挑战.*达成")]
[InlineData("zh-Hans", "凯瑟琳")]
+ [InlineData("zh-Hans", "点击任意位置关闭")]
[InlineData("en", "Daily")]
[InlineData("en", "Katheryne")]
+ [InlineData("en", "Clickany where to close", "Click.*any.*where.*to.*close")]
[InlineData("zh-Hant", "凱瑟琳")]
- [InlineData("zh-Hant", "委託", "委[託,話]")]
- [InlineData("zh-Hant", "挑戰,達成", "[挑戰,達成]")]
- [InlineData("zh-Hant", "自動,退出", "[自動,退出]")]
+ [InlineData("zh-Hant", "委託", "委[託話]")]
+ [InlineData("zh-Hant", "挑戰,達成", "挑戰.*達成")]
+ [InlineData("zh-Hant", "自動,退出", "自動.*退出")]
[InlineData("zh-Hant", "跳過")]
+ [InlineData("zh-Hant", "地脈異常", "地[脈服][異翼昊]常")]
+ [InlineData("zh-Hant", "點擊任意位置關閉")]
[InlineData("fr", "quotidien")]
[InlineData("fr", "Expédition")]
- [InlineData("fr", "Pêcher", "P[ê|é]cher")]
- [InlineData("fr", "Synthèse", "Synth[è|é]se")]
- [InlineData("fr", "Défi, terminé", "[Défi,terminé]")]
+ [InlineData("fr", "Pêcher", "P[êé]cher")]
+ [InlineData("fr", "Synthèse", "Synth[èé](se|tiser)")]
+ [InlineData("fr", "Synthétiser", "Synth[èé](se|tiser)")]
+ [InlineData("fr", "Défi, terminé", "Défi.*terminé")]
[InlineData("fr", "Sortie")]
[InlineData("fr", "Passer")]
+ [InlineData("fr", "Anomalie énergétique", "Anomalie.*énergétique")]
+ [InlineData("fr", "Cliquez pour fermer", "Cliquez.*pour.*fermer")]
///
/// 测试识别各种文字,结果为成功
///
@@ -50,7 +60,7 @@ namespace BetterGenshinImpact.UnitTest.CoreTests.RecognitionTests.OCRTests
using Mat mat = mat4.CvtColor(ColorConversionCodes.RGBA2RGB);
//
- PaddleOcrService sut = paddleOcrServices.GetOrAdd(cultureInfoName, name => { lock (paddleOcrServices) { return new PaddleOcrService(name); } });
+ PaddleOcrService sut = paddle.Get(cultureInfoName);
string actual = sut.Ocr(mat).Replace(" ", "");
//
diff --git a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.CheckRaiseHook.cs b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.CheckRaiseHook.cs
index a23f9e5f..25f1d384 100644
--- a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.CheckRaiseHook.cs
+++ b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.CheckRaiseHook.cs
@@ -45,7 +45,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
var sut = FluentBuilder.Create()
.MySimpleParallel("下杆中", SimpleParallelPolicy.OnlyOneMustSucceed)
.PushLeaf(() => new CheckThrowRod("检查抛竿结果", blackboard, logger, false, timeProvider)) // todo 后面串联一个召回率高的下杆中检测方法
- .PushLeaf(() => new FishBite("自动提竿", blackboard, logger, false, input, ocrService, drawContent))
+ .PushLeaf(() => new FishBite("自动提竿", blackboard, logger, false, input, OcrService, drawContent))
.PushLeaf(() => new FishBiteTimeout("下杆超时检查", 15, logger, false, input, timeProvider))
.End()
.Build();
diff --git a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.FishBite.cs b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.FishBite.cs
index d6296348..7ce722de 100644
--- a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.FishBite.cs
+++ b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.FishBite.cs
@@ -6,6 +6,8 @@ using BehaviourTree.Composites;
using BehaviourTree.FluentBuilder;
using Microsoft.Extensions.Time.Testing;
using OpenCvSharp;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Localization;
namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
{
@@ -29,7 +31,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Blackboard blackboard = new Blackboard(autoFishingAssets: autoFishingAssets);
//
- FishBite sut = new FishBite("-", blackboard, new FakeLogger(), false, new FakeInputSimulator(), ocrService, drawContent: new FakeDrawContent());
+ FishBite sut = new FishBite("-", blackboard, new FakeLogger(), false, new FakeInputSimulator(), OcrService, drawContent: new FakeDrawContent());
BehaviourStatus actual = sut.Tick(imageRegion);
//
@@ -60,7 +62,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
var sut = FluentBuilder.Create()
.MySimpleParallel("-", SimpleParallelPolicy.OnlyOneMustSucceed)
//.PushLeaf(() => new CheckThrowRod("-", logger, false, fakeTimeProvider)) // todo
- .PushLeaf(() => new FishBite("-", blackboard, logger, false, input, ocrService, drawContent: new FakeDrawContent()))
+ .PushLeaf(() => new FishBite("-", blackboard, logger, false, input, OcrService, drawContent: new FakeDrawContent()))
.PushLeaf(() => fishBiteTimeoutBehaviour)
.End()
.Build();
@@ -104,12 +106,17 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Mat mat = new Mat(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}");
var imageRegion = new GameCaptureRegion(mat, 0, 0, new DesktopRegion(new FakeMouseSimulator()), converter: new ScaleConverter(1d), drawContent: new FakeDrawContent());
+ ServiceCollection services = new ServiceCollection();
+ services.AddLogging().AddLocalization();
+ using ServiceProvider sp = services.BuildServiceProvider();
+ IStringLocalizer autoFishingImageRecognitionStringLocalizer = sp.GetRequiredService>();
+
FakeSystemInfo systemInfo = new FakeSystemInfo(new Vanara.PInvoke.RECT(0, 0, mat.Width, mat.Height), 1);
AutoFishingAssets autoFishingAssets = new AutoFishingAssets(systemInfo);
Blackboard blackboard = new Blackboard(autoFishingAssets: autoFishingAssets);
//
- FishBite sut = new FishBite("-", blackboard, new FakeLogger(), false, new FakeInputSimulator(), ocrService, drawContent: new FakeDrawContent(), new System.Globalization.CultureInfo(cultureName), this.autoFishingImageRecognitionStringLocalizer);
+ FishBite sut = new FishBite("-", blackboard, new FakeLogger(), false, new FakeInputSimulator(), OcrService, drawContent: new FakeDrawContent(), new System.Globalization.CultureInfo(cultureName), autoFishingImageRecognitionStringLocalizer);
BehaviourStatus actual = sut.Tick(imageRegion);
//
diff --git a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.GetFishpond.cs b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.GetFishpond.cs
index 3940cc4b..fa52d818 100644
--- a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.GetFishpond.cs
+++ b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.GetFishpond.cs
@@ -30,9 +30,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Mat mat = new Mat(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}");
var imageRegion = new GameCaptureRegion(mat, 0, 0, drawContent: new FakeDrawContent());
- var predictor = YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build();
-
- var blackboard = new Blackboard(predictor, sleep: i => { });
+ var blackboard = new Blackboard(Predictor, sleep: i => { });
//
GetFishpond sut = new GetFishpond("-", blackboard, new FakeLogger(), false, new FakeTimeProvider(), drawContent: new FakeDrawContent());
@@ -58,9 +56,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Mat mat = new Mat(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}");
var imageRegion = new GameCaptureRegion(mat, 0, 0, drawContent: new FakeDrawContent());
- var predictor = YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build();
-
- var blackboard = new Blackboard(predictor, sleep: i => { });
+ var blackboard = new Blackboard(Predictor, sleep: i => { });
blackboard.chooseBaitFailures = chooseBaitfailures.ToList();
blackboard.throwRodNoBaitFishFailures = throwRodNoTargetFishfailures.ToList();
@@ -93,9 +89,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Mat mat = new Mat(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}");
var imageRegion = new GameCaptureRegion(mat, 0, 0, drawContent: new FakeDrawContent());
- var predictor = YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build();
-
- var blackboard = new Blackboard(predictor, sleep: i => { });
+ var blackboard = new Blackboard(Predictor, sleep: i => { });
//
GetFishpond sut = new GetFishpond("-", blackboard, new FakeLogger(), false, new FakeTimeProvider(), drawContent: new FakeDrawContent());
diff --git a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.ThrowRod.cs b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.ThrowRod.cs
index 0f6887ad..b1105b81 100644
--- a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.ThrowRod.cs
+++ b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.ThrowRod.cs
@@ -30,9 +30,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Mat mat = new Mat(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}");
var imageRegion = new GameCaptureRegion(mat, 0, 0, new DesktopRegion(new FakeMouseSimulator()), converter: new ScaleConverter(1d), drawContent: new FakeDrawContent());
- var predictor = YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build();
-
- var blackboard = new Blackboard(predictor, sleep: i => { })
+ var blackboard = new Blackboard(Predictor, sleep: i => { })
{
selectedBaitName = selectedBaitName
};
@@ -60,9 +58,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Mat mat = new Mat(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}");
var imageRegion = new GameCaptureRegion(mat, 0, 0, new DesktopRegion(new FakeMouseSimulator()), converter: new ScaleConverter(1d), drawContent: new FakeDrawContent());
- var predictor = YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build();
-
- var blackboard = new Blackboard(predictor, sleep: i => { })
+ var blackboard = new Blackboard(Predictor, sleep: i => { })
{
selectedBaitName = selectedBaitName
};
@@ -89,9 +85,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Mat mat = new Mat(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}");
var imageRegion = new GameCaptureRegion(mat, 0, 0, new DesktopRegion(new FakeMouseSimulator()), converter: new ScaleConverter(1d), drawContent: new FakeDrawContent());
- var predictor = YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build();
-
- var blackboard = new Blackboard(predictor, sleep: i => { })
+ var blackboard = new Blackboard(Predictor, sleep: i => { })
{
selectedBaitName = selectedBaitName
};
@@ -130,9 +124,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Mat mat = new Mat(@$"..\..\..\Assets\AutoFishing\202503082114541115.png");
var imageRegion = new GameCaptureRegion(mat, 0, 0, new DesktopRegion(new FakeMouseSimulator()), converter: new ScaleConverter(1d), drawContent: new FakeDrawContent());
- var predictor = YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build();
-
- var blackboard = new Blackboard(predictor, sleep: i => { })
+ var blackboard = new Blackboard(Predictor, sleep: i => { })
{
selectedBaitName = "fake fly bait"
};
@@ -172,9 +164,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
Mat mat = new Mat(@$"..\..\..\Assets\AutoFishing\{screenshot1080p}");
var imageRegion = new GameCaptureRegion(mat, 0, 0, new DesktopRegion(new FakeMouseSimulator()), converter: new ScaleConverter(1d), drawContent: new FakeDrawContent());
- var predictor = YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build();
-
- var blackboard = new Blackboard(predictor, sleep: i => { });
+ var blackboard = new Blackboard(Predictor, sleep: i => { });
FakeTimeProvider fakeTimeProvider = new FakeTimeProvider();
@@ -211,9 +201,7 @@ namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
FakeDrawContent drawContent = new FakeDrawContent();
var imageRegion = new GameCaptureRegion(mat, 0, 0, new DesktopRegion(input.Mouse), converter: new ScaleConverter(1d), drawContent: drawContent);
- var predictor = YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build();
-
- var blackboard = new Blackboard(predictor, sleep: i => { });
+ var blackboard = new Blackboard(Predictor, sleep: i => { });
FakeTimeProvider timeProvider = new FakeTimeProvider();
FakeLogger logger = new FakeLogger();
diff --git a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.cs b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.cs
index b57989e0..a559b8df 100644
--- a/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.cs
+++ b/Test/BetterGenshinImpact.UnitTest/GameTaskTests/AutoFishingTests/BehavioursTests.cs
@@ -1,29 +1,37 @@
-using BetterGenshinImpact.Core.Recognition.OCR;
-using BetterGenshinImpact.GameTask.AutoFishing;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Localization;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using BetterGenshinImpact.Core.Config;
+using BetterGenshinImpact.Core.Recognition.OCR;
+using BetterGenshinImpact.UnitTest.CoreTests.RecognitionTests.OCRTests;
+using Compunet.YoloV8;
namespace BetterGenshinImpact.UnitTest.GameTaskTests.AutoFishingTests
{
+ [Collection("Paddle Collection")]
public partial class BehavioursTests
{
- private readonly IStringLocalizer? autoFishingImageRecognitionStringLocalizer;
#pragma warning disable CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑添加 "required" 修饰符或声明为可为 null。
- private static IOcrService ocrService;
+ private static YoloV8Predictor predictor;
#pragma warning restore CS8618 // 在退出构造函数时,不可为 null 的字段必须包含非 null 值。请考虑添加 "required" 修饰符或声明为可为 null。
- public BehavioursTests()
- {
- ServiceCollection services = new ServiceCollection();
- services.AddLogging().AddLocalization();
- using ServiceProvider sp = services.BuildServiceProvider();
- this.autoFishingImageRecognitionStringLocalizer = sp.GetRequiredService>();
- LazyInitializer.EnsureInitialized(ref ocrService, () => new PaddleOcrService());
+ private readonly PaddleFixture paddle;
+ public BehavioursTests(PaddleFixture paddle)
+ {
+ this.paddle = paddle;
+ }
+
+ private IOcrService OcrService
+ {
+ get
+ {
+ return this.paddle.Get();
+ }
+ }
+
+ private static YoloV8Predictor Predictor
+ {
+ get
+ {
+ return LazyInitializer.EnsureInitialized(ref predictor, () => YoloV8Builder.CreateDefaultBuilder().UseOnnxModel(Global.Absolute(@"Assets\Model\Fish\bgi_fish.onnx")).Build());
+ }
}
}
}