mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-16 01:40:46 +08:00
feat.增加任务回调taskid字段
This commit is contained in:
@@ -113,6 +113,7 @@ Todo
|
||||
```jsonc
|
||||
{
|
||||
"taskchain": string, // 当前的任务链
|
||||
"taskid": int, // 当前任务 TaskId
|
||||
"uuid": string // 设备唯一码
|
||||
}
|
||||
```
|
||||
@@ -128,6 +129,7 @@ Todo
|
||||
"subtask": string, // 子任务名
|
||||
"class": string, // 子任务符号名
|
||||
"taskchain": string, // 当前任务链
|
||||
"taskid": int, // 当前任务 TaskId
|
||||
"details": object, // 详情
|
||||
"uuid": string // 设备唯一码
|
||||
}
|
||||
|
||||
@@ -80,6 +80,12 @@ AbstractTask& asst::AbstractTask::set_enable(bool enable) noexcept
|
||||
return *this;
|
||||
}
|
||||
|
||||
AbstractTask& asst::AbstractTask::set_task_id(int task_id) noexcept
|
||||
{
|
||||
m_task_id = task_id;
|
||||
return *this;
|
||||
}
|
||||
|
||||
void asst::AbstractTask::clear_plugin() noexcept
|
||||
{
|
||||
m_plugins.clear();
|
||||
@@ -103,6 +109,7 @@ json::value asst::AbstractTask::basic_info() const
|
||||
|
||||
m_basic_info_cache = json::object{
|
||||
{ "taskchain", m_task_chain },
|
||||
{ "taskid", m_task_id },
|
||||
{ "class", class_name },
|
||||
{ "subtask", task_name },
|
||||
{ "details", json::object() }
|
||||
@@ -165,6 +172,7 @@ void asst::AbstractTask::callback(AsstMsg msg, const json::value& detail)
|
||||
for (TaskPluginPtr plugin : m_plugins) {
|
||||
plugin->set_exit_flag(m_exit_flag);
|
||||
plugin->set_ctrler(m_ctrler);
|
||||
plugin->set_task_id(m_task_id);
|
||||
plugin->set_status(m_status);
|
||||
plugin->set_task_ptr(this);
|
||||
|
||||
|
||||
@@ -31,11 +31,12 @@ namespace asst
|
||||
|
||||
virtual bool run();
|
||||
|
||||
AbstractTask& set_exit_flag(bool* exit_flag) noexcept;
|
||||
AbstractTask& set_retry_times(int times) noexcept;
|
||||
AbstractTask& set_ctrler(std::shared_ptr<Controller> ctrler) noexcept;
|
||||
AbstractTask& set_status(std::shared_ptr<RuntimeStatus> status) noexcept;
|
||||
AbstractTask& set_enable(bool enable) noexcept;
|
||||
virtual AbstractTask& set_exit_flag(bool* exit_flag) noexcept;
|
||||
virtual AbstractTask& set_retry_times(int times) noexcept;
|
||||
virtual AbstractTask& set_ctrler(std::shared_ptr<Controller> ctrler) noexcept;
|
||||
virtual AbstractTask& set_status(std::shared_ptr<RuntimeStatus> status) noexcept;
|
||||
virtual AbstractTask& set_enable(bool enable) noexcept;
|
||||
virtual AbstractTask& set_task_id(int task_id) noexcept;
|
||||
|
||||
template<typename PluginType>
|
||||
std::shared_ptr<PluginType> regiseter_plugin()
|
||||
@@ -51,6 +52,7 @@ namespace asst
|
||||
|
||||
bool get_enable() const noexcept { return m_enable; }
|
||||
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;
|
||||
|
||||
constexpr static int RetryTimesDefault = 20;
|
||||
@@ -74,6 +76,7 @@ namespace asst
|
||||
int m_retry_times = RetryTimesDefault;
|
||||
|
||||
mutable json::value m_basic_info_cache;
|
||||
int m_task_id = 0;
|
||||
std::set<TaskPluginPtr> m_plugins;
|
||||
std::shared_ptr<Controller> m_ctrler = nullptr;
|
||||
std::shared_ptr<RuntimeStatus> m_status = nullptr;
|
||||
|
||||
@@ -129,6 +129,7 @@ asst::Assistant::TaskId asst::Assistant::append_task(const std::string& type, co
|
||||
std::unique_lock<std::mutex> lock(m_mutex);
|
||||
|
||||
++m_task_id;
|
||||
ptr->set_task_id(m_task_id);
|
||||
m_tasks_list.emplace_back(m_task_id, ptr);
|
||||
return m_task_id;
|
||||
}
|
||||
@@ -225,7 +226,8 @@ void Assistant::working_proc()
|
||||
lock.unlock();
|
||||
|
||||
json::value callback_json = json::object{
|
||||
{ "taskchain", task_ptr->get_task_chain() }
|
||||
{ "taskchain", task_ptr->get_task_chain() },
|
||||
{ "taskid", task_ptr->get_task_id() }
|
||||
};
|
||||
task_callback(AsstMsg::TaskChainStart, callback_json, this);
|
||||
|
||||
|
||||
@@ -112,7 +112,8 @@ bool asst::AutoRecruitTask::calc_and_recruit()
|
||||
.set_retry_times(m_retry_times)
|
||||
.set_exit_flag(m_exit_flag)
|
||||
.set_ctrler(m_ctrler)
|
||||
.set_status(m_status);
|
||||
.set_status(m_status)
|
||||
.set_task_id(m_task_id);
|
||||
|
||||
// 识别错误,放弃这个公招位,直接返回
|
||||
if (!recruit_task.run()) {
|
||||
|
||||
@@ -25,7 +25,8 @@ bool asst::PackageTask::run()
|
||||
|
||||
task_ptr->set_exit_flag(m_exit_flag)
|
||||
.set_ctrler(m_ctrler)
|
||||
.set_status(m_status);
|
||||
.set_status(m_status)
|
||||
.set_task_id(m_task_id);
|
||||
|
||||
if (!task_ptr->run()) {
|
||||
return false;
|
||||
@@ -73,3 +74,12 @@ asst::AbstractTask& asst::PackageTask::set_status(std::shared_ptr<RuntimeStatus>
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
asst::AbstractTask& asst::PackageTask::set_task_id(int task_id) noexcept
|
||||
{
|
||||
AbstractTask::set_task_id(task_id);
|
||||
for (auto&& sub : m_subtasks) {
|
||||
sub->set_task_id(task_id);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
@@ -22,10 +22,11 @@ namespace asst
|
||||
|
||||
virtual bool set_params([[maybe_unused]] const json::value& params) { return true; }
|
||||
|
||||
virtual AbstractTask& set_exit_flag(bool* exit_flag) noexcept;
|
||||
virtual AbstractTask& set_retry_times(int times) noexcept;
|
||||
virtual AbstractTask& set_ctrler(std::shared_ptr<Controller> ctrler) noexcept;
|
||||
virtual AbstractTask& set_status(std::shared_ptr<RuntimeStatus> status) noexcept;
|
||||
virtual AbstractTask& set_exit_flag(bool* exit_flag) noexcept override;
|
||||
virtual AbstractTask& set_retry_times(int times) noexcept override;
|
||||
virtual AbstractTask& set_ctrler(std::shared_ptr<Controller> ctrler) noexcept override;
|
||||
virtual AbstractTask& set_status(std::shared_ptr<RuntimeStatus> status) noexcept override;
|
||||
virtual AbstractTask& set_task_id(int task_id) noexcept override;
|
||||
|
||||
protected:
|
||||
virtual bool _run() override { return true; }
|
||||
|
||||
Reference in New Issue
Block a user