diff --git a/resource/tasks.json b/resource/tasks.json index 933a10e71a..f179ff183b 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -821,6 +821,7 @@ 255 ], "next": [ + "GameStart", "StartToWakeUp", "StartUpConnectingFlag", "StartLoginBServer", diff --git a/src/MeoAssistant/AsstTypes.h b/src/MeoAssistant/AsstTypes.h index 86f0d37f52..f8b5c452fa 100644 --- a/src/MeoAssistant/AsstTypes.h +++ b/src/MeoAssistant/AsstTypes.h @@ -161,7 +161,7 @@ namespace asst enum class ServerType { - Official, + Official = 0, Bilibili }; } diff --git a/src/MeoAssistant/StartGameTask.cpp b/src/MeoAssistant/StartGameTask.cpp index 9295881f6f..5b4dfca554 100644 --- a/src/MeoAssistant/StartGameTask.cpp +++ b/src/MeoAssistant/StartGameTask.cpp @@ -1 +1,17 @@ #include "StartGameTask.h" + +#include "Controller.h" + +using namespace asst; + +bool StartGameTask::_run() +{ + m_ctrler->start_game(m_server_type); + return true; +} + +StartGameTask& StartGameTask::set_param(ServerType server_type) noexcept +{ + m_server_type = server_type; + return *this; +} diff --git a/src/MeoAssistant/StartGameTask.h b/src/MeoAssistant/StartGameTask.h index f7cc928661..79751d9b63 100644 --- a/src/MeoAssistant/StartGameTask.h +++ b/src/MeoAssistant/StartGameTask.h @@ -1,7 +1,21 @@ #pragma once -class StartGameTask +#include "AbstractTask.h" +#include "AsstTypes.h" + +namespace asst { -public: - -}; + class StartGameTask : public AbstractTask + { + public: + using AbstractTask::AbstractTask; + ~StartGameTask() override = default; + + StartGameTask& set_param(ServerType server_type = ServerType::Official) noexcept; + + protected: + bool _run() override; + + ServerType m_server_type = ServerType::Official; + }; +} diff --git a/src/MeoAssistant/StartUpTask.cpp b/src/MeoAssistant/StartUpTask.cpp index b1229003c0..7580c2559c 100644 --- a/src/MeoAssistant/StartUpTask.cpp +++ b/src/MeoAssistant/StartUpTask.cpp @@ -4,17 +4,21 @@ asst::StartUpTask::StartUpTask(AsstCallback callback, void* callback_arg) : PackageTask(callback, callback_arg, TaskType), - m_start_up_task_ptr(std::make_shared(m_callback, m_callback_arg, TaskType)) + m_start_game_task_ptr(std::make_shared(m_callback, m_callback_arg, TaskType)), + m_start_up_task_ptr(std::make_shared(m_callback, m_callback_arg, TaskType)) { - m_start_up_task_ptr->set_tasks({ "StartUp" }) - .set_times_limit("ReturnToTerminal", 0) - .set_times_limit("Terminal", 0); + m_start_up_task_ptr->set_tasks({"StartUp"}) + .set_times_limit("ReturnToTerminal", 0) + .set_times_limit("Terminal", 0); + m_subtasks.emplace_back(m_start_game_task_ptr); m_subtasks.emplace_back(m_start_up_task_ptr); } bool asst::StartUpTask::set_params(const json::value& params) { - if (!params.contains("server_type")) { - return false; + if (params.contains("server_type")) + { + m_start_game_task_ptr->set_param(static_cast(params.get("server_type", 0))); } + return true; } diff --git a/src/MeoAssistant/StartUpTask.h b/src/MeoAssistant/StartUpTask.h index 7119161c71..69be38ce29 100644 --- a/src/MeoAssistant/StartUpTask.h +++ b/src/MeoAssistant/StartUpTask.h @@ -1,5 +1,6 @@ #pragma once #include "PackageTask.h" +#include "StartGameTask.h" namespace asst { @@ -15,7 +16,7 @@ namespace asst static constexpr const char* TaskType = "StartUp"; private: - + std::shared_ptr m_start_game_task_ptr = nullptr; std::shared_ptr m_start_up_task_ptr = nullptr; }; }