mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-16 01:40:46 +08:00
feat: 借助战作战从json中读取关卡名
This commit is contained in:
@@ -42,6 +42,6 @@
|
||||
}
|
||||
],
|
||||
"opers": [],
|
||||
"stage_name": "activities/act3d0/level_act3d0_01",
|
||||
"stage_name": "OF-1",
|
||||
"difficulty": 3
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
bool asst::CopilotConfiger::parse(const json::value& json)
|
||||
{
|
||||
std::string stage_name = json.at("stage_name").as_string();
|
||||
m_stage_name = stage_name;
|
||||
|
||||
BattleCopilotData battle_actions;
|
||||
battle_actions.title = json.get("doc", "title", std::string());
|
||||
|
||||
@@ -16,9 +16,12 @@ namespace asst
|
||||
|
||||
auto get_actions(const std::string& stage_name) const noexcept { return m_battle_actions.at(stage_name); }
|
||||
|
||||
auto get_stage_name() { return m_stage_name; }
|
||||
|
||||
protected:
|
||||
virtual bool parse(const json::value& json) override;
|
||||
std::unordered_map<std::string, BattleCopilotData> m_battle_actions;
|
||||
std::string m_stage_name = "";
|
||||
};
|
||||
|
||||
inline static auto& Copilot = CopilotConfiger::get_instance();
|
||||
|
||||
@@ -51,3 +51,12 @@ bool asst::CopilotTask::set_params(const json::value& params)
|
||||
const std::string& filename = filename_opt.value();
|
||||
return Copilot.load(utils::path(filename));
|
||||
}
|
||||
|
||||
std::string asst::CopilotTask::get_stage_name(std::string filename)
|
||||
{
|
||||
if (!Copilot.load(utils::path(filename))) {
|
||||
return "";
|
||||
}
|
||||
|
||||
return Copilot.get_stage_name();
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ namespace asst
|
||||
|
||||
static constexpr const char* TaskType = "Copilot";
|
||||
|
||||
std::string get_stage_name(std::string filename);
|
||||
|
||||
private:
|
||||
std::shared_ptr<BattleFormationTask> m_formation_task_ptr = nullptr;
|
||||
std::shared_ptr<BattleProcessTask> m_battle_task_ptr = nullptr;
|
||||
|
||||
@@ -14,28 +14,27 @@
|
||||
asst::CreditFightTask::CreditFightTask(AsstCallback callback, void* callback_arg)
|
||||
: PackageTask(std::move(callback), callback_arg, TaskType)
|
||||
{
|
||||
std::shared_ptr<ProcessTask> start_up_task_ptr =
|
||||
std::make_shared<ProcessTask>(m_callback, m_callback_arg, m_task_chain);
|
||||
std::shared_ptr<StageNavigationTask> stage_navigation_task_ptr =
|
||||
std::make_shared<StageNavigationTask>(m_callback, m_callback_arg, m_task_chain);
|
||||
std::shared_ptr<ProcessTask> fight_task_ptr =
|
||||
std::make_shared<ProcessTask>(m_callback, m_callback_arg, m_task_chain);
|
||||
std::shared_ptr<CopilotTask> copilot_task_ptr = std::make_shared<CopilotTask>(m_callback, m_callback_arg);
|
||||
std::shared_ptr<GameCrashRestartTaskPlugin> game_restart_plugin_ptr = nullptr;
|
||||
stage_navigation_task_ptr->set_enable(false).set_ignore_error(false);
|
||||
auto start_up_task_ptr = std::make_shared<ProcessTask>(m_callback, m_callback_arg, m_task_chain);
|
||||
auto stage_navigation_task_ptr = std::make_shared<StageNavigationTask>(m_callback, m_callback_arg, m_task_chain);
|
||||
auto fight_task_ptr = std::make_shared<ProcessTask>(m_callback, m_callback_arg, m_task_chain);
|
||||
auto copilot_task_ptr = std::make_shared<CopilotTask>(m_callback, m_callback_arg);
|
||||
|
||||
// 读取关卡名
|
||||
std::string copilot_path = utils::path_to_utf8_string(ResDir.get() / "resource" / "credit_fight_copilot.json");
|
||||
|
||||
std::string stage_name = copilot_task_ptr->get_stage_name(copilot_path); // OF-1
|
||||
|
||||
const std::string stage = "OF-1";
|
||||
// 开始
|
||||
start_up_task_ptr->set_tasks({ "StageBegin" }).set_times_limit("GoLastBattle", 0);
|
||||
|
||||
// 关卡导航
|
||||
stage_navigation_task_ptr->set_stage_name(stage);
|
||||
stage_navigation_task_ptr->set_enable(true);
|
||||
stage_navigation_task_ptr->set_stage_name(stage_name);
|
||||
stage_navigation_task_ptr->set_enable(true).set_ignore_error(false);
|
||||
|
||||
// 自动战斗
|
||||
json::value copilotparams;
|
||||
copilotparams["stage_name"] = "activities/act3d0/level_act3d0_01"; // OF-1
|
||||
copilotparams["stage_name"] = stage_name;
|
||||
|
||||
std::string copilot_path = utils::path_to_utf8_string(ResDir.get()) + "\\resource\\credit_fight_copilot.json";
|
||||
copilotparams["filename"] = copilot_path;
|
||||
copilotparams["formation"] = true;
|
||||
copilotparams["support_unit_name"] = "_RANDOM_";
|
||||
@@ -44,7 +43,7 @@ asst::CreditFightTask::CreditFightTask(AsstCallback callback, void* callback_arg
|
||||
// 战斗结束后
|
||||
fight_task_ptr->set_tasks({ "EndOfActionAndStop" }).set_ignore_error(false);
|
||||
|
||||
game_restart_plugin_ptr = fight_task_ptr->register_plugin<GameCrashRestartTaskPlugin>();
|
||||
auto game_restart_plugin_ptr = fight_task_ptr->register_plugin<GameCrashRestartTaskPlugin>();
|
||||
game_restart_plugin_ptr->set_retry_times(0);
|
||||
|
||||
m_subtasks.emplace_back(start_up_task_ptr);
|
||||
|
||||
@@ -71,9 +71,6 @@ namespace MeoAsstGui
|
||||
// 剿灭模式
|
||||
{ "Annihilation", new StageInfo { Display = Localization.GetString("Annihilation"), Value = "Annihilation" } },
|
||||
|
||||
// 别传 火蓝之心
|
||||
{ "OF-1", new StageInfo { Display = "OF-1", Value = "OF-1" } },
|
||||
|
||||
// 芯片本
|
||||
{ "PR-A-1", new StageInfo("PR-A-1", "PR-ATip", new[] { DayOfWeek.Monday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Sunday }, resourceCollection) },
|
||||
{ "PR-A-2", new StageInfo("PR-A-2", string.Empty, new[] { DayOfWeek.Monday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Sunday }, resourceCollection) },
|
||||
|
||||
Reference in New Issue
Block a user