From 05ddb26e8d817f95fbb5ed82f2feee03ed31f787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E5=AE=B6=E6=AC=A3?= <869540029@qq.com> Date: Wed, 19 Apr 2023 16:22:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=AA=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E5=AE=8C=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 16 +++++++-------- resource/template/OperatorRoleTab.png | Bin 1256 -> 1803 bytes resource/template/OperatorRoleTabSelect.png | Bin 1893 -> 2164 bytes .../Config/Miscellaneous/BattleDataConfig.cpp | 1 - .../Miscellaneous/OperImageAnalyzer.cpp | 19 ++++++++++++++++-- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index 6386d7c5ff..02ab3a84df 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -9616,16 +9616,16 @@ 110 ], "next": [ - "OperatorRarityTab" + "OperatorRoleTabSelect" ] }, "OperatorRoleTabSelect": { "action": "ClickSelf", "roi": [ - 1210, - 30, - 68, - 23 + 1200, + 20, + 80, + 50 ], "next": [ "OperatorRoleTab" @@ -9634,9 +9634,9 @@ "OperatorRoleTab": { "action": "DoNothing", "roi": [ - 1197, - 14, - 82, + 1195, + 15, + 80, 50 ] }, diff --git a/resource/template/OperatorRoleTab.png b/resource/template/OperatorRoleTab.png index 64bd65fcbffd91d9a816d8f06b48a8f90316b612..51f39f98c70c7ac3f8ad2aad9dd00d27bc97f189 100644 GIT binary patch literal 1803 zcmV+m2lV)fP)mPG z(ypW@t(>MiKD2M2p5FH^JuNGh${ggnXhN82?wLBp*X=`E-u7*6G!zmy;9yGhd$93qCdA?y{Fe-#QdWf5V+D3nU zo>xZk(Up44jC~$pup_{Z7Eh!h_1G78=@{^Y1SJI&h|9#7e+d=#b_NjOBxG$G)6v4uL+_-TAH*em=-u^zqOo+R8 zmvMZ2j9R^(tQA)SH?fV(RKmkbbzM6Q&CPFhh03v9P0@vcBgh1pnx4k`)2Eirudn;4 zR{uh|T(;;@6ro;=?(bjXK)x7NUqtg;!U<$JJFA{r)u;7Ur?Hw=WkB zf&k@G38SNVY;XTbs&yPi*=!c0qlI`a#!x7XA)5{L>P+vjbPPOt^w6%vu$lv65<`3a z$Ch2uxow2dP!w})xDkdf- zB|Vb~F+Dwn%gamDYV}lgS63zzU~+O2nM?+!r>6-XW{k#|Cq!*unnZw~#{o|EX;R)e z$tA|57jNAvBbUoc1sjcqWE0+Rx7#uzvSBE_uS5wDb8~a@|K+P!-YPBrg|S5RTwf0) zXvT~q1y`j~p+0e1EVtux?c)NEqa~z8%xY4k*JJP^S3iILjNRQmnTzx?@{Rw*Xb=rh ztJU!M@go%9j9Jh0*25sfe13i&o0~7KBBeT+jxeeV%CZ8to;&XMdOW0>s7{Q-_J~kU zgmXdOj4B|n?0u+ly%*@Q7P#DG88Aq$t#@`=5 z%G^~FzI>^ndC}C$cdssSa&m&@w6E4bLY&d<+r@XtYdUrvBmsuj-(joV)5(E2*Ct;o`aOouVEX6q_0 zlodrPmm5K;R6?;hF1>zod?Nn^?bpps%+Ac<{{4G+{`_a{P*Lp<50B7jG-cje3UH1_ zy@9uH-=Wv*SsfNt-p=Xtwq=8cXa6>pQEi5yZ4?7u@QKPhHGLbiv$Ik$K^J>#v)Pml zis-72j*sP*b5=^^|cBdn^tz0%IJr@KF<#Gu-ySv&`q7N5)>c)>7 z7%z^?NVvFYY8^y$93CFZ=0;p1ZAbo%lGmoo>pqi%{I;uu>U6o9FLlTx*>DH@Gsh4Vif>AtNZ`}002ovPDHLkV1nykca;DD literal 1256 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 diff --git a/src/MaaCore/Config/Miscellaneous/BattleDataConfig.cpp b/src/MaaCore/Config/Miscellaneous/BattleDataConfig.cpp index a6dd536a87..e5503119e0 100644 --- a/src/MaaCore/Config/Miscellaneous/BattleDataConfig.cpp +++ b/src/MaaCore/Config/Miscellaneous/BattleDataConfig.cpp @@ -3,7 +3,6 @@ #include "Utils/Logger.hpp" #include "Utils/Ranges.hpp" #include -#include bool asst::BattleDataConfig::parse(const json::value& json) { diff --git a/src/MaaCore/Vision/Miscellaneous/OperImageAnalyzer.cpp b/src/MaaCore/Vision/Miscellaneous/OperImageAnalyzer.cpp index c4b6c9570c..53b7c06859 100644 --- a/src/MaaCore/Vision/Miscellaneous/OperImageAnalyzer.cpp +++ b/src/MaaCore/Vision/Miscellaneous/OperImageAnalyzer.cpp @@ -26,6 +26,8 @@ bool asst::OperImageAnalyzer::analyze() bool asst::OperImageAnalyzer::analyzer_opers() { + std::vector oper_names_result; + oper_names_result.clear(); const auto& ocr_replace = Task.get("CharsNameOcrReplace"); OcrWithFlagTemplImageAnalyzer oper_name_analyzer(m_image); @@ -34,7 +36,20 @@ bool asst::OperImageAnalyzer::analyzer_opers() oper_name_analyzer.set_replace(ocr_replace->replace_map, ocr_replace->replace_full); oper_name_analyzer.analyze(); - auto oper_names_result = oper_name_analyzer.get_result(); + oper_names_result = oper_name_analyzer.get_result(); + // 按位置排个序-先直接copy代码过来,后面可能重构 ( + // +---+ + // |1 3| + // |2 4| + // +---+ + ranges::sort(oper_names_result, [](const TextRect& lhs, const TextRect& rhs) -> bool { + if (std::abs(lhs.rect.x - rhs.rect.x) < 5) { // x差距较小则理解为是同一排的,按y排序 + return lhs.rect.y < rhs.rect.y; + } + else { + return lhs.rect.x < rhs.rect.x; + } + }); if (oper_names_result.empty()) { return false; @@ -43,7 +58,7 @@ bool asst::OperImageAnalyzer::analyzer_opers() for (auto& opername : oper_names_result) { OperBoxInfo oper_info; oper_info.name = std::move(opername.text); - current_page_opers.push_back(oper_info); + current_page_opers.emplace_back(oper_info); #ifdef ASST_DEBUG m_image_draw_oper = m_image; cv::rectangle(m_image_draw_oper, make_rect(opername.rect), cv::Scalar(0, 255, 0), 2);