From fd2ef4335b1112a4d0ecab2dc1b079feb292fc0d Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 16 Nov 2022 22:53:52 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=9F=BA=E5=BB=BA?= =?UTF-8?q?=E5=B9=B2=E5=91=98=E5=88=97=E8=A1=A8=E6=BB=91=E5=8A=A8=E6=AC=A1?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/Task/Sub/InfrastAbstractTask.cpp | 5 ++++- src/MeoAssistant/Task/Sub/InfrastAbstractTask.h | 9 +++++---- src/MeoAssistant/Task/Sub/InfrastControlTask.cpp | 7 +++---- src/MeoAssistant/Task/Sub/InfrastControlTask.h | 3 +++ src/MeoAssistant/Task/Sub/InfrastMfgTask.h | 1 + src/MeoAssistant/Task/Sub/InfrastProductionTask.cpp | 8 ++++---- src/MeoAssistant/Task/Sub/InfrastProductionTask.h | 2 -- src/MeoAssistant/Task/Sub/InfrastReceptionTask.cpp | 7 +++---- src/MeoAssistant/Task/Sub/InfrastReceptionTask.h | 1 + src/MeoAssistant/Task/Sub/InfrastTradeTask.h | 1 + 10 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/MeoAssistant/Task/Sub/InfrastAbstractTask.cpp b/src/MeoAssistant/Task/Sub/InfrastAbstractTask.cpp index d904edb239..afc8621bde 100644 --- a/src/MeoAssistant/Task/Sub/InfrastAbstractTask.cpp +++ b/src/MeoAssistant/Task/Sub/InfrastAbstractTask.cpp @@ -408,7 +408,10 @@ void asst::InfrastAbstractTask::swipe_of_operlist() void asst::InfrastAbstractTask::swipe_to_the_left_of_operlist(int loop_times) { - for (int i = 0; i != loop_times; ++i) { + if (loop_times < 0) { + loop_times = operlist_swipe_times(); + } + for (int i = 0; i < loop_times; ++i) { ProcessTask(*this, { "InfrastOperListSwipeToTheLeft" }).run(); } ProcessTask(*this, { "SleepAfterOperListQuickSwipe" }).run(); diff --git a/src/MeoAssistant/Task/Sub/InfrastAbstractTask.h b/src/MeoAssistant/Task/Sub/InfrastAbstractTask.h index 94f8381179..adc1d65efd 100644 --- a/src/MeoAssistant/Task/Sub/InfrastAbstractTask.h +++ b/src/MeoAssistant/Task/Sub/InfrastAbstractTask.h @@ -30,9 +30,10 @@ namespace asst bool enter_facility(int index = 0); bool enter_oper_list_page(); // 从刚点进设施的界面,到干员列表页 - void swipe_to_the_left_of_operlist(int loop_times = 2); // 滑动到干员列表的最左侧 - void swipe_to_the_left_of_main_ui(); // 滑动基建的主界面到最左侧 - void swipe_to_the_right_of_main_ui(); // 滑动基建的主界面到最右侧 + virtual int operlist_swipe_times() const noexcept { return 2; } + void swipe_to_the_left_of_operlist(int loop_times = -1); // 滑动到干员列表的最左侧 + void swipe_to_the_left_of_main_ui(); // 滑动基建的主界面到最左侧 + void swipe_to_the_right_of_main_ui(); // 滑动基建的主界面到最右侧 void swipe_of_operlist(); bool is_use_custom_opers(); infrast::CustomRoomConfig& current_room_config(); @@ -58,4 +59,4 @@ namespace asst bool m_is_custom = false; infrast::CustomFacilityConfig m_custom_config; }; -} +} // namespace asst diff --git a/src/MeoAssistant/Task/Sub/InfrastControlTask.cpp b/src/MeoAssistant/Task/Sub/InfrastControlTask.cpp index 8212046de1..76c485e491 100644 --- a/src/MeoAssistant/Task/Sub/InfrastControlTask.cpp +++ b/src/MeoAssistant/Task/Sub/InfrastControlTask.cpp @@ -23,14 +23,13 @@ bool asst::InfrastControlTask::_run() if (need_exit()) { return false; } - constexpr int MySwipeToTheLeftTimes = 4; if (is_use_custom_opers()) { bool name_select_ret = swipe_and_select_custom_opers(); if (name_select_ret) { break; } else { - swipe_to_the_left_of_operlist(MySwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); continue; } } @@ -40,12 +39,12 @@ bool asst::InfrastControlTask::_run() if (!opers_detect_with_swipe()) { return false; } - swipe_to_the_left_of_operlist(MySwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); optimal_calc(); if (!opers_choose()) { m_all_available_opers.clear(); - swipe_to_the_left_of_operlist(MySwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); continue; } break; diff --git a/src/MeoAssistant/Task/Sub/InfrastControlTask.h b/src/MeoAssistant/Task/Sub/InfrastControlTask.h index a3361023ad..205e0bf1b5 100644 --- a/src/MeoAssistant/Task/Sub/InfrastControlTask.h +++ b/src/MeoAssistant/Task/Sub/InfrastControlTask.h @@ -11,6 +11,9 @@ namespace asst virtual size_t max_num_of_opers() const noexcept override { return 5ULL; } + protected: + virtual int operlist_swipe_times() const noexcept override { return 4; } + private: virtual bool _run() override; }; diff --git a/src/MeoAssistant/Task/Sub/InfrastMfgTask.h b/src/MeoAssistant/Task/Sub/InfrastMfgTask.h index 9590e6a86d..381972cc54 100644 --- a/src/MeoAssistant/Task/Sub/InfrastMfgTask.h +++ b/src/MeoAssistant/Task/Sub/InfrastMfgTask.h @@ -14,5 +14,6 @@ namespace asst protected: virtual bool _run() override; + virtual int operlist_swipe_times() const noexcept override { return 5; } }; } diff --git a/src/MeoAssistant/Task/Sub/InfrastProductionTask.cpp b/src/MeoAssistant/Task/Sub/InfrastProductionTask.cpp index a3f8505680..3cae60f7d4 100644 --- a/src/MeoAssistant/Task/Sub/InfrastProductionTask.cpp +++ b/src/MeoAssistant/Task/Sub/InfrastProductionTask.cpp @@ -170,7 +170,7 @@ bool asst::InfrastProductionTask::shift_facility_list() break; } else { - swipe_to_the_left_of_operlist(SwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); continue; } } @@ -181,7 +181,7 @@ bool asst::InfrastProductionTask::shift_facility_list() if (!opers_detect_with_swipe()) { return false; } - swipe_to_the_left_of_operlist(SwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); } else { opers_detect(); @@ -189,7 +189,7 @@ bool asst::InfrastProductionTask::shift_facility_list() optimal_calc(); if (!opers_choose()) { m_all_available_opers.clear(); - swipe_to_the_left_of_operlist(SwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); continue; } break; @@ -544,7 +544,7 @@ bool asst::InfrastProductionTask::opers_choose() if (!has_error) { has_error = true; // 倒回去再来一遍 - swipe_to_the_left_of_operlist(SwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); continue; } else { diff --git a/src/MeoAssistant/Task/Sub/InfrastProductionTask.h b/src/MeoAssistant/Task/Sub/InfrastProductionTask.h index 56a52fa10c..f5524764f0 100644 --- a/src/MeoAssistant/Task/Sub/InfrastProductionTask.h +++ b/src/MeoAssistant/Task/Sub/InfrastProductionTask.h @@ -19,8 +19,6 @@ namespace asst void clear_custom_drones_config(); protected: - static constexpr int SwipeToTheLeftTimes = 6; - bool shift_facility_list(); bool facility_list_detect(); bool opers_detect_with_swipe(); diff --git a/src/MeoAssistant/Task/Sub/InfrastReceptionTask.cpp b/src/MeoAssistant/Task/Sub/InfrastReceptionTask.cpp index 3a6dc8056e..e02fd3c5fb 100644 --- a/src/MeoAssistant/Task/Sub/InfrastReceptionTask.cpp +++ b/src/MeoAssistant/Task/Sub/InfrastReceptionTask.cpp @@ -186,14 +186,13 @@ bool asst::InfrastReceptionTask::shift() return false; } - constexpr int MySwipeToTheLeftTimes = 3; if (is_use_custom_opers()) { bool name_select_ret = swipe_and_select_custom_opers(); if (name_select_ret) { break; } else { - swipe_to_the_left_of_operlist(MySwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); continue; } } @@ -203,13 +202,13 @@ bool asst::InfrastReceptionTask::shift() if (!opers_detect_with_swipe()) { return false; } - swipe_to_the_left_of_operlist(MySwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); optimal_calc(); bool ret = opers_choose(); if (!ret) { m_all_available_opers.clear(); - swipe_to_the_left_of_operlist(MySwipeToTheLeftTimes); + swipe_to_the_left_of_operlist(); continue; } break; diff --git a/src/MeoAssistant/Task/Sub/InfrastReceptionTask.h b/src/MeoAssistant/Task/Sub/InfrastReceptionTask.h index 1cd6a90f42..203414271f 100644 --- a/src/MeoAssistant/Task/Sub/InfrastReceptionTask.h +++ b/src/MeoAssistant/Task/Sub/InfrastReceptionTask.h @@ -14,6 +14,7 @@ namespace asst virtual bool _run() override; private: + virtual int operlist_swipe_times() const noexcept override { return 4; } bool close_end_of_clue_exchange(); bool get_clue(); bool use_clue(); diff --git a/src/MeoAssistant/Task/Sub/InfrastTradeTask.h b/src/MeoAssistant/Task/Sub/InfrastTradeTask.h index 03efe55a91..22076053ee 100644 --- a/src/MeoAssistant/Task/Sub/InfrastTradeTask.h +++ b/src/MeoAssistant/Task/Sub/InfrastTradeTask.h @@ -14,5 +14,6 @@ namespace asst protected: virtual bool _run() override; + virtual int operlist_swipe_times() const noexcept override { return 5; } }; }