From 06eae3e06a49ef10f57c7011cfa9abf9ba4e0fca Mon Sep 17 00:00:00 2001 From: status102 Date: Sat, 7 Oct 2023 14:01:38 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=89=A7=E6=83=85?= =?UTF-8?q?=E8=B7=B3=E8=BF=87=E6=A3=80=E6=B5=8B=E9=A2=91=E7=8E=87=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9A=82=E5=81=9C=E6=97=B6=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=80=BC=E4=B8=BAtrue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Task/Interface/CopilotTask.cpp | 6 ++---- .../Task/Miscellaneous/BattleProcessTask.cpp | 20 ++++++++++++++----- .../Task/Miscellaneous/BattleProcessTask.h | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/MaaCore/Task/Interface/CopilotTask.cpp b/src/MaaCore/Task/Interface/CopilotTask.cpp index fb87559898..9f045a07ba 100644 --- a/src/MaaCore/Task/Interface/CopilotTask.cpp +++ b/src/MaaCore/Task/Interface/CopilotTask.cpp @@ -91,9 +91,6 @@ bool asst::CopilotTask::set_params(const json::value& params) Log.error("Not support stage"); return false; } - - bool with_formation = params.get("formation", false); - m_formation_task_ptr->set_enable(with_formation); // 自动补信赖 m_formation_task_ptr->set_add_trust(params.get("add_trust", false)); @@ -135,8 +132,9 @@ bool asst::CopilotTask::set_params(const json::value& params) m_navigate_task_ptr->set_tasks({ m_navigate_name + "@Copilot@StageNavigationBegin" }); m_navigate_task_ptr->set_enable(need_navigate); + bool with_formation = params.get("formation", false); // 关卡名含有"TR"的为教学关,不需要编队 - m_formation_task_ptr->set_enable(m_navigate_name.find("TR") == std::string::npos); + m_formation_task_ptr->set_enable(with_formation && m_navigate_name.find("TR") == std::string::npos); std::string support_unit_name = params.get("support_unit_name", std::string()); m_formation_task_ptr->set_support_unit_name(std::move(support_unit_name)); diff --git a/src/MaaCore/Task/Miscellaneous/BattleProcessTask.cpp b/src/MaaCore/Task/Miscellaneous/BattleProcessTask.cpp index dce33060f2..f6cef68b80 100644 --- a/src/MaaCore/Task/Miscellaneous/BattleProcessTask.cpp +++ b/src/MaaCore/Task/Miscellaneous/BattleProcessTask.cpp @@ -16,6 +16,7 @@ #include "Utils/Algorithm.hpp" #include "Utils/ImageIo.hpp" #include "Utils/Logger.hpp" +#include "Vision/Battle/BattlefieldMatcher.h" #include "Vision/Matcher.h" #include "Vision/RegionOCRer.h" @@ -384,10 +385,19 @@ bool asst::BattleProcessTask::check_in_battle(const cv::Mat& reusable, bool weak LogTraceFunction; cv::Mat image = reusable; - if (check_skip_plot_button(image)) { - speed_up(); - return false; - } - return BattleHelper::check_in_battle(image, weak); + if (weak) { + BattlefieldMatcher analyzer(image); + auto result = analyzer.analyze(); + m_in_battle = result.has_value(); + if (m_in_battle && !(*result).pause_button) { + if (check_skip_plot_button(image)) { + speed_up(); + } + } + } + else { + m_in_battle = check_pause_button(image); + } + return m_in_battle; } diff --git a/src/MaaCore/Task/Miscellaneous/BattleProcessTask.h b/src/MaaCore/Task/Miscellaneous/BattleProcessTask.h index 0726cda95a..478388b6b7 100644 --- a/src/MaaCore/Task/Miscellaneous/BattleProcessTask.h +++ b/src/MaaCore/Task/Miscellaneous/BattleProcessTask.h @@ -39,7 +39,7 @@ namespace asst bool enter_bullet_time(const std::string& name, const Point& location); void sleep_and_do_strategy(unsigned millisecond); - virtual bool check_in_battle(const cv::Mat& reusable = cv::Mat(), bool weak = true); + virtual bool check_in_battle(const cv::Mat& reusable = cv::Mat(), bool weak = true) override; battle::copilot::CombatData m_combat_data; std::unordered_map m_oper_in_group;