feat: 刷开局模式增加萨米肉鸽生活队凹密文板 (#8408)

* feat: 增加萨米肉鸽凹密文板UI,优化肉鸽部分UI的显示

* feat: 凹开局板子相关逻辑

* perf: 优化相关逻辑

* perf: 传参使用array代替string

* style: format

---------

Co-authored-by: status102 <102887808+status102@users.noreply.github.com>
This commit is contained in:
Lancarus
2024-02-28 13:01:15 +08:00
committed by GitHub
parent cc31018b2f
commit fa713feea6
19 changed files with 229 additions and 19 deletions

View File

@@ -12,8 +12,10 @@
#include "Task/Roguelike/RoguelikeDebugTaskPlugin.h"
#include "Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.h"
#include "Task/Roguelike/RoguelikeFoldartalGainTaskPlugin.h"
#include "Task/Roguelike/RoguelikeFoldartalStartTaskPlugin.h"
#include "Task/Roguelike/RoguelikeFoldartalUseTaskPlugin.h"
#include "Task/Roguelike/RoguelikeFormationTaskPlugin.h"
#include "Task/Roguelike/RoguelikeInvestTaskPlugin.h"
#include "Task/Roguelike/RoguelikeLastRewardTaskPlugin.h"
#include "Task/Roguelike/RoguelikeRecruitTaskPlugin.h"
#include "Task/Roguelike/RoguelikeResetTaskPlugin.h"
@@ -22,7 +24,6 @@
#include "Task/Roguelike/RoguelikeSkillSelectionTaskPlugin.h"
#include "Task/Roguelike/RoguelikeStageEncounterTaskPlugin.h"
#include "Task/Roguelike/RoguelikeStrategyChangeTaskPlugin.h"
#include "Task/Roguelike/RoguelikeInvestTaskPlugin.h"
#include "Utils/Logger.hpp"
@@ -66,6 +67,7 @@ asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, Assistant* inst
m_roguelike_task_ptr->register_plugin<RoguelikeFoldartalGainTaskPlugin>(m_roguelike_config_ptr);
m_roguelike_task_ptr->register_plugin<RoguelikeFoldartalUseTaskPlugin>(m_roguelike_config_ptr);
m_roguelike_task_ptr->register_plugin<RoguelikeFoldartalStartTaskPlugin>(m_roguelike_config_ptr);
// 这个任务如果卡住会放弃当前的肉鸽并重新开始,所以多添加一点。先这样凑合用
for (int i = 0; i != 100; ++i) {
@@ -98,9 +100,26 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
// 是否凹指定干员开局直升
m_roguelike_config_ptr->set_start_with_elite_two(params.get("start_with_elite_two", false));
m_roguelike_config_ptr->set_only_start_with_elite_two(params.get("only_start_with_elite_two", false));
// 是否生活队凹开局板子
m_roguelike_config_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_roguelike_config_ptr->set_start_foldartal_list(std::move(list));
}
m_roguelike_config_ptr->set_invest_maximum(params.get("investments_count", INT_MAX));
m_roguelike_config_ptr->set_invest_stop_when_full(params.get("stop_when_investment_full", false));
// 设置层数选点策略,相关逻辑在 RoguelikeStrategyChangeTaskPlugin
{
Task.set_task_base(theme + "@Roguelike@Stages", theme + "@Roguelike@Stages_default");