diff --git a/MeoAssistance/include/Assistance.h b/MeoAssistance/include/Assistance.h index ada1c0fd15..e3d264cf28 100644 --- a/MeoAssistance/include/Assistance.h +++ b/MeoAssistance/include/Assistance.h @@ -32,7 +32,11 @@ namespace asst { std::optional catch_emulator(const std::string& emulator_name = std::string()); - void start(const std::string& task); + // 开始刷理智 + void start_sanity(); + // 开始访问基建 + void start_visit(); + // 开始公开招募操作 void start_open_recruit(const std::vector& required_level, bool set_time = true); void stop(bool block = true); @@ -42,16 +46,8 @@ namespace asst { bool print_window(const std::string& filename, bool block = true); - // for debug - // 计算公开招募,需要当前处在选择公招Tag的页面 - // 参数: - // required_level:需要的等级,最优组合的最低等级,在required_level中,才会进行点击 - // set_time:是否自动设置时间(9小时) - // 返回值: - // std::vector< std::pair < Tags名vector,这个Tags组合可能出的干员组合 > > - std::optional, OperCombs>>> - open_recruit(const std::vector& required_level, bool set_time = true); - + // 开始匹配任务,调试用 + void start_match_task(const std::string& task); private: static void working_proc(Assistance* pThis); static void task_callback(TaskMsg msg, const json::value& detail, void* custom_arg); diff --git a/MeoAssistance/include/AsstCaller.h b/MeoAssistance/include/AsstCaller.h index 88884558aa..5b56ebc42a 100644 --- a/MeoAssistance/include/AsstCaller.h +++ b/MeoAssistance/include/AsstCaller.h @@ -16,7 +16,7 @@ MEOAPI_PORT void AsstStart(asst::Assistance* p_asst, const char* task); MEOAPI_PORT void AsstStop(asst::Assistance* p_asst); MEOAPI_PORT bool AsstSetParam(asst::Assistance* p_asst, const char* type, const char* param, const char* value); MEOAPI_PORT bool AsstGetParam(asst::Assistance* p_asst, const char* type, const char* param, char * buffer, int buffer_size); -MEOAPI_PORT bool AsstRunOpenRecruit(asst::Assistance* p_asst, const int required_level[], bool set_time, char * result_buffer, int bufsize, int& maybe_level); +MEOAPI_PORT bool AsstRunOpenRecruit(asst::Assistance* p_asst, const int required_level[], bool set_time); MEOAPI_PORT bool CheckVersionUpdate(char* tag_buffer, int tag_bufsize, char* html_url_buffer, int html_bufsize, char* body_buffer, int body_bufsize); diff --git a/MeoAssistance/include/Task.h b/MeoAssistance/include/Task.h index 5bc15bbe6e..f6f79a3a83 100644 --- a/MeoAssistance/include/Task.h +++ b/MeoAssistance/include/Task.h @@ -19,6 +19,12 @@ namespace json { class value; } +namespace std +{ + template + class unique_lock; + class mutex; +} namespace asst { @@ -43,6 +49,7 @@ namespace asst { TaskMatched, ReachedLimit, ReadyToSleep, + EndOfSleep, AppendMatchTask, TaskCompleted, MissionStop, @@ -63,6 +70,7 @@ namespace asst { {TaskMsg::TaskMatched, "TaskMatched"}, {TaskMsg::ReachedLimit, "ReachedLimit"}, {TaskMsg::ReadyToSleep, "ReadyToSleep"}, + {TaskMsg::EndOfSleep, "EndOfSleep"}, {TaskMsg::AppendMatchTask, "AppendMatchTask"}, {TaskMsg::TaskCompleted, "TaskCompleted"}, {TaskMsg::MissionStop, "MissionStop"}, @@ -99,6 +107,7 @@ namespace asst { virtual bool run() = 0; virtual void set_exit_flag(bool* exit_flag); + virtual void set_lock(std::unique_lock* lock_ptr) { m_lock_ptr = lock_ptr; } virtual int get_task_type() { return m_task_type; } virtual void set_retry_times(int times) { m_retry_times = times; } virtual int get_retry_times() { return m_retry_times; } @@ -115,6 +124,7 @@ namespace asst { TaskCallback m_callback; void* m_callback_arg = NULL; bool* m_exit_flag = NULL; + std::unique_lock* m_lock_ptr; int m_task_type = TaskType::TaskTypeInvalid; int m_retry_times = INT_MAX; }; diff --git a/MeoAssistance/src/Assistance.cpp b/MeoAssistance/src/Assistance.cpp index 74ea0fe0d8..a2c58fb61d 100644 --- a/MeoAssistance/src/Assistance.cpp +++ b/MeoAssistance/src/Assistance.cpp @@ -95,7 +95,17 @@ std::optional Assistance::catch_emulator(const std::string& emulato } } -void Assistance::start(const std::string& task) +void asst::Assistance::start_sanity() +{ + start_match_task("SanityBegin"); +} + +void asst::Assistance::start_visit() +{ + start_match_task("VisitBegin"); +} + +void Assistance::start_match_task(const std::string& task) { DebugTraceFunction; DebugTrace("Start |", task); @@ -218,175 +228,6 @@ bool asst::Assistance::find_text_and_click(const std::string& text, bool block) return m_control_ptr->click(result.value()); } -std::optional, OperCombs>>> -asst::Assistance::open_recruit(const std::vector& required_level, bool set_time) -{ - DebugTraceFunction; - - std::unique_lock lock(m_mutex); - - const cv::Mat& image = get_format_image(); - set_control_scale(image.cols, image.rows); - lock.unlock(); // 后面的计算耗时太长,先解锁 - - if (set_time) { - start("RecruitTime"); - } - - std::vector