From 199782dbfa7759a06e968e02bf463f5db26fad2e Mon Sep 17 00:00:00 2001 From: youqii Date: Tue, 24 Oct 2023 15:02:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=87=AA=E5=8A=A8=E7=BC=96=E9=98=9F?= =?UTF-8?q?=E6=97=B6=E4=BD=BF=E7=94=A8=E6=8C=87=E5=AE=9A=E7=BC=96=E9=98=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 53 +++++++++++++++++- resource/template/BattleSelectedFormation.png | Bin 0 -> 3704 bytes .../Miscellaneous/BattleFormationTask.cpp | 28 +++++++++ .../Task/Miscellaneous/BattleFormationTask.h | 18 ++++++ 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 resource/template/BattleSelectedFormation.png diff --git a/resource/tasks.json b/resource/tasks.json index 960c7e5a17..2f7fae73c6 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -7216,6 +7216,57 @@ ] ] }, + "BattleSelectedFormation": { + "action": "DoNothing", + "roi": [ + 50, + 600, + 1180, + 120 + ], + "cache": false, + "maskRange": [ + 1, + 255 + ] + }, + "BattleSelectFormation0": { + "algorithm": "JustReturn", + "action": "ClickRect", + "specificRect": [ + 180, + 670, + 115, + 40 + ] + }, + "BattleSelectFormation1": { + "baseTask": "BattleSelectFormation0", + "specificRect": [ + 460, + 670, + 100, + 40 + ] + }, + "BattleSelectFormation2": { + "baseTask": "BattleSelectFormation0", + "specificRect": [ + 720, + 670, + 120, + 40 + ] + }, + "BattleSelectFormation3": { + "baseTask": "BattleSelectFormation0", + "specificRect": [ + 995, + 675, + 110, + 40 + ] + }, "BattleSupportUnitFormation": { "action": "ClickSelf", "roi": [ @@ -15519,4 +15570,4 @@ "Stop" ] } -} \ No newline at end of file +} diff --git a/resource/template/BattleSelectedFormation.png b/resource/template/BattleSelectedFormation.png new file mode 100644 index 0000000000000000000000000000000000000000..bd221c8b36b5a7c052a6960c384bb5de43e29ab2 GIT binary patch literal 3704 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 +} diff --git a/src/MaaCore/Task/Miscellaneous/BattleFormationTask.h b/src/MaaCore/Task/Miscellaneous/BattleFormationTask.h index 39053954f6..3c41809cd6 100644 --- a/src/MaaCore/Task/Miscellaneous/BattleFormationTask.h +++ b/src/MaaCore/Task/Miscellaneous/BattleFormationTask.h @@ -12,6 +12,8 @@ namespace asst using AbstractTask::AbstractTask; virtual ~BattleFormationTask() override = default; + using formation_index = size_t; + enum class Filter { None, @@ -33,6 +35,8 @@ namespace asst void set_user_additional(std::vector> user_additional); // 是否追加低信赖干员 void set_add_trust(bool add_trust); + // 设置对指定编队自动编队 + void set_select_formation(formation_index index); enum class DataResource { @@ -57,6 +61,8 @@ namespace asst bool confirm_selection(); bool click_role_table(battle::Role role); bool parse_formation(); + bool select_formation(const cv::Mat& image); + bool select_formation(); bool select_random_support_unit(); std::vector analyzer_opers(); @@ -77,5 +83,17 @@ namespace asst DataResource m_data_resource = DataResource::Copilot; std::vector m_additional; std::string m_last_oper_name; + formation_index m_select_formation_index = 3; + const std::vector m_taskname_from_index = { "BattleSelectFormation0", "BattleSelectFormation1", + "BattleSelectFormation2", "BattleSelectFormation3" }; + + static formation_index formation_index_from_rect(const Rect& r) + { /* 0 | 1 | 2 | 3 */ + int cx = r.x + r.width / 2; + if (cx <= 370) return 0; + if (cx >= 370 && cx <= 640) return 1; + if (cx >= 645 && cx <= 915) return 2; + return 3; + } }; } // namespace asst