diff --git a/src/MaaCore/Task/BattleHelper.cpp b/src/MaaCore/Task/BattleHelper.cpp index 2348635f41..ea35e55547 100644 --- a/src/MaaCore/Task/BattleHelper.cpp +++ b/src/MaaCore/Task/BattleHelper.cpp @@ -86,14 +86,13 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) LogTraceFunction; if (init) { - wait_until_start(); + wait_until_start(false); } cv::Mat image = init || reusable.empty() ? m_inst_helper.ctrler()->get_image() : reusable; if (init) { auto draw_future = std::async(std::launch::async, [&]() { save_map(image); }); - update_kills(image); } BattleImageAnalyzer oper_analyzer(image); @@ -219,11 +218,16 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) AvatarCache.set_avatar(name, oper.role, oper.avatar); } } - pause(); if (!unknown_opers.empty()) { cancel_oper_selection(); } + + image = m_inst_helper.ctrler()->get_image(); + } + + if (init) { + update_kills(image); } check_in_battle(image); @@ -388,12 +392,12 @@ bool asst::BattleHelper::check_in_battle(const cv::Mat& reusable, bool weak) { cv::Mat image = reusable.empty() ? m_inst_helper.ctrler()->get_image() : reusable; if (weak) { - m_in_battle = check_pause_button(image); - } - else { BattleImageAnalyzer analyzer(image); m_in_battle = analyzer.analyze(); } + else { + m_in_battle = check_pause_button(image); + } return m_in_battle; } @@ -596,7 +600,7 @@ bool asst::BattleHelper::move_camera(const std::pair& delta) // 还没转场的时候 if (m_kills != 0) { - wait_until_end(true); + wait_until_end(false); } m_kills = 0; diff --git a/src/MaaCore/Task/BattleHelper.h b/src/MaaCore/Task/BattleHelper.h index 9e823e1a75..9c85e66b1c 100644 --- a/src/MaaCore/Task/BattleHelper.h +++ b/src/MaaCore/Task/BattleHelper.h @@ -46,8 +46,8 @@ namespace asst bool use_skill(const Point& loc, bool keep_waiting = true); bool check_pause_button(const cv::Mat& reusable = cv::Mat()); bool check_in_battle(const cv::Mat& reusable = cv::Mat(), bool weak = false); - virtual bool wait_until_start(bool weak = false); - bool wait_until_end(bool weak = false); + virtual bool wait_until_start(bool weak = true); + bool wait_until_end(bool weak = true); bool use_all_ready_skill(const cv::Mat& reusable = cv::Mat()); bool check_and_use_skill(const std::string& name, const cv::Mat& reusable = cv::Mat()); bool check_and_use_skill(const Point& loc, const cv::Mat& reusable = cv::Mat()); diff --git a/src/MaaCore/Task/SSS/SSSBattleProcessTask.h b/src/MaaCore/Task/SSS/SSSBattleProcessTask.h index dda26788b4..42b8bf1173 100644 --- a/src/MaaCore/Task/SSS/SSSBattleProcessTask.h +++ b/src/MaaCore/Task/SSS/SSSBattleProcessTask.h @@ -17,7 +17,7 @@ namespace asst virtual battle::copilot::CombatData& get_combat_data() override { return m_sss_combat_data; } virtual const std::string oper_name_ocr_task_name() const noexcept override { return "SSSBattleOperName"; } virtual bool need_to_wait_until_end() const noexcept override { return true; } - virtual bool wait_until_start(bool weak = false) override; + virtual bool wait_until_start(bool weak = true) override; bool check_if_start_over(const battle::copilot::Action& action); bool draw_card(bool with_retry = true);