mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-19 18:47:55 +08:00
71 lines
2.7 KiB
C++
71 lines
2.7 KiB
C++
#include "RecruitTask.h"
|
|
|
|
#include "AutoRecruitTask.h"
|
|
#include "ProcessTask.h"
|
|
|
|
asst::RecruitTask::RecruitTask(const AsstCallback& callback, void* callback_arg)
|
|
: PackageTask(callback, callback_arg, TaskType),
|
|
m_auto_recruit_task_ptr(std::make_shared<AutoRecruitTask>(callback, callback_arg, TaskType))
|
|
{
|
|
m_subtasks.emplace_back(m_auto_recruit_task_ptr)->set_retry_times(5);
|
|
}
|
|
|
|
bool asst::RecruitTask::set_params(const json::value& params)
|
|
{
|
|
auto select_opt = params.find<json::array>("select");
|
|
auto confirm_opt = params.find<json::array>("confirm");
|
|
if (!select_opt || !confirm_opt) {
|
|
return false;
|
|
}
|
|
|
|
std::vector<int> select;
|
|
for (const auto& select_num_json : select_opt.value()) {
|
|
if (!select_num_json.is_number()) {
|
|
return false;
|
|
}
|
|
select.emplace_back(select_num_json.as_integer());
|
|
}
|
|
|
|
std::vector<int> confirm;
|
|
for (const auto& confirm_num_json : confirm_opt.value()) {
|
|
if (!confirm_num_json.is_number()) {
|
|
return false;
|
|
}
|
|
confirm.emplace_back(confirm_num_json.as_integer());
|
|
}
|
|
|
|
bool refresh = params.get("refresh", false);
|
|
bool set_time = params.get("set_time", true);
|
|
int times = params.get("times", 0);
|
|
bool expedite = params.get("expedite", false);
|
|
[[maybe_unused]] int expedite_times = params.get("expedite_times", 0);
|
|
bool skip_robot = params.get("skip_robot", true);
|
|
|
|
std::unordered_map<int /*level*/, int /*minute*/> recruitment_time_map;
|
|
recruitment_time_map[3] = std::clamp(params.get("recruitment_time", "3", 9 * 60), 1 * 60, 9 * 60);
|
|
recruitment_time_map[4] = std::clamp(params.get("recruitment_time", "4", 9 * 60), 1 * 60, 9 * 60);
|
|
recruitment_time_map[5] = std::clamp(params.get("recruitment_time", "5", 9 * 60), 1 * 60, 9 * 60);
|
|
recruitment_time_map[6] = std::clamp(params.get("recruitment_time", "6", 9 * 60), 1 * 60, 9 * 60);
|
|
|
|
bool penguin_enabled = params.get("report_to_penguin", false);
|
|
std::string penguin_id = params.get("penguin_id", "");
|
|
bool yituliu_enabled = params.get("report_to_yituliu", false);
|
|
std::string server = params.get("server", "CN");
|
|
|
|
m_auto_recruit_task_ptr->set_enable(true);
|
|
|
|
m_auto_recruit_task_ptr->set_max_times(times)
|
|
.set_need_refresh(refresh)
|
|
.set_use_expedited(expedite)
|
|
.set_select_level(std::move(select))
|
|
.set_confirm_level(std::move(confirm))
|
|
.set_skip_robot(skip_robot)
|
|
.set_recruitment_time(recruitment_time_map)
|
|
.set_penguin_enabled(penguin_enabled, penguin_id)
|
|
.set_yituliu_enabled(yituliu_enabled)
|
|
.set_server(server)
|
|
.set_set_time(set_time).set_retry_times(3);
|
|
|
|
return true;
|
|
}
|