From 98f41e0ed785d434a8179c395406c1bd46f31251 Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Sun, 21 Jul 2024 16:29:52 +0800 Subject: [PATCH 1/4] =?UTF-8?q?perf:=20=E7=A7=BB=E9=99=A4=E4=B8=8D?= =?UTF-8?q?=E5=BF=85=E8=A6=81=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RoguelikeCollapsalParadigmTaskPlugin.cpp | 9 +++---- .../RoguelikeCollapsalParadigmTaskPlugin.h | 26 ++++++++----------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp index ec0b0b8538..ea0af171e5 100644 --- a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp @@ -143,10 +143,9 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_banner } OCRer::ResultsVec ocr_results1 = analyzer1.get_result(); - std::sort(ocr_results1.begin(), ocr_results1.end(), m_compare); - - OCRer::ResultsVec ocr_results2 = analyzer2.get_result(); - std::sort(ocr_results2.begin(), ocr_results2.end(), m_compare); + OCRer::ResultsVec ocr_results2 = analyzer2.get_result(); + sort_by_vertical_(ocr_results1); // 按照水平方向排序(从左到右 + sort_by_vertical_(ocr_results2); // 按照水平方向排序(从左到右 OCRer::ResultsVec::iterator result_it1 = ocr_results1.begin(); OCRer::ResultsVec::iterator result_it2 = ocr_results2.begin(); @@ -264,7 +263,7 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_panel( ocr_results = analyzer.get_result(); } } - std::sort(ocr_results.begin(), ocr_results.end(), m_compare); + sort_by_vertical_(ocr_results); // 按照水平方向排序(从左到右 std::transform(ocr_results.begin(), ocr_results.end(), std::back_inserter(cur_clp_pds), diff --git a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.h b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.h index 6631bf443a..bc9fa13916 100644 --- a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.h +++ b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.h @@ -30,6 +30,17 @@ namespace asst protected: virtual bool _run() override; + bool new_zone() const; + + bool check_collapsal_paradigm_panel(); + + void toggle_collapsal_status_panel(); + void exit_then_restart(); + void exit_then_stop(); + void wait_for_loading(unsigned int millisecond = 0); + void wait_for_stage(unsigned int millisecond = 0); + void clp_pd_callback(std::string cur, int deepen_or_weaken = 0, std::string prev = ""); + private: mutable bool m_check_banner = false; mutable bool m_check_panel = false; @@ -48,21 +59,6 @@ namespace asst Point m_swipe_end; // 滑动终点 std::unordered_set m_panel_triggers; - std::unordered_map m_zone_dict; - - std::function m_compare = - [](const OCRer::Result& x1, const OCRer::Result& x2){ return x1.rect.y < x2.rect.y; }; - - bool new_zone() const; - - bool check_collapsal_paradigm_panel(); - - void toggle_collapsal_status_panel(); - void exit_then_restart(); - void exit_then_stop(); - void wait_for_loading(unsigned int millisecond = 0); - void wait_for_stage(unsigned int millisecond = 0); - void clp_pd_callback(std::string cur, int deepen_or_weaken = 0, std::string prev = ""); }; } From d7f61bbc4aea9ca6b9e8f83aa6b2a1c06a577ee2 Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Sun, 21 Jul 2024 16:30:52 +0800 Subject: [PATCH 2/4] =?UTF-8?q?perf:=20=E7=AE=80=E5=8C=96=E6=9C=9F?= =?UTF-8?q?=E6=9C=9B=E8=8E=B7=E5=BE=97=E5=A1=8C=E7=BC=A9=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Task/Interface/RoguelikeTask.cpp | 4 ---- src/MaaCore/Task/Roguelike/RoguelikeConfig.h | 4 ---- .../Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp | 4 ++-- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.cpp b/src/MaaCore/Task/Interface/RoguelikeTask.cpp index 3cce5160c0..99555a6137 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.cpp +++ b/src/MaaCore/Task/Interface/RoguelikeTask.cpp @@ -223,10 +223,6 @@ bool asst::RoguelikeTask::set_params(const json::value& params) m_config_ptr->set_double_check_clp_pds( params.get("double_check_collapsal_paradigms", mode == RoguelikeMode::CLP_PDS)); - const std::unordered_set& rare_clp_pds = - RoguelikeCollapsalParadigms.get_rare_clp_pds(theme); - m_config_ptr->set_expected_clp_pds( - params.get("expected_collapsal_paradigms", rare_clp_pds)); } const auto& ptr = m_custom_ptr; diff --git a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h index a85359da75..846bf3b388 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h +++ b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h @@ -109,8 +109,6 @@ namespace asst bool get_check_clp_pds() const { return m_check_clp_pds; } void set_double_check_clp_pds(bool value) { m_double_check_clp_pds = value; } bool get_double_check_clp_pds() const { return m_double_check_clp_pds; } - void set_expected_clp_pds(std::unordered_set value) { m_expected_clp_pds = value; } - std::unordered_set get_expected_clp_pds() const { return m_expected_clp_pds; } private: // ------------------ 密文板 ------------------ @@ -123,8 +121,6 @@ namespace asst // ------------------ 坍缩范式 ------------------ bool m_check_clp_pds = false; // 是否检查坍缩范式 bool m_double_check_clp_pds = false; // 是否反复检查坍缩范式 - std::unordered_set m_expected_clp_pds; // 期望获得坍缩范式 - /* 以下为局内数据,每次重置 */ public: diff --git a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp index ea0af171e5..4fb3f9d0e4 100644 --- a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp @@ -132,7 +132,7 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_banner if (detected) { const std::vector& clp_pd_classes = RoguelikeCollapsalParadigms.get_clp_pd_classes(theme); const std::unordered_map& clp_pd_dict = RoguelikeCollapsalParadigms.get_clp_pd_dict(theme); - const std::unordered_set& expected_clp_pds = m_config->get_expected_clp_pds(); + const auto& expected_clp_pds = RoguelikeCollapsalParadigms.get_rare_clp_pds(theme); std::vector prev_clp_pds = m_config->get_clp_pds(); OCRer analyzer2(image); // 检测坍缩范式 @@ -228,7 +228,7 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_panel( const std::vector& clp_pd_classes = RoguelikeCollapsalParadigms.get_clp_pd_classes(theme); const std::unordered_map& clp_pd_dict = RoguelikeCollapsalParadigms.get_clp_pd_dict(theme); - const std::unordered_set& expected_clp_pds = m_config->get_expected_clp_pds(); + const auto& expected_clp_pds = RoguelikeCollapsalParadigms.get_rare_clp_pds(theme); std::vector prev_clp_pds = m_config->get_clp_pds(); wait_for_stage(200); From 37cff0bb8db4fb65d71fd82462eaaeb7dcf0ce0b Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Sun, 21 Jul 2024 16:51:53 +0800 Subject: [PATCH 3/4] =?UTF-8?q?perf:=20=E8=BF=81=E7=A7=BB=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=8F=82=E6=95=B0=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Task/Interface/RoguelikeTask.cpp | 5 +- src/MaaCore/Task/Interface/RoguelikeTask.h | 3 +- src/MaaCore/Task/Roguelike/RoguelikeConfig.h | 6 +- .../RoguelikeCollapsalParadigmTaskPlugin.cpp | 3 +- .../RoguelikeCollapsalParadigmTaskPlugin.h | 86 ++++++++++--------- 5 files changed, 53 insertions(+), 50 deletions(-) diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.cpp b/src/MaaCore/Task/Interface/RoguelikeTask.cpp index 99555a6137..f2a33a5458 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.cpp +++ b/src/MaaCore/Task/Interface/RoguelikeTask.cpp @@ -80,7 +80,8 @@ asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, Assistant* inst m_roguelike_task_ptr->register_plugin(m_config_ptr); m_roguelike_task_ptr->register_plugin(m_config_ptr); m_roguelike_task_ptr->register_plugin(m_config_ptr); - m_roguelike_task_ptr->register_plugin(m_config_ptr); + m_cp_ptr = m_roguelike_task_ptr->register_plugin( + m_config_ptr); // 这个任务如果卡住会放弃当前的肉鸽并重新开始,所以多添加亿点。先这样凑合用 for (int i = 0; i != 999; ++i) { @@ -220,7 +221,7 @@ bool asst::RoguelikeTask::set_params(const json::value& params) // 是否检查坍缩范式,非CLP_PDS模式下默认为False, CLP_PDS模式下默认为True m_config_ptr->set_check_clp_pds( params.get("check_collapsal_paradigms", mode == RoguelikeMode::CLP_PDS)); - m_config_ptr->set_double_check_clp_pds( + m_cp_ptr->set_double_check_clp_pds( params.get("double_check_collapsal_paradigms", mode == RoguelikeMode::CLP_PDS)); } diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.h b/src/MaaCore/Task/Interface/RoguelikeTask.h index 459327be5e..9ce0cb1144 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.h +++ b/src/MaaCore/Task/Interface/RoguelikeTask.h @@ -8,6 +8,7 @@ namespace asst class RoguelikeInvestTaskPlugin; class RoguelikeDebugTaskPlugin; class RoguelikeCustomStartTaskPlugin; + class RoguelikeCollapsalParadigmTaskPlugin; class RoguelikeTask : public InterfaceTask { @@ -25,6 +26,6 @@ namespace asst std::shared_ptr m_invest_ptr = nullptr; std::shared_ptr m_debug_ptr = nullptr; std::shared_ptr m_custom_ptr = nullptr; - + std::shared_ptr m_cp_ptr = nullptr; }; } diff --git a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h index 846bf3b388..30d03d91e8 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h +++ b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h @@ -107,8 +107,6 @@ namespace asst // ------------------ 坍缩范式 ------------------ void set_check_clp_pds(bool value) { m_check_clp_pds = value; } bool get_check_clp_pds() const { return m_check_clp_pds; } - void set_double_check_clp_pds(bool value) { m_double_check_clp_pds = value; } - bool get_double_check_clp_pds() const { return m_double_check_clp_pds; } private: // ------------------ 密文板 ------------------ @@ -119,8 +117,8 @@ namespace asst bool m_use_foldartal = true; // 是否使用密文板 // ------------------ 坍缩范式 ------------------ - bool m_check_clp_pds = false; // 是否检查坍缩范式 - bool m_double_check_clp_pds = false; // 是否反复检查坍缩范式 + bool m_check_clp_pds = false; // 是否检查坍缩范式 + /* 以下为局内数据,每次重置 */ public: diff --git a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp index 4fb3f9d0e4..1cb2956f5e 100644 --- a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp @@ -83,7 +83,8 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::verify( } } - if (!m_config->get_need_check_panel() && m_config->get_double_check_clp_pds() && msg == AsstMsg::SubTaskCompleted + if (msg == AsstMsg::SubTaskCompleted && !m_config->get_need_check_panel() + && m_config->get_double_check_clp_pds() && m_panel_triggers.find(task_name) == m_panel_triggers.end()) { m_config->set_need_check_panel(true); m_verification_check = true; diff --git a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.h b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.h index bc9fa13916..9fb9001497 100644 --- a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.h +++ b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.h @@ -1,64 +1,66 @@ #pragma once #include "../AbstractRoguelikeTaskPlugin.h" #include "Common/AsstTypes.h" -#include "Vision/OCRer.h" #include "Config/TaskData.h" +#include "Vision/OCRer.h" namespace asst { - class RoguelikeCollapsalParadigmTaskPlugin : public AbstractRoguelikeTaskPlugin +class RoguelikeCollapsalParadigmTaskPlugin : public AbstractRoguelikeTaskPlugin +{ +public: + RoguelikeCollapsalParadigmTaskPlugin( + const AsstCallback& callback, + Assistant* inst, + std::string_view task_chain, + std::shared_ptr config); + // using AbstractRoguelikeTaskPlugin::AbstractRoguelikeTaskPlugin; + virtual ~RoguelikeCollapsalParadigmTaskPlugin() override = default; + virtual bool verify(AsstMsg msg, const json::value& details) const override; + + static bool enabled(std::shared_ptr config) { - public: - RoguelikeCollapsalParadigmTaskPlugin( - const AsstCallback& callback, - Assistant* inst, - std::string_view task_chain, - std::shared_ptr config); - - // using AbstractRoguelikeTaskPlugin::AbstractRoguelikeTaskPlugin; - virtual ~RoguelikeCollapsalParadigmTaskPlugin() override = default; + return config->get_theme() == RoguelikeTheme::Sami && config->get_check_clp_pds(); + } - static bool enabled(std::shared_ptr config) { - return config->get_theme() == RoguelikeTheme::Sami && config->get_check_clp_pds(); - } +public: + void set_double_check_clp_pds(bool value) { m_double_check_clp_pds = value; } + bool check_collapsal_paradigm_banner(); - public: - virtual bool verify(AsstMsg msg, const json::value& details) const override; +protected: + virtual bool _run() override; - bool check_collapsal_paradigm_banner(); + bool new_zone() const; - protected: - virtual bool _run() override; + bool check_collapsal_paradigm_panel(); - bool new_zone() const; + void toggle_collapsal_status_panel(); + void exit_then_restart(); + void exit_then_stop(); + void wait_for_loading(unsigned int millisecond = 0); + void wait_for_stage(unsigned int millisecond = 0); + void clp_pd_callback(std::string cur, int deepen_or_weaken = 0, std::string prev = ""); - bool check_collapsal_paradigm_panel(); +private: + mutable bool m_check_banner = false; + mutable bool m_check_panel = false; + mutable bool m_verification_check = false; - void toggle_collapsal_status_panel(); - void exit_then_restart(); - void exit_then_stop(); - void wait_for_loading(unsigned int millisecond = 0); - void wait_for_stage(unsigned int millisecond = 0); - void clp_pd_callback(std::string cur, int deepen_or_weaken = 0, std::string prev = ""); + std::string m_deepen_text; - private: - mutable bool m_check_banner = false; - mutable bool m_check_panel = false; - mutable bool m_verification_check = false; + std::unordered_set m_banner_triggers_start; - std::string m_deepen_text; + std::unordered_set m_banner_triggers_completed; - std::unordered_set m_banner_triggers_start; + mutable std::string m_zone; - std::unordered_set m_banner_triggers_completed; + Rect m_roi; // 屏幕上方居中区域,点击以检查坍缩状态 + Point m_swipe_begin; // 滑动起点 + Point m_swipe_end; // 滑动终点 - mutable std::string m_zone; + std::unordered_set m_panel_triggers; + std::unordered_map m_zone_dict; - Rect m_roi; // 屏幕上方居中区域,点击以检查坍缩状态 - Point m_swipe_begin; // 滑动起点 - Point m_swipe_end; // 滑动终点 - - std::unordered_set m_panel_triggers; - std::unordered_map m_zone_dict; - }; + bool m_double_check_clp_pds = false; // 是否反复检查坍缩范式 +}; } From 1d777a7234db5d2532c58deab3f68907647d2ca4 Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Sun, 21 Jul 2024 17:00:11 +0800 Subject: [PATCH 4/4] fix: unchanged var name --- .../RoguelikeCollapsalParadigmTaskPlugin.cpp | 102 +++++++++++------- 1 file changed, 66 insertions(+), 36 deletions(-) diff --git a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp index 1cb2956f5e..ecf89744ff 100644 --- a/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/Sami/RoguelikeCollapsalParadigmTaskPlugin.cpp @@ -5,8 +5,8 @@ #include "Controller/Controller.h" #include "Task/ProcessTask.h" #include "Utils/Logger.hpp" -#include "Vision/OCRer.h" #include "Vision/Matcher.h" +#include "Vision/OCRer.h" #include @@ -45,7 +45,8 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::verify( const AsstMsg msg, const json::value& details) const { - if ((msg != AsstMsg::SubTaskStart && msg != AsstMsg::SubTaskCompleted) || details.get("subtask", std::string()) != "ProcessTask") { + if ((msg != AsstMsg::SubTaskStart && msg != AsstMsg::SubTaskCompleted) + || details.get("subtask", std::string()) != "ProcessTask") { return false; } @@ -54,38 +55,40 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::verify( return false; } - if (m_config->get_theme() != RoguelikeTheme::Sami || !m_config->get_check_clp_pds()) { + if (m_config->get_theme() != RoguelikeTheme::Sami || !m_config->get_check_clp_pds()) { return false; } const auto task_name = details.get("details", "task", ""); - if (msg == AsstMsg::SubTaskStart && m_banner_triggers_start.find(task_name) != m_banner_triggers_start.end()) { + if (msg == AsstMsg::SubTaskStart + && m_banner_triggers_start.find(task_name) != m_banner_triggers_start.end()) { m_check_banner = true; return true; } - if (msg == AsstMsg::SubTaskCompleted && m_banner_triggers_completed.find(task_name) != m_banner_triggers_completed.end()) { + if (msg == AsstMsg::SubTaskCompleted + && m_banner_triggers_completed.find(task_name) != m_banner_triggers_completed.end()) { m_check_banner = true; return true; } - if(msg == AsstMsg::SubTaskStart && m_panel_triggers.find(task_name) != m_panel_triggers.end()) { + if (msg == AsstMsg::SubTaskStart + && m_panel_triggers.find(task_name) != m_panel_triggers.end()) { if (new_zone()) { m_config->set_need_check_panel(true); m_verification_check = false; } - + if (m_config->get_need_check_panel()) { m_config->set_need_check_panel(false); m_check_panel = true; return true; } } - + if (msg == AsstMsg::SubTaskCompleted && !m_config->get_need_check_panel() - && m_config->get_double_check_clp_pds() - && m_panel_triggers.find(task_name) == m_panel_triggers.end()) { + && m_double_check_clp_pds && m_panel_triggers.find(task_name) == m_panel_triggers.end()) { m_config->set_need_check_panel(true); m_verification_check = true; }; @@ -131,44 +134,56 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_banner detected = analyzer1.analyze(); } if (detected) { - const std::vector& clp_pd_classes = RoguelikeCollapsalParadigms.get_clp_pd_classes(theme); - const std::unordered_map& clp_pd_dict = RoguelikeCollapsalParadigms.get_clp_pd_dict(theme); + const std::vector& clp_pd_classes = + RoguelikeCollapsalParadigms.get_clp_pd_classes(theme); + const std::unordered_map& clp_pd_dict = + RoguelikeCollapsalParadigms.get_clp_pd_dict(theme); const auto& expected_clp_pds = RoguelikeCollapsalParadigms.get_rare_clp_pds(theme); std::vector prev_clp_pds = m_config->get_clp_pds(); OCRer analyzer2(image); // 检测坍缩范式 analyzer2.set_task_info(theme + "@Roguelike@CheckCollapsalParadigms_banner"); if (!analyzer2.analyze()) { - Log.info("Roguelike Collapsal Paradigm Task Plugin: Erroneous Recognition in Banner Check"); + Log.info( + "Roguelike Collapsal Paradigm Task Plugin: Erroneous Recognition in Banner Check"); return false; } OCRer::ResultsVec ocr_results1 = analyzer1.get_result(); - OCRer::ResultsVec ocr_results2 = analyzer2.get_result(); + OCRer::ResultsVec ocr_results2 = analyzer2.get_result(); sort_by_vertical_(ocr_results1); // 按照水平方向排序(从左到右 sort_by_vertical_(ocr_results2); // 按照水平方向排序(从左到右 - + OCRer::ResultsVec::iterator result_it1 = ocr_results1.begin(); OCRer::ResultsVec::iterator result_it2 = ocr_results2.begin(); std::vector::iterator it; while (result_it1 != ocr_results1.end() && result_it2 != ocr_results2.end()) { if ((*result_it2).rect.y >= (*result_it1).rect.y + (*result_it1).rect.height + 25) { - Log.info("Roguelike Collapsal Paradigm Task Plugin: Erroneous Recognition in Banner Check"); + Log.info( + "Roguelike Collapsal Paradigm Task Plugin: Erroneous Recognition in Banner " + "Check"); ++result_it1; continue; } else if ((*result_it2).rect.y <= (*result_it1).rect.y) { - Log.info("Roguelike Collapsal Paradigm Task Plugin: Erroneous Recognition in Banner Check"); + Log.info( + "Roguelike Collapsal Paradigm Task Plugin: Erroneous Recognition in Banner " + "Check"); ++result_it2; continue; } std::string cur_clp_pd = (*result_it2).text; const CollapsalParadigmClass& cur_class = clp_pd_classes.at(clp_pd_dict.at(cur_clp_pd)); if ((*result_it1).text == m_deepen_text) { - if (it = std::find(prev_clp_pds.begin(), prev_clp_pds.end(), cur_clp_pd); it == prev_clp_pds.end()) { + if (it = std::find(prev_clp_pds.begin(), prev_clp_pds.end(), cur_clp_pd); + it == prev_clp_pds.end()) { if (cur_clp_pd == cur_class.level_2) { - if (it = std::find(prev_clp_pds.begin(), prev_clp_pds.end(), cur_class.level_1); it != prev_clp_pds.end()) { + if (it = std::find( + prev_clp_pds.begin(), + prev_clp_pds.end(), + cur_class.level_1); + it != prev_clp_pds.end()) { clp_pd_callback(cur_clp_pd, 1, *it); *it = cur_clp_pd; } @@ -187,14 +202,17 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_banner exit_then_stop(); return true; } - else if (m_config->get_mode() == RoguelikeMode::CLP_PDS) { // 刷坍缩范式模式下,获得了不想要的坍缩范式 + else if ( + m_config->get_mode() + == RoguelikeMode::CLP_PDS) { // 刷坍缩范式模式下,获得了不想要的坍缩范式 exit_then_restart(); return true; } } } else { - if (it = std::find(prev_clp_pds.begin(), prev_clp_pds.end(), cur_clp_pd); it != prev_clp_pds.end()) { + if (it = std::find(prev_clp_pds.begin(), prev_clp_pds.end(), cur_clp_pd); + it != prev_clp_pds.end()) { if (cur_clp_pd == cur_class.level_2) { clp_pd_callback(cur_class.level_1, -1, cur_clp_pd); *it = cur_class.level_1; @@ -216,7 +234,7 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_banner } bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_panel() -{ +{ LogTraceFunction; #ifdef ASST_DEBUG @@ -227,8 +245,10 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_panel( const std::string& theme = m_config->get_theme(); - const std::vector& clp_pd_classes = RoguelikeCollapsalParadigms.get_clp_pd_classes(theme); - const std::unordered_map& clp_pd_dict = RoguelikeCollapsalParadigms.get_clp_pd_dict(theme); + const std::vector& clp_pd_classes = + RoguelikeCollapsalParadigms.get_clp_pd_classes(theme); + const std::unordered_map& clp_pd_dict = + RoguelikeCollapsalParadigms.get_clp_pd_dict(theme); const auto& expected_clp_pds = RoguelikeCollapsalParadigms.get_rare_clp_pds(theme); std::vector prev_clp_pds = m_config->get_clp_pds(); @@ -236,7 +256,8 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_panel( cv::Mat image; OCRer analyzer; - analyzer.set_task_info(theme + "@Roguelike@CheckCollapsalParadigms_onPanel"); // 检测 "当前坍缩值" 字样 + analyzer.set_task_info( + theme + "@Roguelike@CheckCollapsalParadigms_onPanel"); // 检测 "当前坍缩值" 字样 do { toggle_collapsal_status_panel(); image = ctrler()->get_image(); @@ -265,22 +286,24 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_panel( } } sort_by_vertical_(ocr_results); // 按照水平方向排序(从左到右 - - std::transform(ocr_results.begin(), ocr_results.end(), + + std::transform( + ocr_results.begin(), + ocr_results.end(), std::back_inserter(cur_clp_pds), [](OCRer::Result x) { return x.text; }); } - + if (m_verification_check) { if (prev_clp_pds != cur_clp_pds) { Log.info("Roguelike Collapsal Paradigm Task Plugin: Verification Failed"); #ifdef ASST_DEBUG Log.info("–––––––– Previous ––––––––––––––"); - for (const std::string& clp_pd: prev_clp_pds) { + for (const std::string& clp_pd : prev_clp_pds) { Log.info(clp_pd); } Log.info("–––––––– Current –––––––––––––––"); - for (const std::string& clp_pd: cur_clp_pds) { + for (const std::string& clp_pd : cur_clp_pds) { Log.info(clp_pd); } #endif @@ -302,11 +325,13 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_panel( } if (it == prev_clp_pds.end()) { // 全新的坍缩范式 clp_pd_callback(cur_clp_pd, 1); - } else { + } + else { if (cur_clp_pd == cur_class.level_2 && *it == cur_class.level_1) { // 从1级加深到2级 clp_pd_callback(cur_clp_pd, 1, cur_class.level_1); - - } else if (cur_clp_pd == cur_class.level_1 && *it == cur_class.level_2) { // 从2级消退到1级 + } + else if ( + cur_clp_pd == cur_class.level_1 && *it == cur_class.level_2) { // 从2级消退到1级 clp_pd_callback(cur_clp_pd, -1, cur_class.level_2); } ++it; @@ -318,7 +343,9 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_panel( exit_then_stop(); return true; } - else if (m_config->get_mode() == RoguelikeMode::CLP_PDS) { // 刷坍缩范式模式下,获得了不想要的坍缩范式 + else if ( + m_config->get_mode() + == RoguelikeMode::CLP_PDS) { // 刷坍缩范式模式下,获得了不想要的坍缩范式 toggle_collapsal_status_panel(); exit_then_restart(); return true; @@ -330,7 +357,7 @@ bool asst::RoguelikeCollapsalParadigmTaskPlugin::check_collapsal_paradigm_panel( } m_config->set_clp_pds(std::move(cur_clp_pds)); - + toggle_collapsal_status_panel(); return true; } @@ -350,7 +377,10 @@ void asst::RoguelikeCollapsalParadigmTaskPlugin::exit_then_restart() .run(); } -void asst::RoguelikeCollapsalParadigmTaskPlugin::clp_pd_callback(std::string cur, int deepen_or_weaken, std::string prev) +void asst::RoguelikeCollapsalParadigmTaskPlugin::clp_pd_callback( + std::string cur, + int deepen_or_weaken, + std::string prev) { json::value info = basic_info_with_what("RoguelikeCollapsalParadigms"); info["details"]["cur"] = cur;