perf: 简化RoguelikeTask set_param (#9905)

* perf: 简化RoguelikeTask set_param

* fix: return value
This commit is contained in:
status102
2024-07-29 13:09:25 +08:00
committed by GitHub
parent d3eb204e8c
commit 12133550ca
5 changed files with 59 additions and 38 deletions

View File

@@ -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()) {

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;