From 4e3b10ded7d1162ceadb0eadf0ab1b95964d6420 Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Wed, 16 Apr 2025 17:18:44 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=9F=BA=E5=BB=BA=E5=B9=B2=E5=91=98?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=BB=91=E5=8A=A8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Task/Infrast/InfrastAbstractTask.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/MaaCore/Task/Infrast/InfrastAbstractTask.cpp b/src/MaaCore/Task/Infrast/InfrastAbstractTask.cpp index e5b5162f62..fc41bfaaba 100644 --- a/src/MaaCore/Task/Infrast/InfrastAbstractTask.cpp +++ b/src/MaaCore/Task/Infrast/InfrastAbstractTask.cpp @@ -442,7 +442,8 @@ bool asst::InfrastAbstractTask::select_custom_opers(std::vector& pa } oper_analyzer.sort_by_loc(); partial_result.clear(); - for (const auto& oper : oper_analyzer.get_result()) { + const auto& result = oper_analyzer.get_result(); + for (const auto& oper : result) { RegionOCRer name_analyzer; name_analyzer.set_replace(ocr_replace->replace_map, ocr_replace->replace_full); name_analyzer.set_image(oper.name_img); @@ -466,7 +467,18 @@ bool asst::InfrastAbstractTask::select_custom_opers(std::vector& pa } // 如果识别到了自定义的干员,延迟 500 ms 后重新识别准确位置,避免触底动画影响 - sleep(500); + if (result.size() >= 3) { + const auto views = result | views::drop(result.size() - 3); + const auto& first = views.front(); + const auto& end = views.back(); + if (image.cols > end.rect.x + (end.rect.x - first.rect.x)) { + // 如果最后一列干员后,还能塞一列,则认为是触底了 + sleep(500); + } + } + else { + sleep(500); + } image = ctrler()->get_image(); InfrastOperImageAnalyzer oper_analyzer2(image);