From 88f0d2546e163d88d598e64ce5a5d99a212ff304 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 14 May 2022 02:45:33 +0800 Subject: [PATCH] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=89=8D=E4=B8=80=E4=B8=AA=E4=BB=BB=E5=8A=A1=E5=87=BA=E9=94=99?= =?UTF-8?q?=EF=BC=8C=E5=90=8E=E9=9D=A2=E7=9A=84=E4=BB=BB=E5=8A=A1=E4=B8=8D?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/AbstractTask.cpp | 6 ++++ src/MeoAssistant/AbstractTask.h | 3 ++ src/MeoAssistant/CopilotTask.cpp | 46 +++++++++++++++---------------- src/MeoAssistant/FightTask.cpp | 6 ++-- src/MeoAssistant/PackageTask.cpp | 2 +- 5 files changed, 37 insertions(+), 26 deletions(-) diff --git a/src/MeoAssistant/AbstractTask.cpp b/src/MeoAssistant/AbstractTask.cpp index 0ab5fc2cba..fb34ecd1c0 100644 --- a/src/MeoAssistant/AbstractTask.cpp +++ b/src/MeoAssistant/AbstractTask.cpp @@ -80,6 +80,12 @@ AbstractTask& asst::AbstractTask::set_enable(bool enable) noexcept return *this; } +AbstractTask& asst::AbstractTask::set_ignore_error(bool ignore) noexcept +{ + m_ignore_error = ignore; + return *this; +} + AbstractTask& asst::AbstractTask::set_task_id(int task_id) noexcept { m_task_id = task_id; diff --git a/src/MeoAssistant/AbstractTask.h b/src/MeoAssistant/AbstractTask.h index aadf82b168..b7466492ad 100644 --- a/src/MeoAssistant/AbstractTask.h +++ b/src/MeoAssistant/AbstractTask.h @@ -36,6 +36,7 @@ namespace asst virtual AbstractTask& set_ctrler(std::shared_ptr ctrler) noexcept; virtual AbstractTask& set_status(std::shared_ptr status) noexcept; virtual AbstractTask& set_enable(bool enable) noexcept; + virtual AbstractTask& set_ignore_error(bool ignore) noexcept; virtual AbstractTask& set_task_id(int task_id) noexcept; template @@ -51,6 +52,7 @@ namespace asst void clear_plugin() noexcept; bool get_enable() const noexcept { return m_enable; } + bool get_ignore_error() const noexcept { return m_ignore_error; } const std::string& get_task_chain() const noexcept { return m_task_chain; } int get_task_id() const noexcept { return m_task_id; } virtual json::value basic_info() const; @@ -68,6 +70,7 @@ namespace asst bool save_image(const cv::Mat image, const std::string& dir); bool m_enable = true; + bool m_ignore_error = true; AsstCallback m_callback; void* m_callback_arg = nullptr; bool* m_exit_flag = nullptr; diff --git a/src/MeoAssistant/CopilotTask.cpp b/src/MeoAssistant/CopilotTask.cpp index 6c186b0504..55c98f8a28 100644 --- a/src/MeoAssistant/CopilotTask.cpp +++ b/src/MeoAssistant/CopilotTask.cpp @@ -6,37 +6,37 @@ #include "BattleFormationTask.h" asst::CopilotTask::CopilotTask(AsstCallback callback, void* callback_arg) - : PackageTask(callback, callback_arg, TaskType), - m_battle_task_ptr(std::make_shared(callback, callback_arg, TaskType)), - m_formation_task_ptr(std::make_shared(callback, callback_arg, TaskType)) + : PackageTask(callback, callback_arg, TaskType), + m_formation_task_ptr(std::make_shared(callback, callback_arg, TaskType)), + m_battle_task_ptr(std::make_shared(callback, callback_arg, TaskType)) { - m_subtasks.emplace_back(m_formation_task_ptr); + m_subtasks.emplace_back(m_formation_task_ptr)->set_ignore_error(false); - auto start_task_ptr = std::make_shared(callback, callback_arg, TaskType); - start_task_ptr->set_tasks({ "BattleStartNormal", "BattleStartRaid", "BattleStartExercise" }); - m_subtasks.emplace_back(start_task_ptr); + auto start_task_ptr = std::make_shared(callback, callback_arg, TaskType); + start_task_ptr->set_tasks({ "BattleStartNormal", "BattleStartRaid", "BattleStartExercise" }); + m_subtasks.emplace_back(start_task_ptr)->set_ignore_error(false); - m_subtasks.emplace_back(m_battle_task_ptr); + m_subtasks.emplace_back(m_battle_task_ptr); } bool asst::CopilotTask::set_params(const json::value& params) { - if (m_runned) { - return false; - } + if (m_runned) { + return false; + } - if (!params.contains("stage_name") || !params.at("stage_name").is_string()) { - return false; - } - std::string stage_name = params.at("stage_name").as_string(); + if (!params.contains("stage_name") || !params.at("stage_name").is_string()) { + return false; + } + std::string stage_name = params.at("stage_name").as_string(); - m_battle_task_ptr->set_stage_name(stage_name); - m_formation_task_ptr->set_stage_name(stage_name); + m_battle_task_ptr->set_stage_name(stage_name); + m_formation_task_ptr->set_stage_name(stage_name); - bool with_formation = params.get("formation", false); - m_formation_task_ptr->set_enable(with_formation); + bool with_formation = params.get("formation", false); + m_formation_task_ptr->set_enable(with_formation); - std::string filename = params.get("filename", std::string()); - // 文件名为空时,不加载资源,直接返回 true - return filename.empty() || Resrc.copilot().load(filename); -} \ No newline at end of file + std::string filename = params.get("filename", std::string()); + // 文件名为空时,不加载资源,直接返回 true + return filename.empty() || Resrc.copilot().load(filename); +} diff --git a/src/MeoAssistant/FightTask.cpp b/src/MeoAssistant/FightTask.cpp index c176ce88c4..98b7f3df9d 100644 --- a/src/MeoAssistant/FightTask.cpp +++ b/src/MeoAssistant/FightTask.cpp @@ -17,7 +17,8 @@ asst::FightTask::FightTask(AsstCallback callback, void* callback_arg) .set_times_limit("MedicineConfirm", 0) .set_times_limit("StoneConfirm", 0) .set_times_limit("StageSNReturnFlag", 0) - .set_enable(false); + .set_enable(false) + .set_ignore_error(false); // 进入对应的关卡 m_stage_task_ptr->set_times_limit("StartButton1", 0) @@ -25,7 +26,8 @@ asst::FightTask::FightTask(AsstCallback callback, void* callback_arg) .set_times_limit("MedicineConfirm", 0) .set_times_limit("StoneConfirm", 0) .set_times_limit("StageSNReturnFlag", 0) - .set_enable(false); + .set_enable(false) + .set_ignore_error(false); // 开始战斗任务 m_fight_task_ptr->set_tasks({ "FightBegin" }) diff --git a/src/MeoAssistant/PackageTask.cpp b/src/MeoAssistant/PackageTask.cpp index 1370cb4fb1..31050e3afb 100644 --- a/src/MeoAssistant/PackageTask.cpp +++ b/src/MeoAssistant/PackageTask.cpp @@ -28,7 +28,7 @@ bool asst::PackageTask::run() .set_status(m_status) .set_task_id(m_task_id); - if (!task_ptr->run()) { + if (!task_ptr->run() && !task_ptr->get_ignore_error()) { return false; }