From 2dc53ae56878cb8fd19960af2f985346bf4ab495 Mon Sep 17 00:00:00 2001 From: MistEO Date: Fri, 20 May 2022 23:53:52 +0800 Subject: [PATCH] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8A=84=E4=BD=9C=E4=B8=9A=EF=BC=8C=E8=AF=86=E5=88=AB=E5=B9=B2?= =?UTF-8?q?=E5=91=98=E4=B9=8B=E5=90=8E=E6=80=BB=E4=BC=9A=E5=86=8D=E5=8E=BB?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E5=85=B6=E4=B8=AD=E6=9F=90=E5=87=A0=E4=B8=AA?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/BattleImageAnalyzer.cpp | 12 ++++++++++++ src/MeoAssistant/BattleImageAnalyzer.h | 2 ++ src/MeoAssistant/BattleProcessTask.cpp | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/src/MeoAssistant/BattleImageAnalyzer.cpp b/src/MeoAssistant/BattleImageAnalyzer.cpp index 7b217477f0..adf7f1cb9d 100644 --- a/src/MeoAssistant/BattleImageAnalyzer.cpp +++ b/src/MeoAssistant/BattleImageAnalyzer.cpp @@ -17,6 +17,8 @@ bool asst::BattleImageAnalyzer::set_target(int target) bool asst::BattleImageAnalyzer::analyze() { + clear(); + // HP 作为 flag,无论如何都识别。表明当前画面是在战斗场景的 bool ret = hp_analyze(); @@ -84,6 +86,16 @@ int asst::BattleImageAnalyzer::get_kills() const noexcept return m_kills; } +void asst::BattleImageAnalyzer::clear() noexcept +{ + m_opers.clear(); + m_homes.clear(); + m_ready_skills.clear(); + m_hp = 0; + m_kills = 0; + m_cost = 0; +} + bool asst::BattleImageAnalyzer::opers_analyze() { LogTraceFunction; diff --git a/src/MeoAssistant/BattleImageAnalyzer.h b/src/MeoAssistant/BattleImageAnalyzer.h index a8274d13e5..dac9899491 100644 --- a/src/MeoAssistant/BattleImageAnalyzer.h +++ b/src/MeoAssistant/BattleImageAnalyzer.h @@ -35,6 +35,8 @@ namespace asst int get_hp() const noexcept; int get_kills() const noexcept; + void clear() noexcept; + protected: bool opers_analyze(); // 识别干员 BattleRole oper_role_analyze(const Rect& roi); diff --git a/src/MeoAssistant/BattleProcessTask.cpp b/src/MeoAssistant/BattleProcessTask.cpp index 69aab442e4..707899ac50 100644 --- a/src/MeoAssistant/BattleProcessTask.cpp +++ b/src/MeoAssistant/BattleProcessTask.cpp @@ -95,6 +95,13 @@ bool asst::BattleProcessTask::analyze_opers_preview() // 干员头像出来之后,还要过 2 秒左右才可以点击,这里要加个延时 sleep(Task.get("BattleWaitingToLoad")->rear_delay); + while (true) { + oper_analyzer.set_image(m_ctrler->get_image()); + if (oper_analyzer.analyze()) { + break; + } + std::this_thread::yield(); + } battle_pause(); auto opers = oper_analyzer.get_opers();