From 1be6265bbbf20eaf5a1bddb73c9d4c45e984ef6d Mon Sep 17 00:00:00 2001 From: status102 <102887808+status102@users.noreply.github.com> Date: Sat, 13 Jul 2024 22:53:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=87=AA=E5=8A=A8=E6=88=98=E6=96=97?= =?UTF-8?q?=E5=BC=80=E5=A7=8B=E6=97=B6=E7=A7=BB=E9=99=A4=E5=8F=AC=E5=94=A4?= =?UTF-8?q?=E7=89=A9=E7=B1=BB=E5=A4=B4=E5=83=8F=E7=BC=93=E5=AD=98=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E9=81=BF=E5=85=8D=E8=B7=A8=E5=B1=80=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E7=9B=B8=E4=BC=BC=E6=8A=80=E8=83=BD=E7=9A=84?= =?UTF-8?q?=E5=8F=AC=E5=94=A4=E7=89=A9=20(#9649)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 自动战斗开始时移除召唤物类头像缓存,以避免跨局错误识别相似技能的召唤物 * chore: description --- src/MaaCore/Config/Miscellaneous/AvatarCacheManager.cpp | 5 +++++ src/MaaCore/Config/Miscellaneous/AvatarCacheManager.h | 1 + src/MaaCore/Task/BattleHelper.cpp | 7 ++++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/MaaCore/Config/Miscellaneous/AvatarCacheManager.cpp b/src/MaaCore/Config/Miscellaneous/AvatarCacheManager.cpp index e152872b46..593a822a5b 100644 --- a/src/MaaCore/Config/Miscellaneous/AvatarCacheManager.cpp +++ b/src/MaaCore/Config/Miscellaneous/AvatarCacheManager.cpp @@ -44,6 +44,11 @@ const asst::AvatarCacheManager::AvatarsMap& asst::AvatarCacheManager::get_avatar return m_avatars[role]; } +void asst::AvatarCacheManager::remove_avatars(battle::Role role) +{ + m_avatars.erase(role); +} + void asst::AvatarCacheManager::set_avatar(const std::string& name, battle::Role role, const cv::Mat& avatar, bool overlay) { diff --git a/src/MaaCore/Config/Miscellaneous/AvatarCacheManager.h b/src/MaaCore/Config/Miscellaneous/AvatarCacheManager.h index 738c569610..e983665aa1 100644 --- a/src/MaaCore/Config/Miscellaneous/AvatarCacheManager.h +++ b/src/MaaCore/Config/Miscellaneous/AvatarCacheManager.h @@ -25,6 +25,7 @@ namespace asst virtual bool load(const std::filesystem::path& path) override; const AvatarsMap& get_avatars(battle::Role role); + void remove_avatars(battle::Role role); void set_avatar(const std::string& name, battle::Role role, const cv::Mat& avatar, bool overlay = true); private: diff --git a/src/MaaCore/Task/BattleHelper.cpp b/src/MaaCore/Task/BattleHelper.cpp index 97c59b9c44..72ca5afc67 100644 --- a/src/MaaCore/Task/BattleHelper.cpp +++ b/src/MaaCore/Task/BattleHelper.cpp @@ -99,6 +99,7 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) LogTraceFunction; if (init) { + AvatarCache.remove_avatars(Role::Drone);// 移除小龙等不同技能很像的召唤物,防止错误识别 wait_until_start(false); } @@ -153,7 +154,7 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) BestMatcher avatar_analyzer(oper.avatar); if (oper.cooling) { Log.trace("start matching cooling", oper.index); - static const double cooling_threshold = + static const auto cooling_threshold = Task.get("BattleAvatarCoolingData")->templ_thresholds.front(); static const auto cooling_mask_range = Task.get("BattleAvatarCoolingData")->mask_range; @@ -162,9 +163,9 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) .set_mask_range(cooling_mask_range.first, cooling_mask_range.second, true, true); } else { - static const double threshold = + static const auto threshold = Task.get("BattleAvatarData")->templ_thresholds.front(); - static const double drone_threshold = + static const auto drone_threshold = Task.get("BattleDroneAvatarData")->templ_thresholds.front(); avatar_analyzer.set_threshold(oper.role == Role::Drone ? drone_threshold : threshold); }