diff --git a/src/MaaCore/Assistant.cpp b/src/MaaCore/Assistant.cpp index 2d027dc7f3..de46dcb67f 100644 --- a/src/MaaCore/Assistant.cpp +++ b/src/MaaCore/Assistant.cpp @@ -11,6 +11,7 @@ #include "Task/Interface/AwardTask.h" #include "Task/Interface/CloseDownTask.h" #include "Task/Interface/CopilotTask.h" +#include "Task/Interface/CustomTask.h" #include "Task/Interface/DepotTask.h" #include "Task/Interface/FightTask.h" #include "Task/Interface/InfrastTask.h" @@ -164,6 +165,7 @@ asst::Assistant::TaskId asst::Assistant::append_task(const std::string& type, co ASST_ASSISTANT_APPEND_TASK_FROM_STRING_IF_BRANCH(SingleStepTask) ASST_ASSISTANT_APPEND_TASK_FROM_STRING_IF_BRANCH(DepotTask) ASST_ASSISTANT_APPEND_TASK_FROM_STRING_IF_BRANCH(ReclamationTask) + ASST_ASSISTANT_APPEND_TASK_FROM_STRING_IF_BRANCH(CustomTask) #ifdef ASST_DEBUG ASST_ASSISTANT_APPEND_TASK_FROM_STRING_IF_BRANCH(DebugTask) #endif diff --git a/src/MaaCore/Task/Interface/CustomTask.cpp b/src/MaaCore/Task/Interface/CustomTask.cpp new file mode 100644 index 0000000000..dcf5ee8328 --- /dev/null +++ b/src/MaaCore/Task/Interface/CustomTask.cpp @@ -0,0 +1,19 @@ +#include "CustomTask.h" +#include "Task/ProcessTask.h" + +asst::CustomTask::CustomTask(const AsstCallback& callback, Assistant* inst) : InterfaceTask(callback, inst, TaskType) +{ + +} + +bool asst::CustomTask::set_params(const json::value& params) +{ + std::vector tasks {}; + for (const auto &i : params.at("task_names").as_array()) { + tasks.emplace_back(i.as_string()); + } + auto custom_task_ptr = std::make_shared(m_callback, m_inst, TaskType); + custom_task_ptr->set_tasks(tasks); + m_subtasks.emplace_back(custom_task_ptr); + return true; +} diff --git a/src/MaaCore/Task/Interface/CustomTask.h b/src/MaaCore/Task/Interface/CustomTask.h new file mode 100644 index 0000000000..1eecefd0ee --- /dev/null +++ b/src/MaaCore/Task/Interface/CustomTask.h @@ -0,0 +1,17 @@ +#pragma once +#include "Task/InterfaceTask.h" + +namespace asst +{ + class ProcessTask; + + class CustomTask final : public InterfaceTask + { + public: + inline static constexpr std::string_view TaskType = "Custom"; + + CustomTask(const AsstCallback& callback, Assistant* inst); + virtual ~CustomTask() override = default; + virtual bool set_params(const json::value& params) override; + }; +} diff --git a/src/Python/sample.py b/src/Python/sample.py index af4ae0ad1f..fe3253cfb9 100644 --- a/src/Python/sample.py +++ b/src/Python/sample.py @@ -81,7 +81,7 @@ if __name__ == "__main__": # 'filename': './GA-EX8-raid.json', # 'formation': False # }) - + # asst.append_task('Custom', {"task_names": ["AwardBegin"]}) asst.start() while asst.running():