From 38c7361871b6fc6a75369d1a6aab684d7f0f643b Mon Sep 17 00:00:00 2001 From: MistEO Date: Thu, 4 Nov 2021 00:20:02 +0800 Subject: [PATCH] =?UTF-8?q?perf.=E4=BC=98=E5=8C=96=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E7=BA=BF=E7=B4=A2=E4=BA=A4=E6=B5=81=E5=90=8E=E7=9A=84=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 2 +- src/MeoAssistance/InfrastReceptionTask.cpp | 61 +++++++++++++--------- src/MeoAssistance/InfrastReceptionTask.h | 1 + 3 files changed, 38 insertions(+), 26 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index 7e6d4b9131..809f49cdb7 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -1424,6 +1424,6 @@ "template": "UnlockClues.png", "action": "clickSelf", "cache": false, - "rearDelay": 3000 + "rearDelay": 5000 } } \ No newline at end of file diff --git a/src/MeoAssistance/InfrastReceptionTask.cpp b/src/MeoAssistance/InfrastReceptionTask.cpp index c4ea58a56b..9630fa9a98 100644 --- a/src/MeoAssistance/InfrastReceptionTask.cpp +++ b/src/MeoAssistance/InfrastReceptionTask.cpp @@ -75,33 +75,10 @@ bool asst::InfrastReceptionTask::proc_clue() const static std::vector clue_suffix = { "No1", "No2", "No3", "No4", "No5", "No6", "No7" }; - cv::Mat image; - for (const std::string& clue : clue_suffix) { - // 先识别线索的空位 - image = ctrler.get_image(); - InfrastClueVacancyImageAnalyzer vacancy_analyzer(image); - vacancy_analyzer.set_to_be_analyzed({ clue }); - if (!vacancy_analyzer.analyze()) { - continue; - } - // 点开线索的空位 - Rect vacancy = vacancy_analyzer.get_vacancy().cbegin()->second; - ctrler.click(vacancy); - int delay = resource.task().task_ptr(clue_vacancy + clue)->rear_delay; - sleep(delay); + proc_vacancy(); - // 识别右边列表中的线索,然后用最底下的那个(一般都是剩余时间最短的) - swipe_to_the_bottom_of_clue_list_on_the_right(); - image = ctrler.get_image(); - InfrastClueImageAnalyzer clue_analyzer(image); - if (!clue_analyzer.analyze()) { - continue; - } - ctrler.click(clue_analyzer.get_result().back().first); - sleep(delay); - } // 开启线索交流,“解锁线索” - image = ctrler.get_image(); + cv::Mat image = ctrler.get_image(); MatchImageAnalyzer unlock_analyzer(image); const auto unlock_task_ptr = std::dynamic_pointer_cast( resource.task().task_ptr("UnlockClues")); @@ -110,6 +87,7 @@ bool asst::InfrastReceptionTask::proc_clue() ctrler.click(unlock_analyzer.get_result().rect); sleep(unlock_task_ptr->rear_delay); click_bottomleft_tab(); + proc_vacancy(); image = ctrler.get_image(); } @@ -136,6 +114,39 @@ bool asst::InfrastReceptionTask::proc_clue() return true; } +bool asst::InfrastReceptionTask::proc_vacancy() +{ + const static std::string clue_vacancy = "InfrastClueVacancy"; + const static std::vector clue_suffix = { + "No1", "No2", "No3", "No4", "No5", "No6", "No7" }; + + for (const std::string& clue : clue_suffix) { + // 先识别线索的空位 + cv::Mat image = ctrler.get_image(); + InfrastClueVacancyImageAnalyzer vacancy_analyzer(image); + vacancy_analyzer.set_to_be_analyzed({ clue }); + if (!vacancy_analyzer.analyze()) { + continue; + } + // 点开线索的空位 + Rect vacancy = vacancy_analyzer.get_vacancy().cbegin()->second; + ctrler.click(vacancy); + int delay = resource.task().task_ptr(clue_vacancy + clue)->rear_delay; + sleep(delay); + + // 识别右边列表中的线索,然后用最底下的那个(一般都是剩余时间最短的) + swipe_to_the_bottom_of_clue_list_on_the_right(); + image = ctrler.get_image(); + InfrastClueImageAnalyzer clue_analyzer(image); + if (!clue_analyzer.analyze()) { + continue; + } + ctrler.click(clue_analyzer.get_result().back().first); + sleep(delay); + } + return true; +} + bool asst::InfrastReceptionTask::shift() { const auto& image = ctrler.get_image(); diff --git a/src/MeoAssistance/InfrastReceptionTask.h b/src/MeoAssistance/InfrastReceptionTask.h index cc1c647735..94eec97a4a 100644 --- a/src/MeoAssistance/InfrastReceptionTask.h +++ b/src/MeoAssistance/InfrastReceptionTask.h @@ -13,6 +13,7 @@ namespace asst { private: bool harvest_clue(); bool proc_clue(); + bool proc_vacancy(); bool shift(); bool swipe_to_the_bottom_of_clue_list_on_the_right(); };