From 6fbb3b6ccbaeac77164c4b2d27656a2041aa331e Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 11 Dec 2021 03:57:19 +0800 Subject: [PATCH] =?UTF-8?q?fix.=E4=BF=AE=E4=BF=AEbug=EF=BC=8C=E6=94=B9?= =?UTF-8?q?=E6=94=B9=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistance/Assistance.cpp | 3 +- src/MeoAssistance/AsstMsg.h | 2 ++ src/MeoAssistance/AutoRecruitTask.cpp | 1 + src/MeoAssistance/InfrastAbstractTask.cpp | 6 ++-- src/MeoAssistance/InfrastAbstractTask.h | 3 +- src/MeoAssistance/InfrastControlTask.cpp | 4 +-- src/MeoAssistance/InfrastOfficeTask.cpp | 3 +- src/MeoAssistance/InfrastPowerTask.cpp | 4 +-- src/MeoAssistance/InfrastProductionTask.cpp | 9 ++---- src/MeoAssistance/InfrastReceptionTask.cpp | 3 +- src/MeoAssistance/Version.h | 2 +- src/MeoAsstGui/Helper/AsstProxy.cs | 29 +++++++++++++------ .../ViewModels/TaskQueueViewModel.cs | 2 +- 13 files changed, 40 insertions(+), 31 deletions(-) diff --git a/src/MeoAssistance/Assistance.cpp b/src/MeoAssistance/Assistance.cpp index 1da54531fd..919af33877 100644 --- a/src/MeoAssistance/Assistance.cpp +++ b/src/MeoAssistance/Assistance.cpp @@ -478,8 +478,7 @@ void Assistance::working_proc() if (!ret) { task_callback(AsstMsg::TaskError, task_json, this); } - - if (m_tasks_queue.empty() || cur_taskchain != m_tasks_queue.front()->get_task_chain()) { + else if (m_tasks_queue.empty() || cur_taskchain != m_tasks_queue.front()->get_task_chain()) { task_callback(AsstMsg::TaskChainCompleted, task_json, this); } if (m_tasks_queue.empty()) { diff --git a/src/MeoAssistance/AsstMsg.h b/src/MeoAssistance/AsstMsg.h index 478975a3d2..ffcfbcd243 100644 --- a/src/MeoAssistance/AsstMsg.h +++ b/src/MeoAssistance/AsstMsg.h @@ -43,6 +43,7 @@ namespace asst RecruitSpecialTag, // 公招识别到了特殊的Tag RecruitResult, // 公开招募结果 RecruitSelected, // 选择了Tags + RecruitError, // 公招错误 /* Infrast Msg */ InfrastSkillsDetected = 4000, // 识别到了基建技能(当前页面) InfrastSkillsResult, // 识别到的所有可用技能 @@ -64,6 +65,7 @@ namespace asst { AsstMsg::ImageMatched, "ImageMatched" }, { AsstMsg::StageDrops, "StageDrops" }, { AsstMsg::TaskMatched, "TaskMatched" }, + { AsstMsg::RecruitError, "RecruitError" }, { AsstMsg::ReachedLimit, "ReachedLimit" }, { AsstMsg::ReadyToSleep, "ReadyToSleep" }, { AsstMsg::EndOfSleep, "EndOfSleep" }, diff --git a/src/MeoAssistance/AutoRecruitTask.cpp b/src/MeoAssistance/AutoRecruitTask.cpp index 17a1747b00..5a8abd4a72 100644 --- a/src/MeoAssistance/AutoRecruitTask.cpp +++ b/src/MeoAssistance/AutoRecruitTask.cpp @@ -63,6 +63,7 @@ bool asst::AutoRecruitTask::_run() // 识别错误,放弃这个公招位,直接返回 if (!recurit_task.run()) { + m_callback(AsstMsg::RecruitError, json::value(), m_callback_arg); click_return_button(); break; } diff --git a/src/MeoAssistance/InfrastAbstractTask.cpp b/src/MeoAssistance/InfrastAbstractTask.cpp index 52721bd52d..d4d92940ca 100644 --- a/src/MeoAssistance/InfrastAbstractTask.cpp +++ b/src/MeoAssistance/InfrastAbstractTask.cpp @@ -207,16 +207,16 @@ void asst::InfrastAbstractTask::swipe_of_operlist(bool reverse) await_swipe(); } -void asst::InfrastAbstractTask::swipe_to_the_left_of_operlist() +void asst::InfrastAbstractTask::swipe_to_the_left_of_operlist(int loop_times) { LogTraceFunction; static Rect begin_rect = task.get("InfrastOperListSwipeToTheLeftBegin")->specific_rect; static Rect end_rect = task.get("InfrastOperListSwipeToTheLeftEnd")->specific_rect; static int duration = task.get("InfrastOperListSwipeToTheLeftBegin")->pre_delay; static int extra_delay = task.get("InfrastOperListSwipeToTheLeftBegin")->rear_delay; - static int loop_times = task.get("InfrastOperListSwipeToTheLeftBegin")->max_times; + static int cfg_loop_times = task.get("InfrastOperListSwipeToTheLeftBegin")->max_times; - for (int i = 0; i != loop_times; ++i) { + for (int i = 0; i != cfg_loop_times * loop_times; ++i) { if (need_exit()) { return; } diff --git a/src/MeoAssistance/InfrastAbstractTask.h b/src/MeoAssistance/InfrastAbstractTask.h index 5ce6114024..1070399681 100644 --- a/src/MeoAssistance/InfrastAbstractTask.h +++ b/src/MeoAssistance/InfrastAbstractTask.h @@ -15,13 +15,14 @@ namespace asst virtual void set_work_mode(infrast::WorkMode work_mode) noexcept; virtual void set_mood_threshold(double mood_thres) noexcept; + constexpr static int OperSelectRetryTimes = 3; protected: virtual bool on_run_fails() override; virtual bool enter_facility(const std::string& facility, int index = 0); virtual bool enter_oper_list_page(); // 从刚点进基建的界面,到干员列表页 - virtual void swipe_to_the_left_of_operlist(); // 滑动到干员列表的最左侧 + virtual void swipe_to_the_left_of_operlist(int loop_times = 1); // 滑动到干员列表的最左侧 virtual void swipe_to_the_left_of_main_ui(); // 滑动基建的主界面到最左侧 virtual void swipe_to_the_right_of_main_ui(); // 滑动基建的主界面到最右侧 virtual void swipe_of_operlist(bool reverse = false); diff --git a/src/MeoAssistance/InfrastControlTask.cpp b/src/MeoAssistance/InfrastControlTask.cpp index 91a011668e..b05210eacf 100644 --- a/src/MeoAssistance/InfrastControlTask.cpp +++ b/src/MeoAssistance/InfrastControlTask.cpp @@ -23,8 +23,8 @@ bool asst::InfrastControlTask::_run() if (!enter_oper_list_page()) { return false; } - constexpr int retry_times = 3; - for (int i = 0; i <= retry_times; ++i) { + + for (int i = 0; i <= OperSelectRetryTimes; ++i) { if (need_exit()) { return false; } diff --git a/src/MeoAssistance/InfrastOfficeTask.cpp b/src/MeoAssistance/InfrastOfficeTask.cpp index 41b1cf3e72..ea4dde3a10 100644 --- a/src/MeoAssistance/InfrastOfficeTask.cpp +++ b/src/MeoAssistance/InfrastOfficeTask.cpp @@ -22,8 +22,7 @@ bool asst::InfrastOfficeTask::_run() enter_facility(FacilityName, 0); click_bottomleft_tab(); - constexpr int retry_times = 3; - for (int i = 0; i <= retry_times; ++i) { + for (int i = 0; i <= OperSelectRetryTimes; ++i) { if (need_exit()) { return false; } diff --git a/src/MeoAssistance/InfrastPowerTask.cpp b/src/MeoAssistance/InfrastPowerTask.cpp index 160924cfd3..6196ee48d6 100644 --- a/src/MeoAssistance/InfrastPowerTask.cpp +++ b/src/MeoAssistance/InfrastPowerTask.cpp @@ -31,8 +31,8 @@ bool asst::InfrastPowerTask::_run() if (!enter_oper_list_page()) { return false; } - constexpr int retry_times = 3; - for (int i = 0; i <= retry_times; ++i) { + + for (int i = 0; i <= OperSelectRetryTimes; ++i) { swipe_to_the_left_of_operlist(); if (m_all_available_opers.empty()) { diff --git a/src/MeoAssistance/InfrastProductionTask.cpp b/src/MeoAssistance/InfrastProductionTask.cpp index 500779ff9a..1fbda8549b 100644 --- a/src/MeoAssistance/InfrastProductionTask.cpp +++ b/src/MeoAssistance/InfrastProductionTask.cpp @@ -110,21 +110,18 @@ bool asst::InfrastProductionTask::shift_facility_list() Ctrler.click(add_button); sleep(add_task_ptr->rear_delay); - constexpr int retry_times = 3; - for (int i = 0; i <= retry_times; ++i) { + for (int i = 0; i <= OperSelectRetryTimes; ++i) { if (need_exit()) { return false; } click_clear_button(); - swipe_to_the_left_of_operlist(); - swipe_to_the_left_of_operlist(); + swipe_to_the_left_of_operlist(2); if (m_all_available_opers.empty()) { if (!opers_detect_with_swipe()) { return false; } - swipe_to_the_left_of_operlist(); - swipe_to_the_left_of_operlist(); + swipe_to_the_left_of_operlist(2); } else { opers_detect(); diff --git a/src/MeoAssistance/InfrastReceptionTask.cpp b/src/MeoAssistance/InfrastReceptionTask.cpp index d6e3a3046e..eae2c849a9 100644 --- a/src/MeoAssistance/InfrastReceptionTask.cpp +++ b/src/MeoAssistance/InfrastReceptionTask.cpp @@ -179,8 +179,7 @@ bool asst::InfrastReceptionTask::shift() } sleep(raw_task_ptr->rear_delay); - constexpr int retry_times = 3; - for (int i = 0; i <= retry_times; ++i) { + for (int i = 0; i <= OperSelectRetryTimes; ++i) { if (need_exit()) { return false; } diff --git a/src/MeoAssistance/Version.h b/src/MeoAssistance/Version.h index 0e4a941277..9fb68953b1 100644 --- a/src/MeoAssistance/Version.h +++ b/src/MeoAssistance/Version.h @@ -2,5 +2,5 @@ namespace asst { - constexpr static const char* Version = "v2.3.2"; + constexpr static const char* Version = "v2.3.3"; } diff --git a/src/MeoAsstGui/Helper/AsstProxy.cs b/src/MeoAsstGui/Helper/AsstProxy.cs index f3885252ab..4440af7100 100644 --- a/src/MeoAsstGui/Helper/AsstProxy.cs +++ b/src/MeoAsstGui/Helper/AsstProxy.cs @@ -103,19 +103,23 @@ namespace MeoAsstGui string taskName = detail["name"].ToString(); if (taskName == "StartButton2") { - tvm.AddLog("已开始行动 " + (int)detail["exec_times"] + " 次"); + tvm.AddLog("已开始行动 " + (int)detail["exec_times"] + " 次", "darkcyan"); } else if (taskName == "MedicineConfirm") { - tvm.AddLog("已吃药 " + (int)detail["exec_times"] + " 个"); + tvm.AddLog("已吃药 " + (int)detail["exec_times"] + " 个", "darkcyan"); } else if (taskName == "StoneConfirm") { - tvm.AddLog("已碎石 " + (int)detail["exec_times"] + " 颗"); + tvm.AddLog("已碎石 " + (int)detail["exec_times"] + " 颗", "darkcyan"); } - else if (taskName == "RecruitRefresh") + else if (taskName == "RecruitRefreshConfirm") { - tvm.AddLog("已刷新标签"); + tvm.AddLog("已刷新标签", "darkcyan"); + } + else if (taskName == "RecruitConfirm") + { + tvm.AddLog("已确认招募", "darkcyan"); } } break; @@ -168,7 +172,8 @@ namespace MeoAsstGui case AsstMsg.OcrResultError: case AsstMsg.RecruitSpecialTag: case AsstMsg.RecruitResult: - case AsstMsg.RecruitSelected: + case AsstMsg.RecruitSelected: + case AsstMsg.RecruitError: recruit_proc_msg(msg, detail); break; /* Infrast Msg */ @@ -180,7 +185,8 @@ namespace MeoAsstGui infrast_proc_msg(msg, detail); break; - case AsstMsg.TaskError: + case AsstMsg.TaskError: + tvm.AddLog("任务出错:" + detail["task_chain"].ToString(), "darkred"); break; case AsstMsg.InitFaild: @@ -274,11 +280,11 @@ namespace MeoAsstGui if (combs_level >= 5) { new ToastContentBuilder().AddText("公招出 " + combs_level + " 星了哦!").Show(); ; - tvm.AddLog(combs_level + " 星Tags", "OrangeRed"); + tvm.AddLog(combs_level + " 星Tags", "darkorange", "Bold"); } else { - tvm.AddLog(combs_level + " 星Tags"); + tvm.AddLog(combs_level + " 星Tags", "darkcyan"); } break; @@ -293,6 +299,10 @@ namespace MeoAsstGui selected_log = selected_log.EndsWith("\n") ? selected_log.TrimEnd('\n') : "无"; tvm.AddLog("选择Tags:\n" + selected_log); + break; + + case AsstMsg.RecruitError: + tvm.AddLog("公招识别错误,已返回", "darkred"); break; } } @@ -401,6 +411,7 @@ namespace MeoAsstGui RecruitSpecialTag, // 公招识别到了特殊的Tag RecruitResult, // 公开招募结果 RecruitSelected, // 选择了Tags + RecruitError, // 公招错误 /* Infrast Msg */ InfrastSkillsDetected = 4000, // 识别到了基建技能(当前页面) InfrastSkillsResult, // 识别到的所有可用技能 diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index cefca03912..a0bd4c11a5 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -74,7 +74,7 @@ namespace MeoAsstGui bool catchd = await task; if (!catchd) { - AddLog("捕获模拟器窗口失败,若是第一次运行,请尝试使用管理员权限", "Red"); + AddLog("捕获模拟器窗口失败,若是第一次运行,请尝试使用管理员权限", "darkred"); return; }