From 598b60c184e54b1eba2386f23824f79ee6f9ded9 Mon Sep 17 00:00:00 2001 From: MistEO Date: Thu, 21 Jul 2022 00:12:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=82=89=E9=B8=BD?= =?UTF-8?q?=E4=B8=80=E7=9B=B4=E6=9C=9D=E5=8F=B3=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E9=A1=BA=E4=BE=BF=E4=BC=98=E5=8C=96=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/1253 link to https://github.com/MaaAssistantArknights/MaaAssistantArknights/pull/1215 --- .../RoguelikeBattleTaskPlugin.cpp | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp b/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp index becd93b9e8..1d8e2f4722 100644 --- a/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp +++ b/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp @@ -652,7 +652,7 @@ std::pair asst::RoguelikeBattleTaskPlugin::calc_best_direction home_loc = m_homes.at(m_cur_home_index); } - auto sgn = [](const int &x) -> int { + auto sgn = [](const int& x) -> int { if (x > 0) return 1; if (x < 0) return -1; return 0; @@ -716,29 +716,32 @@ std::pair asst::RoguelikeBattleTaskPlugin::calc_best_direction std::vector left_attack_range; std::vector up_attack_range; - down_attack_range.reserve(right_attack_range.size()); - left_attack_range.reserve(right_attack_range.size()); - up_attack_range.reserve(right_attack_range.size()); + const size_t size = right_attack_range.size(); + down_attack_range.reserve(size); + left_attack_range.reserve(size); + up_attack_range.reserve(size); for (const auto& [x, y] : right_attack_range) { down_attack_range.emplace_back(-y, x); left_attack_range.emplace_back(-x, -y); up_attack_range.emplace_back(y, -x); } - std::vector>> DirectionAttackRangeMap; - DirectionAttackRangeMap.reserve(4); - DirectionAttackRangeMap.emplace_back(Point::right(), std::move(right_attack_range)); - DirectionAttackRangeMap.emplace_back(Point::down(), std::move(down_attack_range)); - DirectionAttackRangeMap.emplace_back(Point::left(), std::move(left_attack_range)); - DirectionAttackRangeMap.emplace_back(Point::up(), std::move(up_attack_range)); + + // It's ordered. + const std::vector>> DirectionAttackRangeMap{ + { Point::up(), std::move(up_attack_range) }, + { Point::right(), std::move(right_attack_range) }, + { Point::left(), std::move(left_attack_range) }, + { Point::down(), std::move(down_attack_range) }, + }; int max_score = 0; Point opt_direction; // 计算每个方向上的得分 - for (const auto& [direction, dirction_attack_range] : DirectionAttackRangeMap) { + for (const auto& [direction, direction_attack_range] : DirectionAttackRangeMap) { int score = 0; - for (const Point& cur_attack : dirction_attack_range) { + for (const Point& cur_attack : direction_attack_range) { Point cur_point = loc; cur_point.x += cur_attack.x; cur_point.y += cur_attack.y;