From 33a14dd378b829751b04e710081be2381a2be637 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 23 Oct 2022 01:59:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9F=BA=E5=BB=BA?= =?UTF-8?q?=E5=AE=BF=E8=88=8D=E6=9C=AA=E8=BF=9B=E9=A9=BB=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E5=B9=B6=E5=B0=BD=E5=8F=AF=E8=83=BD=E5=B0=86?= =?UTF-8?q?=E5=AE=BF=E8=88=8D=E7=9A=84=E4=BA=BA=E5=A1=AB=E6=BB=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 72 ++++++++++++++++- ...perListTabMoodDoubleClickWhenUnclicked.png | Bin 0 -> 1076 bytes .../Task/Sub/InfrastAbstractTask.cpp | 10 ++- .../Task/Sub/InfrastAbstractTask.h | 4 +- src/MeoAssistant/Task/Sub/InfrastDormTask.cpp | 73 ++++++++++++------ src/MeoAssistant/Task/Sub/InfrastDormTask.h | 2 + 6 files changed, 135 insertions(+), 26 deletions(-) create mode 100644 resource/template/InfrastOperListTabMoodDoubleClickWhenUnclicked.png diff --git a/resource/tasks.json b/resource/tasks.json index 16b43e3bf8..8d76c37ef9 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -4722,7 +4722,7 @@ ], "rearDelay": 1000 }, - "InfrastFilterMenu": { + "InfrastFilterMenuNotStationed": { "action": "ClickSelf", "template": "InfrastFilterMenu.png", "cache": false, @@ -4768,6 +4768,52 @@ "InfrastFilterMenuConfirmButton" ] }, + "InfrastFilterMenuCancelNotStationed": { + "action": "ClickSelf", + "template": "InfrastFilterMenu.png", + "cache": false, + "roi": [ + 1050, + 0, + 230, + 100 + ], + "next": [ + "InfrastFilterMenuCancelNotStationedButtonAlreadyClicked", + "InfrastFilterMenuCancelNotStationedButton" + ], + "rearDelay": 1000 + }, + "InfrastFilterMenuCancelNotStationedButton": { + "action": "DoNothing", + "template": "InfrastFilterMenuNotStationedButton.png", + "templThreshold": 0.85, + "cache": false, + "roi": [ + 300, + 300, + 250, + 150 + ], + "rearDelay": 1000, + "next": [ + "InfrastFilterMenuConfirmButton" + ] + }, + "InfrastFilterMenuCancelNotStationedButtonAlreadyClicked": { + "action": "ClickSelf", + "template": "InfrastFilterMenuNotStationedButtonAlreadyClicked.png", + "cache": false, + "roi": [ + 300, + 300, + 250, + 150 + ], + "next": [ + "InfrastFilterMenuConfirmButton" + ] + }, "InfrastFilterMenuConfirmButton": { "action": "ClickSelf", "template": "InfrastFilterMenuConfirmButton.png", @@ -5701,6 +5747,30 @@ "InfrastOperListTabMoodDoubleClick" ] }, + "InfrastOperListTabMoodDoubleClickWhenUnclicked": { + "action": "ClickSelf", + "roi": [ + 900, + 0, + 131, + 117 + ], + "templThreshold": 0.7, + "next": [ + "InfrastOperListTabMoodClick" + ] + }, + "InfrastOperListTabMoodClick": { + "template": "InfrastOperListTabMoodDoubleClick.png", + "action": "ClickSelf", + "roi": [ + 900, + 0, + 131, + 117 + ], + "templThreshold": 0.7 + }, "BattleStageName": { "algorithm": "OcrDetect", "cache": false, diff --git a/resource/template/InfrastOperListTabMoodDoubleClickWhenUnclicked.png b/resource/template/InfrastOperListTabMoodDoubleClickWhenUnclicked.png new file mode 100644 index 0000000000000000000000000000000000000000..f960c193108b68d910e698fa3b58875c3d248c35 GIT binary patch literal 1076 zcmV-41k3x0P)o$P@>w{<2DNNS}>DTU&ZQi`%oY$qw*#3M?M)V65;JW<4x zDI&U+D5ab*`Ik*`vYG#ExnEtau72OAUN2NwSO|X!5d;B$2@wPVe+dx;0e=Y*1OYKJ znM|cp1%p9B5a3@_Dpg%woyX(hc^*Ug($_Ha7fzKL9*DJa{}FkU%<}4kY5@ z;z~JvyTU}i}KR+i)(qJ$wEG$H$QKeG(_VxwCc1UtbV|^m=`Hd3jDwj@Rp*nVF$!nq^sp z5C8~*(AwIn)oKR@2BOiZ*=)|p$k6F@cDud0x>}>r0Dw#;OG--m`1puKA^`C7^D{9q zadB}0F-Wi1_x1JV*wbuj^hl&*laeQ=Upz>y$D2!iHRj8B^HZ?<2aB&ZEbBM zBO@l0DHIC1-EOFFsWBV%S}W^HYaWm!QG z5)u;3X7j_!^1-Wh>wrY%*^cW?zUR3$H&JYfk=`B zkz6h}nM_8bQ4k@7LZQ&`@UYM4gBTpg8HS-KisyNU!@)3&*XuUAzP^UTVUSQNm4$_cXJ=>M-`{$@{`&el7z_eHR#sM8 uTH52|click(oper.rect); + ++num_of_selected; + } + continue; + } switch (oper.smiley.type) { case infrast::SmileyType::Rest: + if (m_next_step == NextStep::Fill) { + to_fill = true; + Log.info("set to_fill = true;"); + m_ctrler->click(oper.rect); + ++num_of_selected; + continue; + } // 如果所有心情不满的干员已经放入宿舍,就把信赖不满的干员放入宿舍 if (m_drom_trust_enabled && m_next_step != NextStep::Rest && oper.selected == false && oper.doing != infrast::Doing::Working && oper.doing != infrast::Doing::Resting) { @@ -114,20 +130,27 @@ bool asst::InfrastDormTask::opers_choose() std::string opertrust = trust_analyzer.get_result().front().text; std::regex rule("[^0-9]"); // 只保留数字 opertrust = std::regex_replace(opertrust, rule, ""); - Log.trace("opertrust:", opertrust); bool if_opertrust_not_full = false; - if (opertrust != "" && atoi(opertrust.c_str()) < 200) { - if_opertrust_not_full = true; - } - else if (opertrust != "" && atoi(opertrust.c_str()) >= 200) { - num_of_fulltrust++; + if (!opertrust.empty()) { + int trust = std::stoi(opertrust); + if (trust < 200) { + if_opertrust_not_full = true; + } + else { + num_of_fulltrust++; + } } if (num_of_fulltrust >= 6) { // 所有干员都满信赖了 - m_next_step = NextStep::AllDone; - Log.trace("num_of_fulltrust:", num_of_fulltrust, ", just return"); - return true; + Log.trace("num_of_fulltrust:", num_of_fulltrust); + m_next_step = NextStep::Fill; + to_fill = true; + if (!m_dorm_notstationed_enabled && m_if_filter_notstationed_haspressed) { + click_filter_menu_cancel_not_stationed_button(); + } + click_order_by_mood(); + break; } // 获得干员所在设施 @@ -146,20 +169,15 @@ bool asst::InfrastDormTask::opers_choose() // 判断要不要把人放进宿舍if_opertrust_not_full && if_oper_not_stationed if (if_opertrust_not_full && if_oper_not_stationed) { - Log.trace("put oper in"); - m_ctrler->click(oper.rect); - if (++num_of_selected >= max_num_of_opers()) { - Log.trace("num_of_selected:", num_of_selected, ", just break"); - break; - } + ++num_of_selected; } else { Log.trace("not put oper in"); } } // 如果当前页面休息完成的人数超过5个,说明已经已经把所有心情不满的滑过一遍、没有更多的了 - else if (++num_of_resting > max_num_of_opers()) { + else if (++num_of_resting >= 6) { Log.trace("num_of_resting:", num_of_resting, ", dorm finished"); if (m_drom_trust_enabled) { Log.trace("m_drom_trust_enabled:", m_drom_trust_enabled); @@ -173,9 +191,10 @@ bool asst::InfrastDormTask::opers_choose() m_next_step = NextStep::RestDone; // 选中未进驻标签并按信赖值排序 } else { - m_next_step = NextStep::AllDone; - Log.trace("m_drom_trust_enabled:", m_drom_trust_enabled, ", just return"); - return true; + Log.trace("m_drom_trust_enabled:", m_drom_trust_enabled); + m_next_step = NextStep::Fill; + // click_filter_menu_cancel_not_stationed_button(); + // click_order_by_mood(); } } break; @@ -184,10 +203,7 @@ bool asst::InfrastDormTask::opers_choose() // 干员没有被选择的情况下,且不在工作,就进驻宿舍 if (oper.selected == false && oper.doing != infrast::Doing::Working) { m_ctrler->click(oper.rect); - if (++num_of_selected >= max_num_of_opers()) { - Log.trace("num_of_selected:", num_of_selected, ", just break"); - break; - } + ++num_of_selected; } break; default: @@ -197,6 +213,12 @@ bool asst::InfrastDormTask::opers_choose() if (m_next_step == NextStep::RestDone) { break; } + + // 如果是之前设置的to_fill,走不到这里,一定是当次设置的 + if (to_fill) { + swipe_of_operlist(); + break; + } } if (num_of_selected >= max_num_of_opers()) { Log.trace("num_of_selected:", num_of_selected, ", just break"); @@ -218,6 +240,11 @@ bool asst::InfrastDormTask::opers_choose() return true; } +bool asst::InfrastDormTask::click_order_by_mood() +{ + return ProcessTask(*this, { "InfrastOperListTabMoodDoubleClickWhenUnclicked", "Stop" }).run(); +} + // bool asst::InfrastDormTask::click_confirm_button() //{ // LogTraceFunction; diff --git a/src/MeoAssistant/Task/Sub/InfrastDormTask.h b/src/MeoAssistant/Task/Sub/InfrastDormTask.h index 61b67f8e89..81dc23970f 100644 --- a/src/MeoAssistant/Task/Sub/InfrastDormTask.h +++ b/src/MeoAssistant/Task/Sub/InfrastDormTask.h @@ -19,6 +19,7 @@ namespace asst // virtual bool click_confirm_button() override; bool opers_choose(); + bool click_order_by_mood(); bool m_dorm_notstationed_enabled = false; // 设置是否启用未进驻筛选 bool m_drom_trust_enabled = true; // 设置是否启用蹭信赖 @@ -31,6 +32,7 @@ namespace asst Rest, RestDone, Trust, + Fill, AllDone, }; NextStep m_next_step = NextStep::Rest;