mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-09 00:34:14 +08:00
@@ -16,6 +16,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using BetterGenshinImpact.Core.Script.Dependence;
|
||||
|
||||
namespace BetterGenshinImpact.GameTask.Common.Job
|
||||
{
|
||||
@@ -81,6 +82,26 @@ namespace BetterGenshinImpact.GameTask.Common.Job
|
||||
return result;
|
||||
}
|
||||
|
||||
private async Task PreScrollToBottomForWeaponOre()
|
||||
{
|
||||
// 长按滑动栏底部,快速翻页到底部后,再继续滚动确保在最后一页
|
||||
GameCaptureRegion.GameRegion1080PPosMove(1289, 936);
|
||||
try
|
||||
{
|
||||
GlobalMethod.LeftButtonDown();
|
||||
await TaskControl.Delay(2000, ct);
|
||||
}
|
||||
finally
|
||||
{
|
||||
GlobalMethod.LeftButtonUp();
|
||||
}
|
||||
var gridScroller = new GridScroller(GridParams.Templates[gridScreenName], logger, input, ct);
|
||||
while (await gridScroller.TryVerticalScollDown((src, columns) => GridScreen.GridEnumerator.GetGridItems(src, columns)))
|
||||
{
|
||||
await TaskControl.Delay(300, ct);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<int> FindOne(InferenceSession session, Dictionary<string, float[]> prototypes)
|
||||
{
|
||||
GridScreen gridScreen = new GridScreen(GridParams.Templates[this.gridScreenName], logger, ct);
|
||||
@@ -89,6 +110,13 @@ namespace BetterGenshinImpact.GameTask.Common.Job
|
||||
int? count = null;
|
||||
try
|
||||
{
|
||||
//如果是武器页的武器经验道具,直接翻页到最底部
|
||||
if (gridScreenName == GridScreenName.Weapons && itemName!.StartsWith("精锻用"))
|
||||
{
|
||||
await PreScrollToBottomForWeaponOre();
|
||||
}
|
||||
|
||||
//开始识别
|
||||
await foreach ((ImageRegion pageRegion, Rect itemRect) in gridScreen)
|
||||
{
|
||||
using ImageRegion itemRegion = pageRegion.DeriveCrop(itemRect);
|
||||
@@ -138,6 +166,12 @@ namespace BetterGenshinImpact.GameTask.Common.Job
|
||||
gridScreen.OnBeforeScroll += () => VisionContext.Instance().DrawContent.ClearAll();
|
||||
try
|
||||
{
|
||||
//如果包含武器页的武器经验道具,直接翻页到最底部
|
||||
bool hasOre = itemNames!.Any(name => name.StartsWith("精锻用"));
|
||||
if (gridScreenName == GridScreenName.Weapons && hasOre)
|
||||
{
|
||||
await PreScrollToBottomForWeaponOre();
|
||||
}
|
||||
await foreach ((ImageRegion pageRegion, Rect itemRect) in gridScreen)
|
||||
{
|
||||
using ImageRegion itemRegion = pageRegion.DeriveCrop(itemRect);
|
||||
|
||||
Reference in New Issue
Block a user