From 86c052aa82e00af1cb2c7d9f78082cc271af2f5e Mon Sep 17 00:00:00 2001 From: Hydrogina <46482682+Hydrogina@users.noreply.github.com> Date: Thu, 24 Nov 2022 19:01:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=80=9F=E5=8A=A9=E6=88=98=E4=BD=9C?= =?UTF-8?q?=E6=88=98=E4=BB=8Ejson=E4=B8=AD=E8=AF=BB=E5=8F=96=E5=85=B3?= =?UTF-8?q?=E5=8D=A1=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/credit_fight_copilot.json | 2 +- src/MeoAssistant/Resource/CopilotConfiger.cpp | 1 + src/MeoAssistant/Resource/CopilotConfiger.h | 3 ++ src/MeoAssistant/Task/CopilotTask.cpp | 9 ++++++ src/MeoAssistant/Task/CopilotTask.h | 2 ++ src/MeoAssistant/Task/CreditFightTask.cpp | 29 +++++++++---------- src/MeoAsstGui/Helper/StageManager.cs | 3 -- 7 files changed, 30 insertions(+), 19 deletions(-) diff --git a/resource/credit_fight_copilot.json b/resource/credit_fight_copilot.json index c9eb38cc26..14811d5a4f 100644 --- a/resource/credit_fight_copilot.json +++ b/resource/credit_fight_copilot.json @@ -42,6 +42,6 @@ } ], "opers": [], - "stage_name": "activities/act3d0/level_act3d0_01", + "stage_name": "OF-1", "difficulty": 3 } diff --git a/src/MeoAssistant/Resource/CopilotConfiger.cpp b/src/MeoAssistant/Resource/CopilotConfiger.cpp index 3dbbf4d9ba..410cc7e1e5 100644 --- a/src/MeoAssistant/Resource/CopilotConfiger.cpp +++ b/src/MeoAssistant/Resource/CopilotConfiger.cpp @@ -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()); diff --git a/src/MeoAssistant/Resource/CopilotConfiger.h b/src/MeoAssistant/Resource/CopilotConfiger.h index 05ea70b3fc..2ddfa4358d 100644 --- a/src/MeoAssistant/Resource/CopilotConfiger.h +++ b/src/MeoAssistant/Resource/CopilotConfiger.h @@ -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 m_battle_actions; + std::string m_stage_name = ""; }; inline static auto& Copilot = CopilotConfiger::get_instance(); diff --git a/src/MeoAssistant/Task/CopilotTask.cpp b/src/MeoAssistant/Task/CopilotTask.cpp index 38ce2a8709..d91b9b38e9 100644 --- a/src/MeoAssistant/Task/CopilotTask.cpp +++ b/src/MeoAssistant/Task/CopilotTask.cpp @@ -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(); +} diff --git a/src/MeoAssistant/Task/CopilotTask.h b/src/MeoAssistant/Task/CopilotTask.h index f1674504fa..bae36f588d 100644 --- a/src/MeoAssistant/Task/CopilotTask.h +++ b/src/MeoAssistant/Task/CopilotTask.h @@ -19,6 +19,8 @@ namespace asst static constexpr const char* TaskType = "Copilot"; + std::string get_stage_name(std::string filename); + private: std::shared_ptr m_formation_task_ptr = nullptr; std::shared_ptr m_battle_task_ptr = nullptr; diff --git a/src/MeoAssistant/Task/CreditFightTask.cpp b/src/MeoAssistant/Task/CreditFightTask.cpp index 30eeb4a5d7..65a494a46a 100644 --- a/src/MeoAssistant/Task/CreditFightTask.cpp +++ b/src/MeoAssistant/Task/CreditFightTask.cpp @@ -14,28 +14,27 @@ asst::CreditFightTask::CreditFightTask(AsstCallback callback, void* callback_arg) : PackageTask(std::move(callback), callback_arg, TaskType) { - std::shared_ptr start_up_task_ptr = - std::make_shared(m_callback, m_callback_arg, m_task_chain); - std::shared_ptr stage_navigation_task_ptr = - std::make_shared(m_callback, m_callback_arg, m_task_chain); - std::shared_ptr fight_task_ptr = - std::make_shared(m_callback, m_callback_arg, m_task_chain); - std::shared_ptr copilot_task_ptr = std::make_shared(m_callback, m_callback_arg); - std::shared_ptr game_restart_plugin_ptr = nullptr; - stage_navigation_task_ptr->set_enable(false).set_ignore_error(false); + auto start_up_task_ptr = std::make_shared(m_callback, m_callback_arg, m_task_chain); + auto stage_navigation_task_ptr = std::make_shared(m_callback, m_callback_arg, m_task_chain); + auto fight_task_ptr = std::make_shared(m_callback, m_callback_arg, m_task_chain); + auto copilot_task_ptr = std::make_shared(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(); + auto game_restart_plugin_ptr = fight_task_ptr->register_plugin(); game_restart_plugin_ptr->set_retry_times(0); m_subtasks.emplace_back(start_up_task_ptr); diff --git a/src/MeoAsstGui/Helper/StageManager.cs b/src/MeoAsstGui/Helper/StageManager.cs index 350b24e403..dadef82e50 100644 --- a/src/MeoAsstGui/Helper/StageManager.cs +++ b/src/MeoAsstGui/Helper/StageManager.cs @@ -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) },