From 5b2b2b7fe880cac8c653cc8155e473313ff8d5ff Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Tue, 26 Aug 2025 23:25:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=87=AA=E5=8A=A8=E6=88=98=E6=96=97-?= =?UTF-8?q?=E6=88=98=E6=96=97=E5=88=97=E8=A1=A8=E4=BD=BF=E7=94=A8=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E4=BD=9C=E4=B8=9A=E6=88=98=E6=96=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Task/Interface/CopilotTask.cpp | 6 ++++-- .../Task/Miscellaneous/MultiCopilotTaskPlugin.cpp | 10 ++++++++-- .../Task/Miscellaneous/MultiCopilotTaskPlugin.h | 7 ++++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/MaaCore/Task/Interface/CopilotTask.cpp b/src/MaaCore/Task/Interface/CopilotTask.cpp index 9ca649c533..0d188497cb 100644 --- a/src/MaaCore/Task/Interface/CopilotTask.cpp +++ b/src/MaaCore/Task/Interface/CopilotTask.cpp @@ -12,6 +12,8 @@ #include "Utils/Logger.hpp" #include "Utils/Platform.hpp" +#include "Arknights-Tile-Pos/TileCalc2.hpp" + asst::CopilotTask::CopilotTask(const AsstCallback& callback, Assistant* inst) : InterfaceTask(callback, inst, TaskType), m_multi_copilot_plugin_ptr(std::make_shared(callback, inst, TaskType)), @@ -22,6 +24,7 @@ asst::CopilotTask::CopilotTask(const AsstCallback& callback, Assistant* inst) : LogTraceFunction; m_multi_copilot_plugin_ptr->set_retry_times(0); + m_multi_copilot_plugin_ptr->set_battle_task_ptr(m_battle_task_ptr); m_subtasks.emplace_back(m_multi_copilot_plugin_ptr); auto start_1_tp = std::make_shared(callback, inst, TaskType); @@ -128,8 +131,7 @@ bool asst::CopilotTask::set_params(const json::value& params) return false; } m_stage_name = Copilot.get_stage_name(); - if (!m_battle_task_ptr->set_stage_name(m_stage_name)) { - Log.error("Not support stage"); + if (auto result = Tile.find(m_stage_name); !result || !json::open(result->second)) { return false; } config_cvt.copilot_file = std::move(copilot_opt); diff --git a/src/MaaCore/Task/Miscellaneous/MultiCopilotTaskPlugin.cpp b/src/MaaCore/Task/Miscellaneous/MultiCopilotTaskPlugin.cpp index 27ed787770..6681609b78 100644 --- a/src/MaaCore/Task/Miscellaneous/MultiCopilotTaskPlugin.cpp +++ b/src/MaaCore/Task/Miscellaneous/MultiCopilotTaskPlugin.cpp @@ -2,6 +2,7 @@ #include "Config/Miscellaneous/CopilotConfig.h" #include "Config/TaskData.h" +#include "Task/Miscellaneous/BattleProcessTask.h" #include "Task/ProcessTask.h" #include "Utils/Logger.hpp" #include "Utils/Platform.hpp" @@ -14,7 +15,7 @@ bool asst::MultiCopilotTaskPlugin::_run() return false; } - const auto& config = m_copilot_configs[m_index_current]; + const auto& config = m_copilot_configs[m_index_current++]; std::string file_name; if (std::holds_alternative(config.copilot_file)) { @@ -35,6 +36,12 @@ bool asst::MultiCopilotTaskPlugin::_run() return false; } + const auto& stage_name = Copilot.get_stage_name(); + if (!m_battle_task_ptr->set_stage_name(stage_name)) { + Log.error("Not support stage"); + return false; + } + json::value info = basic_info_with_what("CopilotListLoadTaskFileSuccess"); info["details"]["stage_name"] = Copilot.get_stage_name(); info["details"]["file_name"] = std::move(file_name); @@ -54,6 +61,5 @@ bool asst::MultiCopilotTaskPlugin::_run() ret = ret && ProcessTask(*this, { "RaidConfirm", "ChangeToRaidDifficulty" }).run(); } - m_index_current++; return ret; } diff --git a/src/MaaCore/Task/Miscellaneous/MultiCopilotTaskPlugin.h b/src/MaaCore/Task/Miscellaneous/MultiCopilotTaskPlugin.h index f243a4898a..7993f3a646 100644 --- a/src/MaaCore/Task/Miscellaneous/MultiCopilotTaskPlugin.h +++ b/src/MaaCore/Task/Miscellaneous/MultiCopilotTaskPlugin.h @@ -1,10 +1,12 @@ #pragma once -#include "Task/AbstractTaskPlugin.h" +#include "Task/AbstractTask.h" #include namespace asst { +class BattleProcessTask; + class MultiCopilotTaskPlugin : public AbstractTask { public: @@ -21,10 +23,13 @@ public: void set_multi_copilot_config(std::vector config) { m_copilot_configs = std::move(config); } + void set_battle_task_ptr(const std::shared_ptr& ptr) { m_battle_task_ptr = ptr; } + private: virtual bool _run() override; std::vector m_copilot_configs; int m_index_current = 0; // 当前执行的索引 + std::shared_ptr m_battle_task_ptr = nullptr; }; }