From 710bdacc3badf4f50f53d9cd5578f7ff90fd5be0 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 5 Jan 2022 23:09:56 +0800 Subject: [PATCH] =?UTF-8?q?fix.=E9=87=8D=E6=9E=84=E4=BC=9A=E5=AE=A2?= =?UTF-8?q?=E5=AE=A4=EF=BC=8C=E4=BF=AE=E5=A4=8D=E4=BC=9A=E5=AE=A2=E5=AE=A4?= =?UTF-8?q?=E7=9A=84=E5=90=84=E7=A7=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 103 ++++++++++++++++------ resource/template/ReceptionFlag.png | Bin 0 -> 6012 bytes src/MeoAssistant/InfrastReceptionTask.cpp | 67 +++++--------- src/MeoAssistant/InfrastReceptionTask.h | 10 +-- 4 files changed, 105 insertions(+), 75 deletions(-) create mode 100644 resource/template/ReceptionFlag.png diff --git a/resource/tasks.json b/resource/tasks.json index 4c3258e427..495f64e7d7 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -2585,30 +2585,26 @@ 100 ] }, - "InfrastClueNew": { + "InfrastClueSelfNew": { "template": "ClueNew.png", "action": "clickSelf", "roi": [ - 1000, - 0, - 280, - 720 + 1150, + 100, + 130, + 80 ], - "maxTimes": 2, - "cache": false, "rectMove": [ -45, 15, 60, 60 ], - "templThreshold": 0.8, "next": [ - "GetClue1", - "GetClue2" + "GetSelfClue" ] }, - "GetClue1": { + "GetSelfClue": { "template": "GetClue1.png", "action": "clickSelf", "roi": [ @@ -2618,12 +2614,31 @@ 80 ], "next": [ - "InfrastClueNew", - "CloseCluePage" - ], - "rearDelay": 2000 + "InfrastClueFriendNew", + "CloseCluePage", + "ReceptionFlag" + ] }, - "GetClue2": { + "InfrastClueFriendNew": { + "template": "ClueNew.png", + "action": "clickSelf", + "roi": [ + 1150, + 220, + 130, + 80 + ], + "rectMove": [ + -45, + 15, + 60, + 60 + ], + "next": [ + "GetFriendClue" + ] + }, + "GetFriendClue": { "template": "GetClue2.png", "action": "clickSelf", "roi": [ @@ -2633,9 +2648,8 @@ 120 ], "next": [ - "InfrastClueNew" - ], - "rearDelay": 2000 + "ReceptionFlag" + ] }, "CloseCluePage": { "template": "CloseCluePage.png", @@ -2647,20 +2661,49 @@ 120 ], "next": [ - "InfrastClueNew" + "CloseCluePage", + "SendClueFlag", + "InfrastClueFriendNew", + "ReceptionFlag" + ] + }, + "SendClueFlag": { + "action": "doNothing", + "doc": "这里识别的是自己的线索的new:如果获取完自己的线索、再获取完好友送的线索,自己的线索new还亮着,则说明自己的线索没获取成功,即线索满了", + "next": [ + "SendClues" ], - "rearDelay": 1000 + "roi": [ + 1150, + 100, + 130, + 80 + ], + "template": "ClueNew.png" }, "UnlockClues": { "template": "UnlockClues.png", "action": "clickSelf", + "templThreshold": 0.95, "roi": [ - 480, + 200, 600, - 460, + 700, 120 ], - "rearDelay": 5000 + "rearDelay": 5000, + "next": [ + "InfrastBottomLeftTab" + ] + }, + "ReceptionFlag": { + "action": "doNothing", + "roi": [ + 350, + 0, + 200, + 100 + ] }, "EndOfClueExchange": { "cache": false, @@ -2683,7 +2726,9 @@ 180, 80 ], - "rearDelay": 3000 + "next": [ + "ReceptionFlag" + ] }, "SendClues": { "action": "clickSelf", @@ -2731,6 +2776,7 @@ "ClueGiveTo1st": { "template": "ClusCanBeSent.png", "action": "doNothing", + "cache": false, "maskRange": [ 1, 255 @@ -2762,6 +2808,7 @@ "ClueGiveTo2nd": { "template": "ClusCanBeSent.png", "action": "doNothing", + "cache": false, "maskRange": [ 1, 255 @@ -2793,6 +2840,7 @@ "ClueGiveTo3rd": { "template": "ClusCanBeSent.png", "action": "doNothing", + "cache": false, "maskRange": [ 1, 255 @@ -2824,6 +2872,7 @@ "ClueGiveTo4th": { "template": "ClusCanBeSent.png", "action": "doNothing", + "cache": false, "maskRange": [ 1, 255 @@ -2859,10 +2908,14 @@ 16, 41, 41 + ], + "next": [ + "InfrastClueSelfNew" ] }, "ClueGiveToNextPage": { "action": "clickSelf", + "templThreshold": 0.95, "roi": [ 1184, 655, diff --git a/resource/template/ReceptionFlag.png b/resource/template/ReceptionFlag.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3420193ab8667adedef5fc14891d5a1347d4fd GIT binary patch literal 6012 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 - Task.get("UnlockClues")); - unlock_analyzer.set_task_info(*unlock_task_ptr); - if (unlock_analyzer.analyze()) { - Ctrler.click(unlock_analyzer.get_result().rect); - sleep(unlock_task_ptr->rear_delay); - click_bottomleft_tab(); - proc_vacancy(); - image = Ctrler.get_image(); + proc_clue_vacancy(); + if (unlock_clue_exchange()) { + proc_clue_vacancy(); } + cv::Mat image = Ctrler.get_image(); + // 所有的空位分析一次,看看还缺哪些线索 InfrastClueVacancyImageAnalyzer vacancy_analyzer(image); vacancy_analyzer.set_to_be_analyzed(clue_suffix); @@ -109,7 +95,7 @@ bool asst::InfrastReceptionTask::proc_clue() return true; } -bool asst::InfrastReceptionTask::proc_vacancy() +bool asst::InfrastReceptionTask::proc_clue_vacancy() { LogTraceFunction; const static std::string clue_vacancy = "InfrastClueVacancy"; @@ -147,6 +133,13 @@ bool asst::InfrastReceptionTask::proc_vacancy() return true; } +bool asst::InfrastReceptionTask::unlock_clue_exchange() +{ + ProcessTask task(*this, { "UnlockClues" }); + task.set_retry_times(2); + return task.run(); +} + bool asst::InfrastReceptionTask::send_clue() { ProcessTask task(*this, { "SendClues" }); @@ -203,19 +196,3 @@ bool asst::InfrastReceptionTask::shift() click_confirm_button(); return true; } - -bool asst::InfrastReceptionTask::swipe_to_the_bottom_of_clue_list_on_the_right() -{ - LogTraceFunction; - static Rect begin_rect = Task.get("InfrastClueOnTheRightSwipeBegin")->specific_rect; - static Rect end_rect = Task.get("InfrastClueOnTheRightSwipeEnd")->specific_rect; - static int duration = Task.get("InfrastClueOnTheRightSwipeBegin")->pre_delay; - static int extra_delay = Task.get("InfrastClueOnTheRightSwipeBegin")->rear_delay; - static int loop_times = Task.get("InfrastClueOnTheRightSwipeBegin")->max_times; - - for (int i = 0; i != loop_times; ++i) { - Ctrler.swipe(begin_rect, end_rect, duration, true, 0, false); - } - sleep(extra_delay); - return false; -} diff --git a/src/MeoAssistant/InfrastReceptionTask.h b/src/MeoAssistant/InfrastReceptionTask.h index c129cf1bc8..5392128b85 100644 --- a/src/MeoAssistant/InfrastReceptionTask.h +++ b/src/MeoAssistant/InfrastReceptionTask.h @@ -15,12 +15,12 @@ namespace asst virtual bool _run() override; private: - bool close_end_prompt(); - bool harvest_clue(); - bool proc_clue(); - bool proc_vacancy(); + bool close_end_of_clue_exchange(); + bool get_clue(); + bool use_clue(); + bool proc_clue_vacancy(); + bool unlock_clue_exchange(); bool send_clue(); bool shift(); - bool swipe_to_the_bottom_of_clue_list_on_the_right(); }; }