mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-18 18:20:39 +08:00
perf.优化开启线索交流后的操作逻辑
This commit is contained in:
@@ -75,33 +75,10 @@ bool asst::InfrastReceptionTask::proc_clue()
|
||||
const static std::vector<std::string> 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<MatchTaskInfo>(
|
||||
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<std::string> 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();
|
||||
|
||||
Reference in New Issue
Block a user