perf: 肉鸽主题从Status分离

This commit is contained in:
status102
2023-10-02 16:02:40 +08:00
parent a65da98152
commit 00a9e1e9a8
31 changed files with 190 additions and 131 deletions

View File

@@ -25,24 +25,25 @@ asst::RoguelikeTask::RoguelikeTask(const AsstCallback& callback, Assistant* inst
LogTraceFunction;
m_roguelike_task_ptr->set_ignore_error(true);
m_roguelike_task_ptr->register_plugin<RoguelikeFormationTaskPlugin>();
m_roguelike_task_ptr->register_plugin<RoguelikeControlTaskPlugin>();
m_roguelike_task_ptr->register_plugin<RoguelikeResetTaskPlugin>();
m_formation_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeFormationTaskPlugin>();
m_control_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeControlTaskPlugin>();
m_reset_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeResetTaskPlugin>();
m_debug_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeDebugTaskPlugin>();
m_shopping_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeShoppingTaskPlugin>();
m_shopping_plugin_ptr->set_retry_times(0);
m_debug_task_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeDebugTaskPlugin>();
m_roguelike_task_ptr->register_plugin<RoguelikeShoppingTaskPlugin>()->set_retry_times(0);
m_custom_start_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeCustomStartTaskPlugin>();
m_battle_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeBattleTaskPlugin>();
m_battle_plugin_ptr->set_retry_times(0).set_ignore_error(true);
m_recruit_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeRecruitTaskPlugin>();
m_recruit_plugin_ptr->set_retry_times(2).set_ignore_error(true);
m_skill_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeSkillSelectionTaskPlugin>();
m_skill_plugin_ptr->set_retry_times(2).set_ignore_error(true);
m_stage_encounter_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeStageEncounterTaskPlugin>();
m_stage_encounter_plugin_ptr->set_retry_times(0);
m_custom_start_task_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeCustomStartTaskPlugin>();
m_battle_task_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeBattleTaskPlugin>();
m_battle_task_ptr->set_retry_times(0).set_ignore_error(true);
m_recruit_task_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeRecruitTaskPlugin>();
m_recruit_task_ptr->set_retry_times(2).set_ignore_error(true);
m_skill_task_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeSkillSelectionTaskPlugin>();
m_skill_task_ptr->set_retry_times(2).set_ignore_error(true);
m_roguelike_task_ptr->register_plugin<RoguelikeStageEncounterTaskPlugin>()->set_retry_times(0);
m_roguelike_task_ptr->register_plugin<RoguelikeLastRewardTaskPlugin>();
m_roguelike_task_ptr->register_plugin<RoguelikeDifficultySelectionTaskPlugin>();
m_last_reward_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeLastRewardTaskPlugin>();
m_difficulty_selection_plugin_ptr = m_roguelike_task_ptr->register_plugin<RoguelikeDifficultySelectionTaskPlugin>();
// 这个任务如果卡住会放弃当前的肉鸽并重新开始,所以多添加一点。先这样凑合用
for (int i = 0; i != 100; ++i) {
@@ -65,7 +66,19 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
Log.error(__FUNCTION__, "status() is null");
return false;
}
status()->set_properties(Status::RoguelikeTheme, theme);
m_battle_plugin_ptr->set_roguelike_theme(theme);
m_control_plugin_ptr->set_roguelike_theme(theme);
m_custom_start_plugin_ptr->set_roguelike_theme(theme);
m_debug_plugin_ptr->set_roguelike_theme(theme);
m_difficulty_selection_plugin_ptr->set_roguelike_theme(theme);
m_formation_plugin_ptr->set_roguelike_theme(theme);
m_last_reward_plugin_ptr->set_roguelike_theme(theme);
m_recruit_plugin_ptr->set_roguelike_theme(theme);
m_reset_plugin_ptr->set_roguelike_theme(theme);
m_shopping_plugin_ptr->set_roguelike_theme(theme);
m_skill_plugin_ptr->set_roguelike_theme(theme);
m_stage_encounter_plugin_ptr->set_roguelike_theme(theme);
m_roguelike_task_ptr->set_tasks({ theme + "@Roguelike@Begin" });
// 0 - 刷经验,尽可能稳定地打更多层数,不期而遇采用激进策略
@@ -80,7 +93,7 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
return false;
}
m_debug_task_ptr->set_enable(mode != 1);
m_debug_plugin_ptr->set_enable(mode != 1);
// 是否凹指定干员开局直升
bool start_with_elite_two = params.get("start_with_elite_two", false);
@@ -158,19 +171,19 @@ bool asst::RoguelikeTask::set_params(const json::value& params)
}
if (auto squad_opt = params.find<std::string>("squad"); squad_opt && !squad_opt->empty()) {
m_custom_start_task_ptr->set_custom(RoguelikeCustomType::Squad, *squad_opt);
m_custom_start_plugin_ptr->set_custom(RoguelikeCustomType::Squad, *squad_opt);
}
if (auto roles_opt = params.find<std::string>("roles"); roles_opt && !roles_opt->empty()) {
m_custom_start_task_ptr->set_custom(RoguelikeCustomType::Roles, *roles_opt);
m_custom_start_plugin_ptr->set_custom(RoguelikeCustomType::Roles, *roles_opt);
}
if (auto core_char_opt = params.find<std::string>("core_char"); core_char_opt && !core_char_opt->empty()) {
m_custom_start_task_ptr->set_custom(RoguelikeCustomType::CoreChar, *core_char_opt);
m_custom_start_plugin_ptr->set_custom(RoguelikeCustomType::CoreChar, *core_char_opt);
}
if (auto use_support_opt = params.find<bool>("use_support"); use_support_opt) {
m_custom_start_task_ptr->set_custom(RoguelikeCustomType::UseSupport, *use_support_opt ? "1" : "0");
m_custom_start_plugin_ptr->set_custom(RoguelikeCustomType::UseSupport, *use_support_opt ? "1" : "0");
}
if (auto use_nonfriend_opt = params.find<bool>("use_nonfriend_support"); use_nonfriend_opt) {
m_custom_start_task_ptr->set_custom(RoguelikeCustomType::UseNonfriendSupport, *use_nonfriend_opt ? "1" : "0");
m_custom_start_plugin_ptr->set_custom(RoguelikeCustomType::UseNonfriendSupport, *use_nonfriend_opt ? "1" : "0");
}
return true;