mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-16 17:57:01 +08:00
perf: 简化RoguelikeTask set_param (#9905)
* perf: 简化RoguelikeTask set_param * fix: return value
This commit is contained in:
@@ -130,6 +130,22 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
|
||||
m_roguelike_task_ptr->set_times_limit(theme + "@Roguelike@StageDreadfulFoe-5", INT_MAX);
|
||||
}
|
||||
|
||||
if (theme == RoguelikeTheme::Sami) {
|
||||
if (auto opt = params.find<json::array>("start_foldartal_list"); opt) {
|
||||
std::vector<std::string> list;
|
||||
for (const auto& name : *opt) {
|
||||
if (std::string name_str = name.as_string(); !name_str.empty()) {
|
||||
list.emplace_back(name_str);
|
||||
}
|
||||
}
|
||||
/* 由于插件 load_param返回值仅决定自身是否启用,二次读取参数进行验证 */
|
||||
if (list.empty()) {
|
||||
Log.error(__FUNCTION__, "| Empty start_foldartal_list");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_roguelike_task_ptr->set_times_limit(theme + "@Roguelike@StartExplore", params.get("starts_count", INT_MAX));
|
||||
// 通过 exceededNext 禁用投资系统,进入商店购买逻辑
|
||||
m_roguelike_task_ptr->set_times_limit(
|
||||
@@ -139,30 +155,6 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
|
||||
"StageTraderRefreshWithDice",
|
||||
params.get("refresh_trader_with_dice", false) ? INT_MAX : 0);
|
||||
|
||||
// =========================== 萨米主题专用参数 ===========================
|
||||
|
||||
if (theme == RoguelikeTheme::Sami) {
|
||||
// 是否生活队凹开局板子
|
||||
m_foldartal_start_ptr->set_start_foldartal(params.contains("start_foldartal_list"));
|
||||
|
||||
if (auto opt = params.find<json::array>("start_foldartal_list"); opt) {
|
||||
std::vector<std::string> list;
|
||||
for (const auto& name : *opt) {
|
||||
if (std::string name_str = name.as_string(); !name_str.empty()) {
|
||||
list.emplace_back(name_str);
|
||||
}
|
||||
}
|
||||
if (list.empty()) {
|
||||
Log.error(__FUNCTION__, "| Empty start_foldartal_list");
|
||||
return false;
|
||||
}
|
||||
m_foldartal_start_ptr->set_start_foldartal_list(std::move(list));
|
||||
}
|
||||
|
||||
// 是否使用密文版, 非CLP_PDS模式下默认为True, CLP_PDS模式下默认为False
|
||||
m_foldartal_use_ptr->set_use_foldartal(params.get("use_foldartal", mode != RoguelikeMode::CLP_PDS));
|
||||
}
|
||||
|
||||
m_invest_ptr->set_control_plugin_ptr(m_control_ptr);
|
||||
|
||||
for (const auto& plugin : m_roguelike_task_ptr->get_plugins()) {
|
||||
|
||||
@@ -30,6 +30,35 @@ bool asst::RoguelikeFoldartalStartTaskPlugin::verify(AsstMsg msg, const json::va
|
||||
}
|
||||
}
|
||||
|
||||
bool asst::RoguelikeFoldartalStartTaskPlugin::load_params(const json::value& params)
|
||||
{
|
||||
if (m_config->get_theme() != RoguelikeTheme::Sami) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 是否生活队凹开局板子
|
||||
m_start_foldartal = (params.contains("start_foldartal_list"));
|
||||
|
||||
if (auto opt = params.find<json::array>("start_foldartal_list"); opt) {
|
||||
std::vector<std::string> list;
|
||||
for (const auto& name : *opt) {
|
||||
if (std::string name_str = name.as_string(); !name_str.empty()) {
|
||||
list.emplace_back(name_str);
|
||||
}
|
||||
}
|
||||
/* 由于插件 load_param返回值仅决定自身是否启用,参数验证移动至他处 */
|
||||
/*
|
||||
if (list.empty()) {
|
||||
Log.error(__FUNCTION__, "| Empty start_foldartal_list");
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
m_start_foldartal_list = (std::move(list));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool asst::RoguelikeFoldartalStartTaskPlugin::_run()
|
||||
{
|
||||
LogTraceFunction;
|
||||
|
||||
@@ -12,14 +12,7 @@ public:
|
||||
public:
|
||||
virtual bool verify(AsstMsg msg, const json::value& details) const override;
|
||||
|
||||
virtual bool load_params([[maybe_unused]] const json::value& params) override
|
||||
{
|
||||
return m_config->get_theme() == RoguelikeTheme::Sami;
|
||||
}
|
||||
|
||||
void set_start_foldartal(bool value) { m_start_foldartal = value; }
|
||||
|
||||
void set_start_foldartal_list(std::vector<std::string> value) { m_start_foldartal_list = std::move(value); }
|
||||
virtual bool load_params([[maybe_unused]] const json::value& params) override;
|
||||
|
||||
protected:
|
||||
virtual bool _run() override;
|
||||
|
||||
@@ -70,6 +70,18 @@ bool asst::RoguelikeFoldartalUseTaskPlugin::verify(const AsstMsg msg, const json
|
||||
}
|
||||
}
|
||||
|
||||
bool asst::RoguelikeFoldartalUseTaskPlugin::load_params(const json::value& params)
|
||||
{
|
||||
if (m_config->get_theme() != RoguelikeTheme::Sami) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// 是否使用密文版, 非CLP_PDS模式下默认为True, CLP_PDS模式下默认为False
|
||||
m_use_foldartal = (params.get("use_foldartal", m_config->get_mode() != RoguelikeMode::CLP_PDS));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool asst::RoguelikeFoldartalUseTaskPlugin::_run()
|
||||
{
|
||||
LogTraceFunction;
|
||||
|
||||
@@ -13,12 +13,7 @@ namespace asst
|
||||
|
||||
public:
|
||||
virtual bool verify(AsstMsg msg, const json::value& details) const override;
|
||||
virtual bool load_params([[maybe_unused]] const json::value& params) override
|
||||
{
|
||||
// 投资模式下不开启调试任务
|
||||
return m_config->get_theme() == RoguelikeTheme::Sami;
|
||||
}
|
||||
void set_use_foldartal(bool value) { m_use_foldartal = value; }
|
||||
virtual bool load_params([[maybe_unused]] const json::value& params) override;
|
||||
|
||||
protected:
|
||||
virtual bool _run() override;
|
||||
|
||||
Reference in New Issue
Block a user