From 38e778dec2a3ea0f6b802502b8522df70148367e Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 1 May 2022 22:16:17 +0800 Subject: [PATCH 01/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D`=E6=84=9A=E4=BA=BA?= =?UTF-8?q?=E5=8F=B7`=E6=B4=BB=E5=8A=A8=E5=85=B3=E5=8D=A1=E4=B8=8D?= =?UTF-8?q?=E5=8B=BE=E9=80=89=E4=BB=A3=E7=90=86=E6=8C=87=E6=8C=A5=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/392 --- resource/tasks.json | 28 ++++++++++++++++++++++---- resource/template/UsePrts-StageSN.png | Bin 0 -> 11001 bytes 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 resource/template/UsePrts-StageSN.png diff --git a/resource/tasks.json b/resource/tasks.json index ad5ebe7c14..6c35c2afc0 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -350,6 +350,7 @@ "action": "doNothing", "next": [ "UsePrts", + "UsePrts-StageSN", "StartButton1", "PRTS", "PRTS2", @@ -439,6 +440,24 @@ "StartButton1" ] }, + "UsePrts-StageSN": { + "Doc": "三周年活动关卡“愚人号”代理指挥按钮", + "action": "ClickSelf", + "roi": [ + 1010, + 508, + 270, + 143 + ], + "cache": false, + "next": [ + "StartButton1" + ], + "maskRange": [ + 50, + 255 + ] + }, "StartButton1": { "algorithm": "OcrDetect", "text": [ @@ -446,10 +465,10 @@ ], "cache": false, "preDelay": 500, - "roi": [ - 1000, - 600, - 280, + "roi": [ + 1000, + 600, + 280, 120 ], "action": "clickSelf", @@ -872,6 +891,7 @@ "action": "clickSelf", "next": [ "UsePrts", + "UsePrts-StageSN", "StartButton1" ] }, diff --git a/resource/template/UsePrts-StageSN.png b/resource/template/UsePrts-StageSN.png new file mode 100644 index 0000000000000000000000000000000000000000..9fccad13dd382a5a8c6882908801a821e75c3818 GIT binary patch literal 11001 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 C80p#o literal 0 HcmV?d00001 From 0d0a78eee2dbd18c16f40b7a667ad61c175703b8 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 1 May 2022 22:36:03 +0800 Subject: [PATCH 02/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=85=B3=E5=8D=A1=E2=80=9C=E6=84=9A=E4=BA=BA=E5=8F=B7=E2=80=9D?= =?UTF-8?q?=E2=80=9C=E5=BC=80=E5=A7=8B=E8=A1=8C=E5=8A=A8=E2=80=9D=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E6=B2=A1=E6=9C=89=E8=BF=94=E5=9B=9E=E6=8C=89=E9=92=AE?= =?UTF-8?q?=EF=BC=8C=E5=AF=BC=E8=87=B4=E5=90=8E=E7=BB=AD=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8D=A1=E4=BD=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 21 +++++++++++++++++++++ resource/template/StageSNReturnFlag.png | Bin 0 -> 4063 bytes 2 files changed, 21 insertions(+) create mode 100644 resource/template/StageSNReturnFlag.png diff --git a/resource/tasks.json b/resource/tasks.json index 6c35c2afc0..c770a690dd 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -471,6 +471,10 @@ 280, 120 ], + "exceededNext": [ + "StageSNReturnFlag", + "Stop" + ], "action": "clickSelf", "next": [ "StartButton2", @@ -479,6 +483,23 @@ "NoStone" ] }, + "StageSNReturnFlag": { + "Doc": "三周年活动关卡“愚人号”的“开始行动”界面,没有返回按钮,点一下返回后面任务出错", + "action": "ClickRect", + "cache": false, + "roi": [ + 809, + 0, + 146, + 146 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ] + }, "StartButton2": { "action": "clickSelf", "rearDelay": 40000, diff --git a/resource/template/StageSNReturnFlag.png b/resource/template/StageSNReturnFlag.png new file mode 100644 index 0000000000000000000000000000000000000000..79f425ab4b18e57d72f5323130fc860a808e032e GIT binary patch literal 4063 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 Date: Sun, 1 May 2022 22:53:14 +0800 Subject: [PATCH 03/70] =?UTF-8?q?feat.=E6=96=B0=E5=A2=9E=E5=AF=B9=E6=96=B0?= =?UTF-8?q?=E5=85=B3=E5=8D=A1`LS-6`=E3=80=81`CE-6`=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 94 ++++++++++++++++++ resource/template/StageCE6.png | Bin 0 -> 13819 bytes resource/template/StageLS6.png | Bin 0 -> 12438 bytes .../ViewModels/TaskQueueViewModel.cs | 2 + 4 files changed, 96 insertions(+) create mode 100644 resource/template/StageCE6.png create mode 100644 resource/template/StageLS6.png diff --git a/resource/tasks.json b/resource/tasks.json index c770a690dd..f9c2b1aef6 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -12,6 +12,53 @@ "OfflineConfirm" ] }, + "LS-6": { + "algorithm": "justreturn", + "action": "doNothing", + "next": [ + "StageResourceToLS6", + "StageLSToStageLS6", + "StageLS6" + ] + }, + "StageResourceToLS6": { + "template": "StageResource.png", + "roi": [ + 640, + 640, + 300, + 60 + ], + "action": "clickSelf", + "next": [ + "SwipeToStageLS6" + ] + }, + "SwipeToStageLS6": { + "algorithm": "justReturn", + "action": "swipeToTheLeft", + "next": [ + "StageLSToStageLS6" + ] + }, + "StageLSToStageLS6": { + "template": "StageLS.png", + "action": "clickSelf", + "cache": false, + "next": [ + "StageLS6" + ] + }, + "StageLS6": { + "action": "clickSelf", + "cache": false, + "roi": [ + 923, + 102, + 259, + 136 + ] + }, "LS-5": { "algorithm": "justreturn", "action": "doNothing", @@ -274,6 +321,53 @@ 220 ] }, + "CE-6": { + "algorithm": "justreturn", + "action": "doNothing", + "next": [ + "StageResourceToCE6", + "StageCE", + "StageCE6" + ] + }, + "StageResourceToCE6": { + "template": "StageResource.png", + "roi": [ + 640, + 640, + 300, + 60 + ], + "action": "clickSelf", + "next": [ + "SwipeToStageCE6" + ] + }, + "SwipeToStageCE6": { + "algorithm": "justReturn", + "action": "swipeToTheLeft", + "next": [ + "StageCEToCE6" + ] + }, + "StageCEToCE6": { + "template": "StageCE.png", + "action": "clickSelf", + "cache": false, + "next": [ + "StageCE6" + ] + }, + "StageCE6": { + "action": "clickSelf", + "cache": false, + "roi": [ + 936, + 101, + 243, + 143 + ] + }, "CE-5": { "algorithm": "justreturn", "action": "doNothing", diff --git a/resource/template/StageCE6.png b/resource/template/StageCE6.png new file mode 100644 index 0000000000000000000000000000000000000000..bfbfb20355aeeec8035c236baed946ee8d805a91 GIT binary patch literal 13819 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 O6lHl0xmp>Eu>S|egL9Ao literal 0 HcmV?d00001 diff --git a/resource/template/StageLS6.png b/resource/template/StageLS6.png new file mode 100644 index 0000000000000000000000000000000000000000..b4d112f7dc7c11bd843e96c4681f60aab12fb658 GIT binary patch literal 12438 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 literal 0 HcmV?d00001 diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index e4ce691f1f..1019161606 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -71,8 +71,10 @@ namespace MeoAsstGui new CombData { Display = "上次作战", Value = "LastBattle" }, new CombData { Display = "剿灭作战", Value = "Annihilation" }, new CombData { Display = "龙门币-5", Value = "CE-5" }, + new CombData { Display = "龙门币-6", Value = "CE-6" }, new CombData { Display = "红票-5", Value = "AP-5" }, new CombData { Display = "经验-5", Value = "LS-5" }, + new CombData { Display = "经验-6", Value = "LS-6" }, new CombData { Display = "技能-5", Value = "CA-5" } }; // “风雪过境” 活动关卡 From 5820056602fc4f5869b0654ddf19bedfc1c9a425 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 1 May 2022 23:01:45 +0800 Subject: [PATCH 04/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E4=B8=8A=E5=BC=80=E5=A7=8B=E5=92=8C=E5=81=9C=E6=AD=A2=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/370 --- src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 1019161606..3273852e16 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -125,6 +125,8 @@ namespace MeoAsstGui public async void LinkStart() { + Idle = false; + ClearLog(); SaveSettingValue(); @@ -140,6 +142,7 @@ namespace MeoAsstGui if (!catchd) { AddLog("连接模拟器失败\n请参考使用说明处理", "darkred"); + Idle = true; return; } @@ -199,9 +202,16 @@ namespace MeoAsstGui if (count == 0) { AddLog("未选择任务"); + Idle = true; return; } setPenguinId(); + + if (Idle) // 一般是点了“停止”按钮了 + { + return; + } + ret &= asstProxy.AsstStart(); if (ret) @@ -212,7 +222,6 @@ namespace MeoAsstGui { AddLog("出现未知错误"); } - Idle = !ret; } public void Stop() From 5ce70f0696ddca8bbb8bd4ae7b26ba9ad3464e7b Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 1 May 2022 23:08:24 +0800 Subject: [PATCH 05/70] =?UTF-8?q?chore.=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7v3.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MeoAssistant/Version.h b/src/MeoAssistant/Version.h index 96ca006c39..2e0b3fbe22 100644 --- a/src/MeoAssistant/Version.h +++ b/src/MeoAssistant/Version.h @@ -2,5 +2,5 @@ namespace asst { - constexpr static const char* Version = "v3.1.3"; + constexpr static const char* Version = "v3.2"; } From c2d9b643346b5ea6ffa91cf42a2327748ad9f610 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 1 May 2022 23:17:47 +0800 Subject: [PATCH 06/70] =?UTF-8?q?feat.=E6=96=B0=E5=A2=9E=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E6=8C=87=E6=8C=A5=E5=A4=B1=E8=AF=AF=E7=9A=84?= =?UTF-8?q?ui=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAsstGui/Helper/AsstProxy.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/MeoAsstGui/Helper/AsstProxy.cs b/src/MeoAsstGui/Helper/AsstProxy.cs index 992766ce56..5c95a481a6 100644 --- a/src/MeoAsstGui/Helper/AsstProxy.cs +++ b/src/MeoAsstGui/Helper/AsstProxy.cs @@ -274,6 +274,10 @@ namespace MeoAsstGui mainModel.AddLog("已碎石 " + execTimes + " 颗", "darkcyan"); break; + case "AbandonAction": + mainModel.AddLog("代理指挥失误", "darkred"); + break; + case "RecruitRefreshConfirm": mainModel.AddLog("已刷新标签", "darkcyan"); break; From 0118f64137bd5f4002ba00e83f8469b57893d4e3 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sun, 1 May 2022 23:23:47 +0800 Subject: [PATCH 07/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E6=89=93=E5=BC=80`?= =?UTF-8?q?=E6=84=9A=E4=BA=BA=E5=8F=B7`=E5=85=B3=E5=8D=A1=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=BC=80=E5=A7=8B=E5=94=A4=E9=86=92=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=87=BA=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=88=E8=BF=99?= =?UTF-8?q?=E4=B8=AA=E7=95=8C=E9=9D=A2=E6=B2=A1=E8=BF=94=E5=9B=9E=E6=8C=89?= =?UTF-8?q?=E9=92=AE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index f9c2b1aef6..9f099db05b 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -9,7 +9,8 @@ "CloseAnno", "TodaysSupplies", "ReturnToTerminal", - "OfflineConfirm" + "OfflineConfirm", + "StageSNFlag" ] }, "LS-6": { @@ -577,6 +578,17 @@ "NoStone" ] }, + "StageSNFlag": { + "template": "StageSNReturnFlag.png", + "cache": false, + "roi": [ + 809, + 0, + 146, + 146 + ], + "action": "DoNothing" + }, "StageSNReturnFlag": { "Doc": "三周年活动关卡“愚人号”的“开始行动”界面,没有返回按钮,点一下返回后面任务出错", "action": "ClickRect", From 636f0e89b64f8055aa55d147fcee4162a9cadb6a Mon Sep 17 00:00:00 2001 From: MistEO Date: Mon, 2 May 2022 00:05:31 +0800 Subject: [PATCH 08/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E6=84=9A=E4=BA=BA?= =?UTF-8?q?=E5=8F=B7=E5=85=B3=E5=8D=A1=E7=9A=84=E5=BC=80=E5=A7=8B=E4=BD=9C?= =?UTF-8?q?=E6=88=98=E7=9A=84=E4=B8=80=E4=BA=9B=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 17 +++++++++-------- resource/template/StageSNReturnFlag.png | Bin 4063 -> 7172 bytes src/MeoAssistant/Assistant.cpp | 2 ++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index 9f099db05b..924befcaf0 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -582,10 +582,10 @@ "template": "StageSNReturnFlag.png", "cache": false, "roi": [ - 809, - 0, - 146, - 146 + 284, + 509, + 242, + 141 ], "action": "DoNothing" }, @@ -594,10 +594,10 @@ "action": "ClickRect", "cache": false, "roi": [ - 809, - 0, - 146, - 146 + 284, + 509, + 242, + 141 ], "specificRect": [ 20, @@ -826,6 +826,7 @@ 400 ], "next": [ + "StageSNReturnFlag", "Stop" ] }, diff --git a/resource/template/StageSNReturnFlag.png b/resource/template/StageSNReturnFlag.png index 79f425ab4b18e57d72f5323130fc860a808e032e..8752133f506fd96644ac7eed162b670572f80b98 100644 GIT binary patch literal 7172 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 stage }) .set_times_limit("StartButton1", 0) .set_times_limit("StartButton2", 0) + .set_times_limit("StageSNReturnFlag", 0) .set_times_limit("MedicineConfirm", 0) .set_times_limit("StoneConfirm", 0); From b3ce662820d36fa4768dc3621783cf196c393fa7 Mon Sep 17 00:00:00 2001 From: MistEO Date: Mon, 2 May 2022 00:28:06 +0800 Subject: [PATCH 09/70] =?UTF-8?q?fix.=E6=8E=89=E8=90=BD=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E5=8E=9F=E5=9B=BE=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/395 --- src/MeoAssistant/Controller.cpp | 10 ++++++++-- src/MeoAssistant/Controller.h | 2 +- src/MeoAssistant/StageDropsTaskPlugin.cpp | 2 +- src/MeoAssistant/Version.h | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/MeoAssistant/Controller.cpp b/src/MeoAssistant/Controller.cpp index b18de0ad56..04cf5b258c 100644 --- a/src/MeoAssistant/Controller.cpp +++ b/src/MeoAssistant/Controller.cpp @@ -476,7 +476,7 @@ std::optional> asst::Controller::call_command(const s read_num = read(m_pipe_out[PIPE_READ], m_pipe_buffer.get(), PipeBuffSize); }; } while (::waitpid(m_child, &exit_ret, WNOHANG) == 0 && !check_timeout()); -} + } else { // failed to create child process return std::nullopt; @@ -832,7 +832,7 @@ int asst::Controller::swipe_without_scale(const Rect & r1, const Rect & r2, int return swipe_without_scale(rand_point_in_rect(r1), rand_point_in_rect(r2), duration, block, extra_delay, extra_swipe); } -cv::Mat asst::Controller::get_image() +cv::Mat asst::Controller::get_image(bool raw) { // 有些模拟器adb偶尔会莫名其妙截图失败,多试几次 for (int i = 0; i != 20; ++i) { @@ -841,6 +841,12 @@ cv::Mat asst::Controller::get_image() } } + if (raw) { + std::shared_lock image_lock(m_image_mutex); + cv::Mat copy = m_cache_image.clone(); + return copy; + } + return get_resized_image(); } diff --git a/src/MeoAssistant/Controller.h b/src/MeoAssistant/Controller.h index 76d51d9929..365789b768 100644 --- a/src/MeoAssistant/Controller.h +++ b/src/MeoAssistant/Controller.h @@ -37,7 +37,7 @@ namespace asst static void set_dirname(std::string dirname) noexcept; bool try_capture(const EmulatorInfo& info, bool without_handle = false); - cv::Mat get_image(); + cv::Mat get_image(bool raw = false); std::vector get_image_encode(); // 点击和滑动都是异步执行,返回该任务的id diff --git a/src/MeoAssistant/StageDropsTaskPlugin.cpp b/src/MeoAssistant/StageDropsTaskPlugin.cpp index 2a847312bc..2f29e9aeb3 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.cpp +++ b/src/MeoAssistant/StageDropsTaskPlugin.cpp @@ -72,7 +72,7 @@ bool asst::StageDropsTaskPlugin::recognize_drops() if (need_exit()) { return false; } - cv::Mat image = Ctrler.get_image(); + cv::Mat image = Ctrler.get_image(true); std::string res = Resrc.penguin().recognize(image); Log.trace("Results of penguin recognition:\n", res); m_cur_drops = json::parse(res).value(); diff --git a/src/MeoAssistant/Version.h b/src/MeoAssistant/Version.h index 2e0b3fbe22..4613bb35a2 100644 --- a/src/MeoAssistant/Version.h +++ b/src/MeoAssistant/Version.h @@ -2,5 +2,5 @@ namespace asst { - constexpr static const char* Version = "v3.2"; + constexpr static const char* Version = "v3.2.1"; } From a7122efe4beba9b0f9053aaff9f61c9d86910e42 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Mon, 2 May 2022 03:32:33 +0800 Subject: [PATCH 10/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E6=89=93=E5=BC=80`?= =?UTF-8?q?=E6=84=9A=E4=BA=BA=E5=8F=B7`=E5=85=B3=E5=8D=A1=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=90=84=E7=A7=8D=E4=BB=BB=E5=8A=A1=E5=87=BA=E9=94=99?= =?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 https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/400 --- resource/tasks.json | 221 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 195 insertions(+), 26 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index 924befcaf0..46cab952ca 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -437,7 +437,8 @@ "next": [ "ReturnToTerminal", "Terminal", - "CloseAnno" + "CloseAnno", + "StageSNReturnToTerminal" ] }, "FightBegin": { @@ -504,7 +505,8 @@ "ReturnToTerminal", "Terminal", "ReturnToTerminalConfirm", - "CloseAnno" + "CloseAnno", + "StageSNReturnToTerminal" ] }, "ReturnToTerminalConfirm": { @@ -519,7 +521,8 @@ "next": [ "ReturnToTerminal", "Terminal", - "CloseAnno" + "CloseAnno", + "StageSNReturnToTerminal" ] }, "UsePrts": { @@ -604,6 +607,149 @@ 20, 135, 35 + ], + "next": [ + "Stop" + ] + }, + "StageSNReturnToAward": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToAward" + ] + }, + "StageSNReturnToFriends": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToFriends" + ] + }, + "StageSNReturnToInfrast": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToInfrast" + ] + }, + "StageSNReturnToMall": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToMall" + ] + }, + "StageSNReturnToRecruit": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToRecruit" + ] + }, + "StageSNReturnToRoguelike1": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToRoguelike1" + ] + }, + "StageSNReturnToTerminal": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToTerminal" ] }, "StartButton2": { @@ -1031,7 +1177,8 @@ "RecruitFlag", "Recruit", "ReturnToRecruit", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToRecruit" ] }, "ReturnToRecruit": { @@ -1047,7 +1194,8 @@ "Recruit", "ReturnToRecruit", "ReturnToRecruitConfirm", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToRecruit" ] }, "ReturnToRecruitConfirm": { @@ -1062,7 +1210,8 @@ "next": [ "Recruit", "ReturnToRecruit", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToRecruit" ] }, "ReturnToRecruitCloseAnno": { @@ -1078,7 +1227,8 @@ "next": [ "Recruit", "ReturnToRecruitCloseAnno", - "ReturnToRecruit" + "ReturnToRecruit", + "StageSNReturnToRecruit" ] }, "Recruit": { @@ -1249,7 +1399,8 @@ "ReceiveAward", "DailyTask", "WeeklyTask", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToAward" ] }, "Award": { @@ -1361,7 +1512,8 @@ "Award", "ReturnToAward", "ReturnToAwardConfirm", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToAward" ] }, "ReturnToAwardConfirm": { @@ -1376,7 +1528,8 @@ "next": [ "Award", "ReturnToAward", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToAward" ] }, "ReturnToAwardCloseAnno": { @@ -1392,7 +1545,8 @@ "next": [ "Award", "ReturnToRecruitCloseAnno", - "ReturnToAward" + "ReturnToAward", + "StageSNReturnToAward" ] }, "VisitBegin": { @@ -1405,7 +1559,8 @@ "VisitNext", "VisitNextBlack", "ReturnToFriends", - "ReturnToFriendsCloseAnno" + "ReturnToFriendsCloseAnno", + "StageSNReturnToFriends" ] }, "ReturnToFriends": { @@ -1421,7 +1576,8 @@ "Friends", "ReturnToFriends", "ReturnToFriendsConfirm", - "ReturnToFriendsCloseAnno" + "ReturnToFriendsCloseAnno", + "StageSNReturnToFriends" ] }, "ReturnToFriendsConfirm": { @@ -1436,7 +1592,8 @@ "next": [ "Friends", "ReturnToFriends", - "ReturnToFriendsCloseAnno" + "ReturnToFriendsCloseAnno", + "StageSNReturnToFriends" ] }, "ReturnToFriendsCloseAnno": { @@ -1452,7 +1609,8 @@ "next": [ "Friends", "ReturnToFriends", - "ReturnToFriendsCloseAnno" + "ReturnToFriendsCloseAnno", + "StageSNReturnToFriends" ] }, "Friends": { @@ -1554,7 +1712,8 @@ "next": [ "ReturnToMall", "Mall", - "ReturnToMallCloseAnno" + "ReturnToMallCloseAnno", + "StageSNReturnToMall" ] }, "ReturnToMall": { @@ -1570,7 +1729,8 @@ "Mall", "ReturnToMallConfirm", "ReturnToMall", - "ReturnToMallCloseAnno" + "ReturnToMallCloseAnno", + "StageSNReturnToMall" ] }, "ReturnToMallConfirm": { @@ -1585,7 +1745,8 @@ "next": [ "ReturnToMall", "Mall", - "ReturnToMallCloseAnno" + "ReturnToMallCloseAnno", + "StageSNReturnToMall" ] }, "ReturnToMallCloseAnno": { @@ -1601,7 +1762,8 @@ "next": [ "Mall", "ReturnToMallCloseAnno", - "ReturnToMall" + "ReturnToMall", + "StageSNReturnToMall" ] }, "Mall": { @@ -1984,7 +2146,8 @@ "InfrastEnteredFlag", "InfrastNotification", "ReturnToInfrast", - "ReturnToInfrastCloseAnno" + "ReturnToInfrastCloseAnno", + "StageSNReturnToInfrast" ] }, "ReturnToInfrast": { @@ -2002,7 +2165,8 @@ "InfrastEnteredFlag", "ReturnToInfrast", "ReturnToInfrastConfirm", - "ReturnToInfrastCloseAnno" + "ReturnToInfrastCloseAnno", + "StageSNReturnToInfrast" ] }, "ReturnToInfrastConfirm": { @@ -2019,7 +2183,8 @@ "InfrastNotification", "InfrastEnteredFlag", "ReturnToInfrast", - "ReturnToInfrastCloseAnno" + "ReturnToInfrastCloseAnno", + "StageSNReturnToInfrast" ] }, "ReturnToInfrastCloseAnno": { @@ -2037,7 +2202,8 @@ "InfrastNotification", "InfrastEnteredFlag", "ReturnToInfrast", - "ReturnToInfrastCloseAnno" + "ReturnToInfrastCloseAnno", + "StageSNReturnToInfrast" ] }, "Return": { @@ -3999,7 +4165,8 @@ "TerminalToRoguelike1", "ReturnToRoguelike1", "ReturnToRoguelike1Confirm", - "CloseAnnoToRoguelike1" + "CloseAnnoToRoguelike1", + "StageSNReturnToRoguelike1" ] }, "ReturnToRoguelike1Confirm": { @@ -4014,7 +4181,8 @@ "next": [ "TerminalToRoguelike1", "ReturnToRoguelike1", - "CloseAnnoToRoguelike1" + "CloseAnnoToRoguelike1", + "StageSNReturnToRoguelike1" ] }, "OfflineConfirmToRoguelike1": { @@ -4045,7 +4213,8 @@ "ReturnToRoguelike1", "ReturnToRoguelike1Confirm", "OfflineConfirmToRoguelike1", - "StartToWakeUpToRoguelike1" + "StartToWakeUpToRoguelike1", + "StageSNReturnToRoguelike1" ] }, "Roguelike1Continue": { From 3fa81f0d377ccc5d1b052ad8df2572aa18f348a3 Mon Sep 17 00:00:00 2001 From: MistEO Date: Mon, 2 May 2022 01:50:33 +0800 Subject: [PATCH 11/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E8=82=89=E9=B8=BD?= =?UTF-8?q?=E6=8A=95=E8=B5=84=E6=BB=A1=E4=BA=86=E6=95=B0=E9=87=8F=E8=BF=98?= =?UTF-8?q?=E5=9C=A8=E6=B6=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resource/tasks.json b/resource/tasks.json index 46cab952ca..cd73fad564 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -4744,6 +4744,9 @@ "Roguelike1StageTraderInvestSystemFull": { "algorithm": "OcrDetect", "cache": false, + "reduceOtherTimes": [ + "Roguelike1StageTraderInvestConfirm" + ], "text": [ "当前储备余额已达上限", "当前", From a07e901a526d35d76c30b9dfc61b58b2426ad5b3 Mon Sep 17 00:00:00 2001 From: MistEO Date: Mon, 2 May 2022 15:26:05 +0800 Subject: [PATCH 12/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E5=87=A0=E4=B8=AA?= =?UTF-8?q?=E8=82=89=E9=B8=BD=E5=B9=B2=E5=91=98=E5=90=8D=E7=9A=84=E8=AF=86?= =?UTF-8?q?=E5=88=AB=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/resource/tasks.json b/resource/tasks.json index cd73fad564..6e504d6889 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -4525,6 +4525,18 @@ [ "赤赤黑大", "赫默" + ], + [ + ".+刺", + "棘刺" + ], + [ + "姜哦", + "嵯峨" + ], + [ + "健影", + "傀影" ] ], "roi": [ From 33774e05b5d25282f627542e50d046aa492bc7e0 Mon Sep 17 00:00:00 2001 From: MistEO Date: Mon, 2 May 2022 15:36:40 +0800 Subject: [PATCH 13/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E5=88=B7=E7=90=86?= =?UTF-8?q?=E6=99=BA=EF=BC=8C=E5=9C=A8=E6=9F=90=E7=A7=8D=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=E5=87=8C=E6=99=A84=E7=82=B9=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=90=8E=E5=8D=A1=E4=BD=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index 6e504d6889..cd31d05f25 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -578,7 +578,8 @@ "StartButton2", "UseMedicine", "UseStone", - "NoStone" + "NoStone", + "OfflineConfirm" ] }, "StageSNFlag": { From bcc9369e1d6f6f264d08b05ebc7f5ef237874afa Mon Sep 17 00:00:00 2001 From: MistEO Date: Mon, 2 May 2022 15:38:40 +0800 Subject: [PATCH 14/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D`=E6=84=9A=E4=BA=BA?= =?UTF-8?q?=E5=8F=B7`=E6=B4=BB=E5=8A=A8=E5=85=B3=E5=8D=A1=EF=BC=8C?= =?UTF-8?q?=E5=9C=A8=E6=9F=90=E4=BA=9B=E5=88=86=E8=BE=A8=E7=8E=87=E4=B8=8B?= =?UTF-8?q?=E4=B8=8D=E7=82=B9=E4=BB=A3=E7=90=86=E6=8C=87=E6=8C=A5=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/403 --- resource/tasks.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index cd31d05f25..be7313e84c 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -550,10 +550,6 @@ "cache": false, "next": [ "StartButton1" - ], - "maskRange": [ - 50, - 255 ] }, "StartButton1": { From 5d04663ae946d925d5ca79f31143363a397ec654 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Mon, 2 May 2022 16:34:35 +0800 Subject: [PATCH 15/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E6=9F=90=E4=BA=9B?= =?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=8B=E6=96=AD=E7=BA=BF=E9=87=8D=E8=BF=9E?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E5=8D=A1=E4=BD=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index be7313e84c..74f1e8c23c 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -5,6 +5,7 @@ "next": [ "GameStart", "StartToWakeUp", + "StartUpConnectingFlag", "Terminal", "CloseAnno", "TodaysSupplies", @@ -1002,6 +1003,7 @@ "FightMissionFailed", "EndOfAction", "StartToWakeUp", + "StartUpConnectingFlag", "OfflineConfirm", "StartButton1" ] @@ -1021,6 +1023,7 @@ "next": [ "EndOfAction", "StartToWakeUp", + "StartUpConnectingFlag", "OfflineConfirm", "StartButton1" ] @@ -1039,7 +1042,8 @@ "PRTS2", "PrtsErrorConfirm", "OfflineConfirm", - "StartToWakeUp" + "StartToWakeUp", + "StartUpConnectingFlag" ] }, "OfflineConfirm": { @@ -4071,6 +4075,25 @@ 100 ], "next": [ + "StartToWakeUpToRoguelike1", + "StartUpConnectingToRoguelike1", + "TerminalToRoguelike1", + "CloseAnnoToRoguelike1", + "TodaysSuppliesToRoguelike1" + ] + }, + "StartUpConnectingToRoguelike1": { + "template": "StartUpConnectingFlag.png", + "action": "doNothing", + "roi": [ + 520, + 460, + 240, + 100 + ], + "next": [ + "StartUpConnectingToRoguelike1", + "StartToWakeUpToRoguelike1", "TerminalToRoguelike1", "CloseAnnoToRoguelike1", "TodaysSuppliesToRoguelike1" @@ -4194,6 +4217,7 @@ "next": [ "CloseAnnoToRoguelike1", "StartToWakeUpToRoguelike1", + "StartUpConnectingToRoguelike1", "OfflineConfirmToRoguelike1" ] }, @@ -4211,6 +4235,7 @@ "ReturnToRoguelike1Confirm", "OfflineConfirmToRoguelike1", "StartToWakeUpToRoguelike1", + "StartUpConnectingToRoguelike1", "StageSNReturnToRoguelike1" ] }, From b8c2ffb7d66bc63b336a1134f2554a1418ed6483 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Mon, 2 May 2022 17:51:05 +0800 Subject: [PATCH 16/70] =?UTF-8?q?feat.=E6=96=B0=E5=A2=9E=E5=AF=B9=E6=96=B0?= =?UTF-8?q?=E5=85=B3=E5=8D=A1`1-7`=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 178 ++++++++++++++++++ resource/template/StageTheme.png | Bin 0 -> 1254 bytes resource/template/StageThemeEpisode1To1-7.png | Bin 0 -> 142030 bytes .../StageThemeEpisode2ToEpisode1To1-7.png | Bin 0 -> 110670 bytes .../StageThemeEpisode3ToEpisode1To1-7.png | Bin 0 -> 39954 bytes .../ViewModels/TaskQueueViewModel.cs | 3 +- 6 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 resource/template/StageTheme.png create mode 100644 resource/template/StageThemeEpisode1To1-7.png create mode 100644 resource/template/StageThemeEpisode2ToEpisode1To1-7.png create mode 100644 resource/template/StageThemeEpisode3ToEpisode1To1-7.png diff --git a/resource/tasks.json b/resource/tasks.json index be7313e84c..6ad3d26c14 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -13,6 +13,184 @@ "StageSNFlag" ] }, + "1-7": { + "algorithm": "justreturn", + "action": "doNothing", + "next": [ + "StageThemeTo1-7", + "StageThemeEpisode3ToEpisode1To1-7", + "StageThemeEpisode2ToEpisode1To1-7", + "StageThemeEpisode1To1-7", + "Stage1-7" + ] + }, + "StageThemeTo1-7": { + "template": "StageTheme.png", + "roi": [ + 200, + 640, + 300, + 60 + ], + "action": "clickSelf", + "next": [ + "StageThemeChapter3ToChapter2To1-7" + ] + }, + "StageThemeChapter3ToChapter2To1-7": { + "algorithm": "OcrDetect", + "action": "clickSelf", + "text": [ + "幻灭" + ], + "roi": [ + 200, + 120, + 80, + 32 + ], + "cache": false, + "next": [ + "StageThemeChapter2ToChapter1To1-7" + ] + }, + "StageThemeChapter2ToChapter1To1-7": { + "algorithm": "OcrDetect", + "action": "clickSelf", + "text": [ + "觉醒" + ], + "roi": [ + 200, + 120, + 80, + 32 + ], + "cache": false, + "next": [ + "StageThemeEpisode3ToEpisode1To1-7", + "StageThemeEpisode2ToEpisode1To1-7", + "StageThemeEpisode1To1-7" + ] + }, + "StageThemeEpisode3ToEpisode1To1-7": { + "action": "clickSelf", + "roi": [ + 250, + 320, + 155, + 200 + ], + "cache": false, + "next": [ + "Stage1-7", + "SwipeLeftToStage1-7", + "SwipeRightToStage1-7", + "SwipeRightToStage1-7From1-6" + ] + }, + "StageThemeEpisode2ToEpisode1To1-7": { + "action": "clickSelf", + "roi": [ + 480, + 230, + 280, + 300 + ], + "cache": false, + "next": [ + "Stage1-7", + "SwipeLeftToStage1-7", + "SwipeRightToStage1-7", + "SwipeRightToStage1-7From1-6" + ] + }, + "StageThemeEpisode1To1-7": { + "action": "clickSelf", + "roi": [ + 750, + 160, + 400, + 400 + ], + "cache": false, + "next": [ + "Stage1-7", + "SwipeLeftToStage1-7", + "SwipeRightToStage1-7", + "SwipeRightToStage1-7From1-6" + ] + }, + "SwipeLeftToStage1-7": { + "algorithm": "OcrDetect", + "action": "swipeToTheLeft", + "text": [ + "1-10" + ], + "cache": false, + "roi": [ + 0, + 120, + 1080, + 480 + ], + "next": [ + "Stage1-7", + "SwipeLeftToStage1-7" + ] + }, + "SwipeRightToStage1-7": { + "algorithm": "OcrDetect", + "action": "swipeToTheRight", + "text": [ + "1-3" + ], + "cache": false, + "roi": [ + 0, + 120, + 1080, + 480 + ], + "next": [ + "Stage1-7", + "SwipeRightToStage1-7", + "SwipeRightToStage1-7From1-6" + ] + }, + "SwipeRightToStage1-7From1-6": { + "algorithm": "OcrDetect", + "action": "swipeToTheRight", + "text": [ + "1-6" + ], + "cache": false, + "roi": [ + 0, + 120, + 1080, + 480 + ], + "next": [ + "Stage1-7", + "SwipeRightToStage1-7", + "SwipeRightToStage1-7From1-6" + ] + }, + "Stage1-7": { + "algorithm": "OcrDetect", + "action": "clickSelf", + "text": [ + "1-7" + ], + "cache": false, + "roi": [ + 0, + 190, + 1080, + 60 + ] + }, "LS-6": { "algorithm": "justreturn", "action": "doNothing", diff --git a/resource/template/StageTheme.png b/resource/template/StageTheme.png new file mode 100644 index 0000000000000000000000000000000000000000..64cfad2c7bd9dc20d0976416dad473925a118f9d GIT binary patch literal 1254 zcmV4s!UI|?LIM{k)|&T4y+4VURmF7AU;4=x8EZ!7TPPhLA6HAIQm9s|#;<^# z$JW+Xe)Wlo$%)YOXOG3QxY@6i{eA^yC15O<%XJ9_=2M=ZpBH#`b`~m6l~@QUm&!H* z&6z*HJWk}%(NUot+uPfrQmN!pJw``I!_d%>C0tuu%V$5ayu2I+1_r|2-Cfw--3=cf zAGzie__FYom6a$1D;ohP#_Q|rFZuBB5Z>P2jE%tj`}=!%dU^_%mzQ<^S65dy-rU?+ zKF>0L1Qq1rjp5sSmh9s_yuQBX7N0=R{L9OW*|2&K^d8tMCoCNv9-0NKL9xERZo#^` zy28@ZQVgKL+F$H9Ha2X|V}5=<3=R%PJN&T)#NXN32^SX^rdwTI4Xv%Mb`464i;Kl_ zb5P8}!h#u62yAI-iA7QH=H{kdd(6$vSup~IuyqsyzW@C_TwPz)bqN&vn1CR(QY5h0 z4Bm!<;q&uzyyh-fVJYI7>FDSPeSLkgWdt*)Oied55AdP5WE-VUWKUr}PGOtWMy^vZha=Edq;^>p z8>MHonB|%b8pRe0J*x|z$)4$4BUv5s^Ii{BY>Gl>(jW@#x5l>|8({WsiwgGH3sXAJ z=$BuE!ma(Qz}9cY)YMey{-e8bjC?9h3{tsJ3@Z^NHzRtU8W^NGIi#bc1N`Ay#dH~_YW z2O5Q(o}Px2lasK&zi%Dt?Ch*P>@vu{8L}5i!6p`?m3XKNwyOMEq#$^Eduz7$_xG^~ z^dw=FuSO-8zEF$=9Z29EGEF7F2LOp^%AlT1uy&Vl?>ou@tYGTODXPg!`*qzAYW8m+z=h-qVd^3?{w7o-)D z6)BWvXJ<`fn}&ynV*njc|2-qHLJH?QSa0;y-XCOj$bZxWZ1}h3;NZaIQug4o>;y>< zBxu%&xN27CuEAG6vJqH}KJH^N{|9MckS6?{Z7saDe~15d7==c<#;k^a0VWcrfe$PU QM*si-07*qoM6N<$g6ADaW&i*H literal 0 HcmV?d00001 diff --git a/resource/template/StageThemeEpisode1To1-7.png b/resource/template/StageThemeEpisode1To1-7.png new file mode 100644 index 0000000000000000000000000000000000000000..82be31b98b0b7f7ff6117edc3085c8380ed2d912 GIT binary patch literal 142030 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%0A>>LtkDK)q0A*Ya5jOyr`=#3i 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

1R`qiVam9KbdIUIsAc{@i16d(iEd83o_% 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 SN((Lk0000 Date: Wed, 4 May 2022 00:26:47 +0800 Subject: [PATCH 27/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E8=82=89=E9=B8=BD=E5=B9=B2=E5=91=98=E5=90=8D=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/414 --- resource/tasks.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resource/tasks.json b/resource/tasks.json index 111d4ab8c0..396d79466b 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -4790,6 +4790,10 @@ [ "健影", "傀影" + ], + [ + "^灵鲨", + "幽灵鲨" ] ], "roi": [ From 2babd615325eb82ea04e87ba30f07e934010dc5d Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 00:35:09 +0800 Subject: [PATCH 28/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E8=82=89=E9=B8=BD?= =?UTF-8?q?=E6=9C=89=E5=A4=8D=E6=B4=BB=E7=B1=BB=E6=94=B6=E8=97=8F=E5=93=81?= =?UTF-8?q?=EF=BC=8C=E6=88=98=E6=96=97=E5=A4=B1=E8=B4=A5=E5=90=8E=E5=8D=A1?= =?UTF-8?q?=E4=BD=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/421 --- resource/tasks.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/resource/tasks.json b/resource/tasks.json index 396d79466b..5d2a123ad9 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -5716,6 +5716,13 @@ ], "next": [ "Roguelike1Start", + "Roguelike1StageTrader", + "Roguelike1StageSafeHouse", + "Roguelike1StageEncounter", + "Roguelike1StageBoons", + "Roguelike1StageCambatDps", + "Roguelike1StageEmergencyDps", + "Roguelike1StageDreadfulFoe", "Roguelike1ClickToStartPoint" ] } From 32c77a7a9e5d29eda94084003087670a8f5ad1c0 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 00:58:23 +0800 Subject: [PATCH 29/70] =?UTF-8?q?chore.=E5=9F=BA=E5=BB=BA=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=BF=83=E6=83=85=E7=9A=84=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/384 --- src/MeoAssistant/InfrastProductionTask.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/MeoAssistant/InfrastProductionTask.cpp b/src/MeoAssistant/InfrastProductionTask.cpp index cc351f7ac6..4bbeb313c7 100644 --- a/src/MeoAssistant/InfrastProductionTask.cpp +++ b/src/MeoAssistant/InfrastProductionTask.cpp @@ -200,6 +200,7 @@ size_t asst::InfrastProductionTask::opers_detect() continue; } // 心情过低的干员则不可用 + Log.trace("mood", cur_oper.mood_ratio, "threshold", m_mood_threshold); if (cur_oper.mood_ratio < m_mood_threshold) { //--cur_available_num; continue; From ff45f91c2b628c7060fc7de29d6d93cce36685d0 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 01:23:50 +0800 Subject: [PATCH 30/70] =?UTF-8?q?chore.=E8=A1=A5=E5=85=85=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E5=9F=BA=E5=BB=BA=E7=9A=84=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/InfrastProductionTask.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/MeoAssistant/InfrastProductionTask.cpp b/src/MeoAssistant/InfrastProductionTask.cpp index 4bbeb313c7..282d5c061a 100644 --- a/src/MeoAssistant/InfrastProductionTask.cpp +++ b/src/MeoAssistant/InfrastProductionTask.cpp @@ -199,8 +199,15 @@ size_t asst::InfrastProductionTask::opers_detect() --cur_available_num; continue; } + { + std::string skills_str = "["; + for (const auto& skill : cur_oper.skills) { + skills_str += skill.id + ", "; + } + skills_str += "]"; + Log.trace(skills_str, "mood", cur_oper.mood_ratio, "threshold", m_mood_threshold); + } // 心情过低的干员则不可用 - Log.trace("mood", cur_oper.mood_ratio, "threshold", m_mood_threshold); if (cur_oper.mood_ratio < m_mood_threshold) { //--cur_available_num; continue; From 1df80a8707661298203bcf51191e4281a264aadb Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 01:56:43 +0800 Subject: [PATCH 31/70] =?UTF-8?q?chore.=E8=A1=A5=E4=B8=8A=E6=BC=8F?= =?UTF-8?q?=E4=BA=86=E7=9A=84=E6=A8=A1=E6=9D=BF=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/template/DroneCancel.png | Bin 0 -> 40895 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 resource/template/DroneCancel.png diff --git a/resource/template/DroneCancel.png b/resource/template/DroneCancel.png new file mode 100644 index 0000000000000000000000000000000000000000..c6b4ca44345e070b4819b48d507b9e49d551ca4d GIT binary patch literal 40895 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 a_t5`g6qS3!@2G literal 0 HcmV?d00001 From 5e8b8063c77a27689da607bb0ff7255459c81f03 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 02:15:02 +0800 Subject: [PATCH 32/70] =?UTF-8?q?feat.=E6=9B=B4=E6=96=B0=E4=BC=81=E9=B9=85?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E5=BA=934.2.2=E7=89=88=E6=9C=AC=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=B9=E7=AC=AC=E5=8D=81=E7=AB=A0=E7=A3=A8?= =?UTF-8?q?=E9=9A=BE/=E6=99=AE=E9=80=9A=E7=9A=84=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3rdparty/include/meojson/json.hpp | 422 +++++++++++++++--- .../include/penguin-stats-recognize/core.hpp | 4 +- .../include/penguin-stats-recognize/depot.hpp | 8 +- .../penguin-stats-recognize/recognize.hpp | 15 +- .../penguin-stats-recognize/recognizer.hpp | 36 +- .../penguin-stats-recognize/result.hpp | 317 ++++++++----- README.md | 2 +- src/MeoAssistant/PenguinPack.cpp | 13 +- src/MeoAssistant/README.md | 2 +- 9 files changed, 611 insertions(+), 208 deletions(-) diff --git a/3rdparty/include/meojson/json.hpp b/3rdparty/include/meojson/json.hpp index c584f86a17..5a7b2f99af 100644 --- a/3rdparty/include/meojson/json.hpp +++ b/3rdparty/include/meojson/json.hpp @@ -128,6 +128,30 @@ namespace json value& operator[](const std::string& key); value& operator[](std::string&& key); + value operator|(const object& rhs)&; + value operator|(object&& rhs)&; + value operator|(const object& rhs)&&; + value operator|(object&& rhs)&&; + + value& operator|=(const object& rhs); + value& operator|=(object&& rhs); + + //value operator&(const object& rhs)&; + //value operator&(object&& rhs)&; + //value operator&(const object& rhs)&&; + //value operator&(object&& rhs)&&; + + //value& operator&=(const object& rhs); + //value& operator&=(object&& rhs); + + value operator+(const array& rhs)&; + value operator+(array&& rhs)&; + value operator+(const array& rhs)&&; + value operator+(array&& rhs)&&; + + value& operator+=(const array& rhs); + value& operator+=(array&& rhs); + explicit operator bool() const { return as_boolean(); } explicit operator int() const { return as_integer(); } explicit operator long() const { return as_long(); } @@ -141,14 +165,19 @@ namespace json private: static var_t deep_copy(const var_t& src); + template - decltype(auto) get(std::tuple keys_then_default_value, std::index_sequence) const; + decltype(auto) get( + std::tuple keys_then_default_value, + std::index_sequence) const; template decltype(auto) get_aux(T&& default_value, FirstKey&& first, RestKeys &&... rest) const; template decltype(auto) get_aux(T&& default_value, UniqueKey&& first) const; + const std::string& as_basic_type_str() const; + std::string& as_basic_type_str(); value_type _type = value_type::Null; var_t _raw_data; @@ -164,6 +193,7 @@ namespace json { public: using raw_array = std::vector; + using value_type = raw_array::value_type; using iterator = raw_array::iterator; using const_iterator = raw_array::const_iterator; using reverse_iterator = raw_array::reverse_iterator; @@ -225,6 +255,14 @@ namespace json const value& operator[](size_t pos) const; value& operator[](size_t pos); + array operator+(const array& rhs)&; + array operator+(array&& rhs)&; + array operator+(const array& rhs)&&; + array operator+(array&& rhs)&&; + + array& operator+=(const array& rhs); + array& operator+=(array&& rhs); + array& operator=(const array&) = default; array& operator=(array&&) noexcept = default; @@ -243,13 +281,14 @@ namespace json { public: using raw_object = std::unordered_map; + using value_type = raw_object::value_type; using iterator = raw_object::iterator; using const_iterator = raw_object::const_iterator; public: object() = default; object(const object& rhs) = default; - object(object&& rhs) = default; + object(object&& rhs) noexcept = default; object(const raw_object& raw_obj); object(raw_object&& raw_obj); object(std::initializer_list init_list); @@ -283,6 +322,7 @@ namespace json const value& get(const std::string& key) const; template decltype(auto) emplace(Args &&...args); + template decltype(auto) insert(Args &&...args); void clear() noexcept; bool earse(const std::string& key); @@ -297,6 +337,22 @@ namespace json value& operator[](const std::string& key); value& operator[](std::string&& key); + object operator|(const object& rhs)&; + object operator|(object&& rhs)&; + object operator|(const object& rhs)&&; + object operator|(object&& rhs)&&; + + object& operator|=(const object& rhs); + object& operator|=(object&& rhs); + + //object operator&(const object& rhs)&; + //object operator&(object&& rhs)&; + //object operator&(const object& rhs)&&; + //object operator&(object&& rhs)&&; + + //object& operator&=(const object& rhs); + //object& operator&=(object&& rhs); + object& operator=(const object&) = default; object& operator=(object&&) = default; @@ -454,20 +510,12 @@ namespace json MEOJSON_INLINE const value& value::at(size_t pos) const { - if (is_array()) { - return std::get(_raw_data)->at(pos); - } - - throw exception("Wrong Type or data empty"); + return as_array().at(pos); } MEOJSON_INLINE const value& value::at(const std::string& key) const { - if (is_object()) { - return std::get(_raw_data)->at(key); - } - - throw exception("Wrong Type or data empty"); + return as_object().at(key); } template @@ -533,7 +581,7 @@ namespace json MEOJSON_INLINE bool value::as_boolean() const { if (is_boolean()) { - if (std::string b_str = std::get(_raw_data); + if (const std::string& b_str = as_basic_type_str(); b_str == "true") { return true; } @@ -552,7 +600,7 @@ namespace json MEOJSON_INLINE int value::as_integer() const { if (is_number()) { - return std::stoi(std::get(_raw_data)); + return std::stoi(as_basic_type_str()); } else { throw exception("Wrong Type"); @@ -574,7 +622,7 @@ namespace json MEOJSON_INLINE long value::as_long() const { if (is_number()) { - return std::stol(std::get(_raw_data)); + return std::stol(as_basic_type_str()); } else { throw exception("Wrong Type"); @@ -584,7 +632,7 @@ namespace json MEOJSON_INLINE unsigned long value::as_unsigned_long() const { if (is_number()) { - return std::stoul(std::get(_raw_data)); + return std::stoul(as_basic_type_str()); } else { throw exception("Wrong Type"); @@ -594,7 +642,7 @@ namespace json MEOJSON_INLINE long long value::as_long_long() const { if (is_number()) { - return std::stoll(std::get(_raw_data)); + return std::stoll(as_basic_type_str()); } else { throw exception("Wrong Type"); @@ -604,7 +652,7 @@ namespace json MEOJSON_INLINE unsigned long long value::as_unsigned_long_long() const { if (is_number()) { - return std::stoull(std::get(_raw_data)); + return std::stoull(as_basic_type_str()); } else { throw exception("Wrong Type"); @@ -614,7 +662,7 @@ namespace json MEOJSON_INLINE float value::as_float() const { if (is_number()) { - return std::stof(std::get(_raw_data)); + return std::stof(as_basic_type_str()); } else { throw exception("Wrong Type"); @@ -624,7 +672,7 @@ namespace json MEOJSON_INLINE double value::as_double() const { if (is_number()) { - return std::stod(std::get(_raw_data)); + return std::stod(as_basic_type_str()); } else { throw exception("Wrong Type"); @@ -634,7 +682,7 @@ namespace json MEOJSON_INLINE long double value::as_long_double() const { if (is_number()) { - return std::stold(std::get(_raw_data)); + return std::stold(as_basic_type_str()); } else { throw exception("Wrong Type"); @@ -644,7 +692,7 @@ namespace json MEOJSON_INLINE const std::string value::as_string() const { if (is_string()) { - return escape_string(std::get(_raw_data)); + return escape_string(as_basic_type_str()); } else { throw exception("Wrong Type"); @@ -671,11 +719,11 @@ namespace json MEOJSON_INLINE array& value::as_array() { - if (is_array()) { - return *std::get(_raw_data); - } - else if (empty()) { + if (empty()) { *this = array(); + } + + if (is_array()) { return *std::get(_raw_data); } @@ -684,17 +732,26 @@ namespace json MEOJSON_INLINE object& value::as_object() { - if (is_object()) { - return *std::get(_raw_data); - } - else if (empty()) { + if (empty()) { *this = object(); + } + + if (is_object()) { return *std::get(_raw_data); } throw exception("Wrong Type or data empty"); } + MEOJSON_INLINE const std::string& value::as_basic_type_str() const + { + return std::get(_raw_data); + } + MEOJSON_INLINE std::string& value::as_basic_type_str() + { + return std::get(_raw_data); + } + template MEOJSON_INLINE decltype(auto) value::array_emplace(Args &&...args) { @@ -719,13 +776,13 @@ namespace json return "null"; case value_type::Boolean: case value_type::Number: - return std::get(_raw_data); + return as_basic_type_str(); case value_type::String: - return '"' + std::get(_raw_data) + '"'; + return '"' + as_basic_type_str() + '"'; case value_type::Array: - return std::get(_raw_data)->to_string(); + return as_array().to_string(); case value_type::Object: - return std::get(_raw_data)->to_string(); + return as_object().to_string(); default: throw exception("Unknown Value Type"); } @@ -739,13 +796,13 @@ namespace json return "null"; case value_type::Boolean: case value_type::Number: - return std::get(_raw_data); + return as_basic_type_str(); case value_type::String: - return '"' + std::get(_raw_data) + '"'; + return '"' + as_basic_type_str() + '"'; case value_type::Array: - return std::get(_raw_data)->format(shift_str, basic_shift_count); + return as_array().format(shift_str, basic_shift_count); case value_type::Object: - return std::get(_raw_data)->format(shift_str, basic_shift_count); + return as_object().format(shift_str, basic_shift_count); default: throw exception("Unknown Value Type"); } @@ -763,50 +820,130 @@ namespace json MEOJSON_INLINE const value& value::operator[](size_t pos) const { - if (is_array()) { - return std::get(_raw_data)->operator[](pos); - } // Array not support to create by operator[] - throw exception("Wrong Type"); + return as_array()[pos]; } MEOJSON_INLINE value& value::operator[](size_t pos) { - if (is_array()) { - return std::get(_raw_data)->operator[](pos); - } // Array not support to create by operator[] - throw exception("Wrong Type"); + return as_array()[pos]; } MEOJSON_INLINE value& value::operator[](const std::string& key) { - if (is_object()) { - return std::get(_raw_data)->operator[](key); - } - // Create a new value by operator[] - else if (empty()) { + if (empty()) { *this = object(); - return std::get(_raw_data)->operator[](key); } - throw exception("Wrong Type"); + return as_object()[key]; } MEOJSON_INLINE value& value::operator[](std::string&& key) { - if (is_object()) { - return std::get(_raw_data)->operator[](key); - } - // Create a new value by operator[] - else if (empty()) { + if (empty()) { *this = object(); - return std::get(_raw_data)->operator[](key); } - throw exception("Wrong Type"); + return as_object()[std::move(key)]; + } + + MEOJSON_INLINE value value::operator|(const object& rhs)& + { + return as_object() | rhs; + } + + MEOJSON_INLINE value value::operator|(object&& rhs)& + { + return as_object() | std::move(rhs); + } + + MEOJSON_INLINE value value::operator|(const object& rhs)&& + { + return std::move(as_object()) | rhs; + } + + MEOJSON_INLINE value value::operator|(object&& rhs)&& + { + return std::move(as_object()) | std::move(rhs); + } + + MEOJSON_INLINE value& value::operator|=(const object& rhs) + { + as_object() |= rhs; + return *this; + } + + MEOJSON_INLINE value& value::operator|=(object&& rhs) + { + as_object() |= std::move(rhs); + return *this; + } + + //MEOJSON_INLINE value value::operator&(const object& rhs)& + //{ + // return as_object() & rhs; + //} + + //MEOJSON_INLINE value value::operator&(object&& rhs)& + //{ + // return as_object() & std::move(rhs); + //} + + //MEOJSON_INLINE value value::operator&(const object& rhs)&& + //{ + // return std::move(as_object()) & rhs; + //} + + //MEOJSON_INLINE value value::operator&(object&& rhs)&& + //{ + // return std::move(as_object()) & std::move(rhs); + //} + + //MEOJSON_INLINE value& value::operator&=(const object& rhs) + //{ + // as_object() &= rhs; + // return *this; + //} + + //MEOJSON_INLINE value& value::operator&=(object&& rhs) + //{ + // as_object() &= std::move(rhs); + // return *this; + //} + + MEOJSON_INLINE value value::operator+(const array& rhs)& + { + return as_array() + rhs; + } + + MEOJSON_INLINE value value::operator+(array&& rhs)& + { + return as_array() + std::move(rhs); + } + + MEOJSON_INLINE value value::operator+(const array& rhs)&& + { + return std::move(as_array()) + rhs; + } + + MEOJSON_INLINE value value::operator+(array&& rhs)&& + { + return std::move(as_array()) + std::move(rhs); + } + + MEOJSON_INLINE value& value::operator+=(const array& rhs) + { + as_array() += rhs; + return *this; + } + + MEOJSON_INLINE value& value::operator+=(array&& rhs) + { + as_array() += std::move(rhs); + return *this; } template @@ -885,10 +1022,9 @@ namespace json static_assert( std::is_constructible::value, "Parameter can't be used to construct a json::value"); - _array_data.reserve(arr.size()); - for (auto&& ele : arr) { - _array_data.emplace_back(std::move(ele)); - } + _array_data.assign( + std::make_move_iterator(arr.begin()), + std::make_move_iterator(arr.end())); } MEOJSON_INLINE const value& array::at(size_t pos) const @@ -1195,6 +1331,50 @@ namespace json return _array_data[pos]; } + MEOJSON_INLINE array array::operator+(const array& rhs)& + { + array temp = *this; + temp._array_data.insert(_array_data.end(), rhs.begin(), rhs.end()); + return temp; + } + + MEOJSON_INLINE array array::operator+(array&& rhs)& + { + array temp = *this; + temp._array_data.insert(_array_data.end(), + std::make_move_iterator(rhs.begin()), + std::make_move_iterator(rhs.end())); + return temp; + } + + MEOJSON_INLINE array array::operator+(const array& rhs)&& + { + _array_data.insert(_array_data.end(), rhs.begin(), rhs.end()); + return std::move(*this); + } + + MEOJSON_INLINE array array::operator+(array&& rhs)&& + { + _array_data.insert(_array_data.end(), + std::make_move_iterator(rhs.begin()), + std::make_move_iterator(rhs.end())); + return std::move(*this); + } + + MEOJSON_INLINE array& array::operator+=(const array& rhs) + { + _array_data.insert(_array_data.end(), rhs.begin(), rhs.end()); + return *this; + } + + MEOJSON_INLINE array& array::operator+=(array&& rhs) + { + _array_data.insert(_array_data.end(), + std::make_move_iterator(rhs.begin()), + std::make_move_iterator(rhs.end())); + return *this; + } + // const raw_array &array::raw_data() const // { // return _array_data; @@ -1211,6 +1391,11 @@ namespace json return _object_data.emplace(std::forward(args)...); } + template decltype(auto) object::insert(Args &&...args) + { + return _object_data.insert(std::forward(args)...); + } + MEOJSON_INLINE std::ostream& operator<<(std::ostream& out, const array& arr) { // TODO: format output @@ -1528,6 +1713,108 @@ namespace json return _object_data[std::move(key)]; } + MEOJSON_INLINE object object::operator|(const object& rhs)& + { + object temp = *this; + temp._object_data.insert(rhs.begin(), rhs.end()); + return temp; + } + + MEOJSON_INLINE object object::operator|(object&& rhs)& + { + object temp = *this; + //temp._object_data.merge(std::move(rhs._object_data)); + temp._object_data.insert( + std::make_move_iterator(rhs.begin()), + std::make_move_iterator(rhs.end())); + return temp; + } + + MEOJSON_INLINE object object::operator|(const object& rhs)&& + { + _object_data.insert(rhs.begin(), rhs.end()); + return std::move(*this); + } + + MEOJSON_INLINE object object::operator|(object&& rhs)&& + { + //_object_data.merge(std::move(rhs._object_data)); + _object_data.insert( + std::make_move_iterator(rhs.begin()), + std::make_move_iterator(rhs.end())); + return std::move(*this); + } + + MEOJSON_INLINE object& object::operator|=(const object& rhs) + { + _object_data.insert(rhs.begin(), rhs.end()); + return *this; + } + + MEOJSON_INLINE object& object::operator|=(object&& rhs) + { + _object_data.insert( + std::make_move_iterator(rhs.begin()), + std::make_move_iterator(rhs.end())); + return *this; + } + + //MEOJSON_INLINE object object::operator&(const object& rhs)& + //{ + // object temp; + // for (const auto& [key, value] : *this) { + // if (rhs.contains(key)) { + // temp.emplace(key, value); + // } + // } + // return temp; + //} + + //MEOJSON_INLINE object object::operator&(object&& rhs)& + //{ + // object temp; + // for (const auto& [key, value] : *this) { + // if (rhs.contains(key)) { + // temp.emplace(key, value); + // } + // } + // return temp; + //} + + //MEOJSON_INLINE object object::operator&(const object& rhs)&& + //{ + // object temp; + // for (auto&& [key, value] : *this) { + // if (rhs.contains(key)) { + // temp.emplace(key, std::move(value)); + // } + // } + // return temp; + //} + + //MEOJSON_INLINE object object::operator&(object&& rhs)&& + //{ + // object temp; + // for (auto&& [key, value] : *this) { + // if (rhs.contains(key)) { + // temp.emplace(key, std::move(value)); + // } + // } + // return temp; + //} + + //MEOJSON_INLINE object& object::operator&=(const object& rhs) + //{ + // *this = std::move(*this) & rhs; + // return *this; + //} + + //MEOJSON_INLINE object& object::operator&=(object&& rhs) + //{ + // *this = std::move(*this) & std::move(rhs); + // return *this; + //} + // const raw_object &object::raw_data() const // { // return _object_data; @@ -1547,10 +1834,9 @@ namespace json typename MapType::value_type>::value, "Parameter can't be used to construct a " "object::raw_object::value_type"); - _object_data.reserve(map.size()); - for (auto&& ele : map) { - _object_data.emplace(std::move(ele)); - } + _object_data.insert( + std::make_move_iterator(map.begin()), + std::make_move_iterator(map.end())); } // ************************* diff --git a/3rdparty/include/penguin-stats-recognize/core.hpp b/3rdparty/include/penguin-stats-recognize/core.hpp index 449ec208a6..59ab79bca2 100644 --- a/3rdparty/include/penguin-stats-recognize/core.hpp +++ b/3rdparty/include/penguin-stats-recognize/core.hpp @@ -61,11 +61,11 @@ public: static Resource instance; return instance; } - void add(std::string key, std::any src) + void add(const std::string& key, const std::any& src) { if (!key.empty()) { - _resource[std::move(key)] = std::move(src); + _resource.insert_or_assign(key, src); } } template diff --git a/3rdparty/include/penguin-stats-recognize/depot.hpp b/3rdparty/include/penguin-stats-recognize/depot.hpp index b2ab6b3c59..704a51de9d 100644 --- a/3rdparty/include/penguin-stats-recognize/depot.hpp +++ b/3rdparty/include/penguin-stats-recognize/depot.hpp @@ -16,6 +16,7 @@ using dict = nlohmann::ordered_json; namespace penguin { + enum CircleFlags { X = 0, @@ -36,7 +37,7 @@ public: _get_item_list(); return *this; } - const dict report([[maybe_unused]] bool debug = false) + const dict report(bool debug = false) { dict _report = dict::object(); return _report; @@ -112,7 +113,7 @@ private: } } } - _item_diameter = static_cast(round(cv::mean(item_circles)[R] * 2)); + _item_diameter = round(cv::mean(item_circles)[R] * 2); for (const cv::Vec3i& c : item_circles) { @@ -127,7 +128,7 @@ private: // show_img(img_blur); int radius = _item_diameter / 2; - int offset = static_cast(radius * 1.2); + int offset = radius * 1.2; ItemTemplates templs; for (const cv::Vec3i& c : item_circles) { @@ -156,6 +157,7 @@ private: // show_img(_img_ext); } }; + } // namespace penguin #endif // PENGUIN_DEPOT_HPP_ diff --git a/3rdparty/include/penguin-stats-recognize/recognize.hpp b/3rdparty/include/penguin-stats-recognize/recognize.hpp index 02a406d2fe..5a7afce53e 100644 --- a/3rdparty/include/penguin-stats-recognize/recognize.hpp +++ b/3rdparty/include/penguin-stats-recognize/recognize.hpp @@ -15,6 +15,7 @@ using dict = nlohmann::ordered_json; namespace penguin { + enum class StatusFlags { NORMAL = 0, @@ -162,10 +163,10 @@ public: _templ_list.emplace_back(templ); } } - ItemTemplates(const std::string stage_code) + ItemTemplates(const std::string& stage_code, const std::string& difficulty = "NORMAL") { const auto& stage_drop = - resource.get("stage_index")[stage_code]["drops"]; + resource.get("stage_index")[stage_code][difficulty]["drops"]; const auto& item_templs = resource.get>("item_templs"); for (const auto& [_, itemId] : stage_drop.items()) @@ -822,8 +823,8 @@ private: topleft_new.x *= coeff_multiinv; topleft_new.y *= coeff_multiinv; cv::Size size_new = cv::Size( - static_cast(round(TEMPLATE_WIDTH * ((double)_diameter / TEMPLATE_DIAMETER))), - static_cast(round(TEMPLATE_HEIGHT * ((double)_diameter / TEMPLATE_DIAMETER)))); + round(TEMPLATE_WIDTH * ((double)_diameter / TEMPLATE_DIAMETER)), + round(TEMPLATE_HEIGHT * ((double)_diameter / TEMPLATE_DIAMETER))); if (topleft_new.x + size_new.width > width) { size_new.width = width - topleft_new.x; @@ -842,9 +843,9 @@ private: } void _get_quantity() { - cv::Rect quantityrect = cv::Rect(0, static_cast(round(height * _ITEM_QTY_Y_PROP)), - static_cast(round(width * _ITEM_QTY_WIDTH_PROP)), - static_cast(round(height * _ITEM_QTY_HEIGHT_PROP))); + cv::Rect quantityrect = cv::Rect(0, round(height * _ITEM_QTY_Y_PROP), + round(width * _ITEM_QTY_WIDTH_PROP), + round(height * _ITEM_QTY_HEIGHT_PROP)); cv::Mat quantityimg = _img(quantityrect); _quantity.set_img(quantityimg); _quantity.analyze(); diff --git a/3rdparty/include/penguin-stats-recognize/recognizer.hpp b/3rdparty/include/penguin-stats-recognize/recognizer.hpp index 3538fc2b7a..3823a598b7 100644 --- a/3rdparty/include/penguin-stats-recognize/recognizer.hpp +++ b/3rdparty/include/penguin-stats-recognize/recognizer.hpp @@ -18,25 +18,19 @@ #include "depot.hpp" #include "result.hpp" -static const std::string version = "4.1.1"; +static const std::string version = "4.2.2"; static const std::string opencv_version = CV_VERSION; cv::Mat decode(std::string JSarrayBuffer) { - std::vector buf(std::make_move_iterator(JSarrayBuffer.begin()), - std::make_move_iterator(JSarrayBuffer.end())); - return cv::imdecode(buf, cv::IMREAD_COLOR); -} - -cv::Mat decode(uint8_t* buffer, size_t size) -{ - std::vector buf(buffer, buffer + size); + std::vector buf(std::make_move_iterator(JSarrayBuffer.begin()), + std::make_move_iterator(JSarrayBuffer.end())); return cv::imdecode(buf, cv::IMREAD_COLOR); } void load_server(std::string server) { - penguin::server = std::move(server); + penguin::server = server; } void load_stage_index() // local @@ -44,14 +38,13 @@ void load_stage_index() // local dict stage_index; std::ifstream f("../resources/json/stage_index.json"); f >> stage_index; - f.close(); - penguin::resource.add("stage_index", std::move(stage_index)); + penguin::resource.add("stage_index", stage_index); } void wload_stage_index(std::string stage_index) // wasm { auto& resource = penguin::resource; - resource.add("stage_index", dict::parse(std::move(stage_index))); + resource.add("stage_index", dict::parse(stage_index)); } void load_hash_index() // local @@ -59,14 +52,13 @@ void load_hash_index() // local dict hash_index; std::ifstream f("../resources/json/hash_index.json"); f >> hash_index; - f.close(); - penguin::resource.add("hash_index", std::move(hash_index)); + penguin::resource.add("hash_index", hash_index); } void wload_hash_index(std::string hash_index) // wasm { auto& resource = penguin::resource; - resource.add("hash_index", dict::parse(std::move(hash_index))); + resource.add("hash_index", dict::parse(hash_index)); } void load_templs() // local @@ -77,9 +69,9 @@ void load_templs() // local { std::string itemId = templ.path().stem().string(); cv::Mat templimg = cv::imread(templ.path().string()); - item_templs[std::move(itemId)] = templimg; // cv::Mat is a shallow copy + item_templs.insert_or_assign(itemId, templimg); } - penguin::resource.add("item_templs", std::move(item_templs)); + penguin::resource.add("item_templs", item_templs); } void wload_templs(std::string itemId, std::string JSarrayBuffer) // wasm @@ -91,7 +83,7 @@ void wload_templs(std::string itemId, std::string JSarrayBuffer) // wasm } auto& item_templs = resource.get>("item_templs"); - item_templs[std::move(itemId)] = decode(std::move(JSarrayBuffer)); + item_templs.insert_or_assign(itemId, decode(std::move(JSarrayBuffer))); } const bool env_check() @@ -103,9 +95,7 @@ class Recognizer { public: Recognizer(std::string mode) - : _mode(std::move(mode)) - { - } + : _mode(mode) {} dict recognize(cv::Mat img, bool detail = false) { @@ -115,7 +105,7 @@ public: } std::string wrecognize(std::string JSarrayBuffer, bool detail, bool pretty_print) { - _wset_img(std::move(JSarrayBuffer)); + _wset_img(JSarrayBuffer); _recognize(); return _wget_report(detail, pretty_print); } diff --git a/3rdparty/include/penguin-stats-recognize/result.hpp b/3rdparty/include/penguin-stats-recognize/result.hpp index 769634fd32..2c6526ae11 100644 --- a/3rdparty/include/penguin-stats-recognize/result.hpp +++ b/3rdparty/include/penguin-stats-recognize/result.hpp @@ -14,7 +14,7 @@ #include "recognize.hpp" using dict = nlohmann::ordered_json; -// extern void show_img(cv::Mat src); +extern void show_img(cv::Mat src); namespace penguin { // result @@ -123,13 +123,13 @@ private: void _get_is_result() { auto& self = *this; - auto resultrect = cv::boundingRect(_img); - self._relate(resultrect.tl()); - if (resultrect.empty()) + auto result_rect = cv::boundingRect(_img); + self._relate(result_rect.tl()); + if (result_rect.empty()) { return; } - _img = _img(resultrect); + _img = _img(result_rect); auto result_img = _img; _hash = shash(result_img, ResizeFlags::RESIZE_W32_H8); std::string hash_std = @@ -146,6 +146,90 @@ private: } }; +class Widget_Stars : public Widget +{ +public: + const bool is_3stars() const { return _stars == 3; } + Widget_Stars() = default; + Widget_Stars(Widget* const parent_widget) + : Widget("stars", parent_widget) {} + Widget_Stars(const cv::Mat& img, Widget* const parent_widget = nullptr) + : Widget("stars", parent_widget) + { + set_img(img); + } + void set_img(const cv::Mat& img) + { + Widget::set_img(img); + if (_img.channels() == 3) + { + cv::cvtColor(_img, _img, cv::COLOR_BGR2GRAY); + cv::threshold(_img, _img, 127, 255, cv::THRESH_BINARY); + } + } + Widget_Stars& analyze() + { + if (!_img.empty()) + { + _get_is_3stars(); + } + if (_stars != 3) + { + push_exception(ERROR, ExcSubtypeFlags::EXC_FALSE); + } + return *this; + } + const dict report(bool debug = false) + { + dict rpt = dict::object(); + rpt.merge_patch(Widget::report(debug)); + if (!debug) + { + rpt["count"] = _stars; + } + else + { + rpt["count"] = _stars; + } + return rpt; + } + +private: + int _stars = 0; + void _get_is_3stars() + { + auto& self = *this; + auto star_img = _img; + auto sp_ = separate(star_img, DirectionFlags::RIGHT, 1); + auto laststar_range = separate(star_img, DirectionFlags::RIGHT, 1)[0]; + auto laststar = star_img(cv::Range(0, height), laststar_range); + auto star_rect = cv::boundingRect(laststar); + if (star_rect.empty()) + { + return; + } + auto sp = separate(star_img(cv::Rect(0, 0, width, height / 2)), DirectionFlags::LEFT); + for (auto it = sp.cbegin(); it != sp.cend();) + { + const auto& range = *it; + if (const auto length = range.end - range.start; + length < height * STAR_WIDTH_PROP) + { + it = sp.erase(it); + } + else + { + ++it; + } + } + star_rect.x = sp.front().start; + star_rect.width = sp.back().end - star_rect.x; + _img = star_img = star_img(star_rect); + self._relate(star_rect.tl()); + _stars = sp.size(); + } +}; + class Widget_Stage : public WidgetWithCandidate, int> { public: @@ -181,7 +265,7 @@ public: push_exception(ERROR, ExcSubtypeFlags::EXC_NOTFOUND); } else if (const auto& stage_index = resource.get("stage_index"); - stage_index[_stage_code()]["existence"] == false) + stage_index[_stage_code()][_difficulty]["existence"] == false) { push_exception(ERROR, ExcSubtypeFlags::EXC_ILLEGAL); } @@ -229,10 +313,16 @@ public: } return rpt; } + // for temporary workaround + void _set_difficulty(const std::string& difficulty) + { + _difficulty = difficulty; + } private: const int _CANDIDATES_COUNT = 5; bool _existance = false; + std::string _difficulty = "NORMAL"; // for temporary workaround std::vector _stage_chrs; const std::string _stage_code() const { @@ -260,7 +350,7 @@ private: if (const auto& stage_index = resource.get("stage_index"); stage_index.contains(stage_code)) { - return (std::string)stage_index[stage_code]["stageId"]; + return (std::string)stage_index[stage_code][_difficulty]["stageId"]; } else { @@ -359,36 +449,31 @@ private: } }; -class Widget_Stars : public Widget +class Widget_Difficulty : public Widget { public: - const bool is_3stars() const { return _stars == 3; } - Widget_Stars() = default; - Widget_Stars(Widget* const parent_widget) - : Widget("stars", parent_widget) {} - Widget_Stars(const cv::Mat& img, Widget* const parent_widget = nullptr) - : Widget("stars", parent_widget) + const std::string difficulty() const { return _difficulty; } + Widget_Difficulty() = default; + Widget_Difficulty(Widget* const parent_widget) + : Widget("difficulty", parent_widget) {} + Widget_Difficulty(const cv::Mat& img, Widget* const parent_widget = nullptr) + : Widget("difficulty", parent_widget) { set_img(img); } void set_img(const cv::Mat& img) { Widget::set_img(img); - if (_img.channels() == 3) - { - cv::cvtColor(_img, _img, cv::COLOR_BGR2GRAY); - cv::threshold(_img, _img, 127, 255, cv::THRESH_BINARY); - } } - Widget_Stars& analyze() + Widget_Difficulty& analyze() { if (!_img.empty()) { - _get_is_3stars(); + _get_difficulty(); } - if (_stars != 3) + if (_difficulty.empty()) { - push_exception(ERROR, ExcSubtypeFlags::EXC_FALSE); + push_exception(ERROR, ExcSubtypeFlags::EXC_ILLEGAL); } return *this; } @@ -398,48 +483,59 @@ public: rpt.merge_patch(Widget::report(debug)); if (!debug) { - rpt["count"] = _stars; + rpt["difficulty"] = _difficulty; } else { - rpt["count"] = _stars; + rpt["difficulty"] = _difficulty; } return rpt; } private: - int _stars = 0; - void _get_is_3stars() + std::string _difficulty; + void _get_difficulty() { - auto& self = *this; - auto star_img = _img; - auto sp_ = separate(star_img, DirectionFlags::RIGHT, 1); - auto laststar_range = separate(star_img, DirectionFlags::RIGHT, 1)[0]; - auto laststar = star_img(cv::Range(0, height), laststar_range); - auto starrect = cv::boundingRect(laststar); - if (starrect.empty()) + auto img_bin = _img; + cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); + cv::threshold(img_bin, img_bin, 25, 255, cv::THRESH_BINARY); + auto diff_rect = cv::boundingRect(img_bin); + if (diff_rect.empty()) { return; } - auto sp = separate(star_img(cv::Rect(0, 0, width, height / 2)), DirectionFlags::LEFT); - for (auto it = sp.cbegin(); it != sp.cend();) + _img = _img(diff_rect); + auto& self = *this; + self._relate(diff_rect.tl()); + + int diff_count = 0; + + if (!(height < width / 4)) { - const auto& range = *it; - if (auto length = range.end - range.start; - length < height * STAR_WIDTH_PROP) - { - it = sp.erase(it); - } - else - { - ++it; - } + img_bin = _img; + cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); + cv::threshold(img_bin, img_bin, 200, 255, cv::THRESH_BINARY); + int inspction_line = 0.8 * cv::boundingRect(img_bin).y; + + img_bin = _img; + cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); + cv::threshold(img_bin, img_bin, 64, 255, cv::THRESH_BINARY); + auto diff_img = img_bin(cv::Rect(0, inspction_line, width, 1)); + diff_count = separate(diff_img, DirectionFlags::LEFT).size(); + } + + switch (diff_count) + { + case 0: + case 2: + _difficulty = "NORMAL"; + break; + case 3: + _difficulty = "TOUGH"; + break; + default: + break; } - starrect.x = sp.front().start; - starrect.width = sp.back().end - starrect.x; - _img = star_img = star_img(starrect); - self._relate(starrect.tl()); - _stars = static_cast(sp.size()); } }; @@ -506,7 +602,7 @@ private: { continue; } - int dist = static_cast(abs(kh - hsv[H])); + int dist = abs(kh - hsv[H]); _candidates.emplace_back(vtype, dist); } std::sort(_candidates.begin(), _candidates.end(), @@ -616,7 +712,7 @@ private: while (droptextimg.rows > 0) { cv::Mat topline = droptextimg.row(0); - int meanval = static_cast(cv::mean(topline)[0]); + int meanval = cv::mean(topline)[0]; if (meanval < 127) { break; @@ -627,13 +723,13 @@ private: self.y++; } } - auto droptextrect = cv::boundingRect(droptextimg); - if (droptextrect.empty()) + auto droptext_rect = cv::boundingRect(droptextimg); + if (droptext_rect.empty()) { return; } - droptextimg = droptextimg(droptextrect); - self._relate(droptextrect.tl()); + droptextimg = droptextimg(droptext_rect); + self._relate(droptext_rect.tl()); } }; @@ -684,7 +780,7 @@ public: } private: - int _items_count = static_cast(round(width / (height * W_H_PROP))); + int _items_count = round(width / (height * W_H_PROP)); Widget_DroptypeLine _line {this}; Widget_DroptypeText _text {this}; void _get_candidates() @@ -719,9 +815,10 @@ public: Widget_DropArea() = default; Widget_DropArea(Widget* const parent_widget) : Widget("dropArea", parent_widget) {} - Widget_DropArea(const cv::Mat& img, [[maybe_unused]] const std::string& stage, Widget* const parent_widget = nullptr) + Widget_DropArea(const cv::Mat& img, Widget* const parent_widget = nullptr) : Widget(img, "dropArea", parent_widget) {} - Widget_DropArea& analyze(const std::string& stage) + Widget_DropArea& analyze(const std::string& stage, + const std::string& difficulty) { if (!_img.empty()) { @@ -742,7 +839,7 @@ public: widget_label = "droptypes"; push_exception(ERROR, ExcSubtypeFlags::EXC_ILLEGAL); } - _get_drops(stage); + _get_drops(stage, difficulty); } else { @@ -762,13 +859,13 @@ public: rpt["dropTypes"] = dict::array(); rpt["drops"] = dict::array(); - size_t droptypes_count = _droptype_list.size(); // will move in "for" in C++20 - for (size_t i = 0; i < droptypes_count; i++) + int droptypes_count = _droptype_list.size(); // will move in "for" in C++20 + for (int i = 0; i < droptypes_count; i++) { rpt["dropTypes"].push_back(_droptype_list[i].report(debug)); } - size_t drops_count = _drop_list.size(); // will move in "for" in C++20 - for (size_t i = 0; i < drops_count; i++) + int drops_count = _drop_list.size(); // will move in "for" in C++20 + for (int i = 0; i < drops_count; i++) { rpt["drops"].push_back( {{"dropType", Droptype2Str[_drop_list[i].droptype]}}); @@ -785,7 +882,7 @@ private: auto _get_separate() { cv::Mat img_bin = _img; - int offset = static_cast(round(height * 0.75)); + int offset = round(height * 0.75); img_bin.adjustROI(-offset, 0, 0, 0); cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::adaptiveThreshold(img_bin, img_bin, 255, cv::ADAPTIVE_THRESH_MEAN_C, @@ -814,11 +911,12 @@ private: } int baseline_h = row + offset; auto sp = separate(img_bin(cv::Rect(0, row, width, 1)), DirectionFlags::LEFT); - int item_diameter = static_cast(height / DROP_AREA_HEIGHT_PROP * ITEM_DIAMETER_PROP); + int item_diameter = height / DROP_AREA_HEIGHT_PROP * ITEM_DIAMETER_PROP; for (auto it = sp.cbegin(); it != sp.cend();) { const auto& range = *it; - if (auto length = range.end - range.start; length < item_diameter) + if (const auto length = range.end - range.start; + length < item_diameter) { it = sp.erase(it); } @@ -887,13 +985,13 @@ private: _droptype_list = q.top(); } - void _get_drops(std::string stage) + void _get_drops(const std::string& stage, const std::string& difficulty) { if (_status == StatusFlags::HAS_ERROR || _status == StatusFlags::ERROR) { return; } - int item_diameter = static_cast(height / DROP_AREA_HEIGHT_PROP * ITEM_DIAMETER_PROP); + int item_diameter = height / DROP_AREA_HEIGHT_PROP * ITEM_DIAMETER_PROP; ItemTemplates templs {stage}; for (const auto& droptype : _droptype_list) { @@ -926,13 +1024,13 @@ private: int length = (droptype.width) / items_count; for (int i = 0; i < items_count; i++) { - std::string cur_label = + std::string label = "drops." + std::to_string(_drop_list.size()); auto range = cv::Range(droptype.x - x + length * i, droptype.x - x + length * (i + 1)); auto dropimg = _img(cv::Range(0, droptype.y - y), range); - Widget_Item drop {dropimg, item_diameter, cur_label, this}; + Widget_Item drop {dropimg, item_diameter, label, this}; drop.analyze(templs); _drop_list.emplace_back(drop, type); _drops_data.push_back({{"dropType", Droptype2Str[type]}, @@ -1108,10 +1206,10 @@ private: } const auto& bv = _baseline_v; auto drop_area_img = _img( - cv::Range(static_cast(bv.y + bv.height * DROP_AREA_Y_PROP), bv.y + bv.height), - cv::Range(static_cast(bv.x + bv.height * DROP_AREA_X_PROP), width)); + cv::Range(bv.y + bv.height * DROP_AREA_Y_PROP, bv.y + bv.height), + cv::Range(bv.x + bv.height * DROP_AREA_X_PROP, width)); _drop_area.set_img(drop_area_img); - _drop_area.analyze(_stage.stage_code()); + _drop_area.analyze(_stage.stage_code(), "NORMAL"); } }; @@ -1127,6 +1225,8 @@ public: _get_result_label(); _get_stars(); _get_stage(); + _get_difficulty(); + _stage._set_difficulty(_difficutly.difficulty()); _get_drop_area(); return *this; } @@ -1146,6 +1246,7 @@ public: { rpt["resultLabel"] = _result_label.report()["isResult"]; rpt["stage"] = _stage.report(); + rpt["difficulty"] = _difficutly.report()["difficulty"]; rpt["stars"] = _stars.report()["count"]; rpt["dropArea"] = _drop_area.report(); } @@ -1153,6 +1254,7 @@ public: { rpt["resultLabel"] = _result_label.report(debug); rpt["stage"] = _stage.report(debug); + rpt["difficulty"] = _difficutly.report(debug); rpt["stars"] = _stars.report(debug); rpt["dropArea"] = _drop_area.report(debug); } @@ -1161,8 +1263,9 @@ public: private: Widget _baseline_v {this}; - Widget_Stage _stage {this}; Widget_Stars _stars {this}; + Widget_Stage _stage {this}; + Widget_Difficulty _difficutly {this}; Widget_ResultLabel _result_label {this}; Widget_DropArea _drop_area {this}; @@ -1172,11 +1275,7 @@ private: { return; } - cv::Mat img_bin = _img(cv::Rect( - 0, - static_cast(0.2 * height), - static_cast(0.2 * width), - static_cast(0.4 * height))); + cv::Mat img_bin = _img(cv::Rect(0, 0.2 * height, 0.2 * width, 0.4 * height)); cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 120, 255, cv::THRESH_BINARY); @@ -1192,7 +1291,7 @@ private: abs(img_temp.cols - last_height) <= 1 && abs(first_height - last_height) <= 1) { - baseline_v_rect = cv::Rect(range.start, sp2.front().start + static_cast(0.2 * height), + baseline_v_rect = cv::Rect(range.start, sp2.front().start + 0.2 * height, img_temp.cols, sp2.back().end - sp2.front().start); break; } @@ -1219,11 +1318,7 @@ private: : x(x_), y(y_), width(width_), height(height_), area(area_) {} }; - cv::Mat img_bin = _img(cv::Rect( - 0, - static_cast(0.2 * height), - static_cast(0.2 * width), - static_cast(0.4 * height))); + cv::Mat img_bin = _img(cv::Rect(0, 0.2 * height, 0.2 * width, 0.4 * height)); cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 120, 255, cv::THRESH_BINARY); cv::Mat _; @@ -1265,7 +1360,7 @@ private: if (ccomps[0].x == ccomps[1].x) { baseline_v_rect = cv::Rect(ccomps[0].x, - ccomps[0].y + static_cast(0.2 * height), + ccomps[0].y + 0.2 * height, ccomps[0].width, ccomps[1].y - ccomps[0].y + ccomps[1].height); } @@ -1277,7 +1372,7 @@ private: { if (ccomps[i].x == ccomps[i + 1].x) baseline_v_rect = cv::Rect(ccomps[i].x, - ccomps[i].y + static_cast(0.2 * height), + ccomps[i].y + 0.2 * height, ccomps[i].width, ccomps[i + 1].y - ccomps[i].y + ccomps[i + 1].height); } @@ -1302,8 +1397,9 @@ private: return; } const auto& bv = _baseline_v; - auto result_img = _img(cv::Rect(bv.x + bv.width, bv.y, - static_cast(1.6 * bv.height), bv.height)); + int left_margin = bv.x + bv.width; + auto result_img = _img(cv::Range(bv.y, bv.y + bv.height / 2), + cv::Range(left_margin, left_margin + 1.5 * bv.height)); cv::Mat img_bin; cv::cvtColor(result_img, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 200, 255, cv::THRESH_BINARY); @@ -1319,8 +1415,9 @@ private: return; } const auto& bv = _baseline_v; - auto star_img = _img(cv::Rect(bv.x + bv.width, bv.y, - static_cast(1.2 * bv.height), bv.height)); + int left_margin = bv.x + bv.width; + auto star_img = _img(cv::Range(bv.y + bv.height / 2, bv.y + bv.height), + cv::Range(left_margin, left_margin + 1.2 * bv.height)); cv::Mat img_bin; cv::cvtColor(star_img, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 127, 255, cv::THRESH_BINARY); @@ -1336,11 +1433,10 @@ private: return; } const auto& bv = _baseline_v; - auto stage_img = _img(cv::Rect( - static_cast(bv.x + bv.width + 0.43 * bv.height), - 0, - static_cast(1.6 * bv.height), - bv.y)); + int left_margin = bv.x + bv.width; + auto stage_img = _img(cv::Range(0, bv.y), + cv::Range(left_margin + 0.43 * bv.height, + left_margin + 1.5 * bv.height)); cv::Mat img_bin; cv::cvtColor(stage_img, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 200, 255, cv::THRESH_BINARY); @@ -1349,6 +1445,24 @@ private: _stage.set_img(stage_img); _stage.analyze(); } + void _get_difficulty() + { + if (_status == StatusFlags::HAS_ERROR || _status == StatusFlags::ERROR) + { + return; + } + const auto& bv = _baseline_v; + int left_margin = bv.x + bv.width; + auto diff_img = _img(cv::Range(0, bv.y), + cv::Range(left_margin, left_margin + 0.43 * bv.height)); + cv::Mat img_bin; + cv::cvtColor(diff_img, img_bin, cv::COLOR_BGR2GRAY); + cv::threshold(img_bin, img_bin, 25, 255, cv::THRESH_BINARY); + diff_img = diff_img(separate(img_bin, DirectionFlags::TOP, 1)[0], + cv::Range(0, img_bin.cols)); + _difficutly.set_img(diff_img); + _difficutly.analyze(); + } void _get_drop_area() { if (_status == StatusFlags::HAS_ERROR || _status == StatusFlags::ERROR) @@ -1357,18 +1471,19 @@ private: } const auto& bv = _baseline_v; cv::Mat img_bin = _img(cv::Range(bv.y + bv.height, height), - cv::Range(bv.x + bv.width, static_cast(0.2 * width))); + cv::Range(bv.x + bv.width, 0.2 * width)); cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 127, 255, cv::THRESH_BINARY); auto sp = separate(img_bin, DirectionFlags::TOP, 2); int top_margin = bv.y + bv.height + sp[1].start; auto drop_area_img = _img( - cv::Range(top_margin + static_cast(bv.height * DROP_AREA_Y_PROP), top_margin + bv.height), + cv::Range(top_margin + bv.height * DROP_AREA_Y_PROP, top_margin + bv.height), cv::Range(bv.x + bv.width, width)); _drop_area.set_img(drop_area_img); - _drop_area.analyze(_stage.stage_code()); + _drop_area.analyze(_stage.stage_code(), _difficutly.difficulty()); } }; + } // namespace penguin #endif // PENGUIN_RESULT_HPP_ diff --git a/README.md b/README.md index 4fea7053be..3495002523 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ MAA 的意思是 MAA Assistant Arknights - 图像识别库:[opencv](https://github.com/opencv/opencv.git) - ~~文字识别库:[chineseocr_lite](https://github.com/DayBreak-u/chineseocr_lite.git)~~ - 文字识别库:[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) -- 关卡掉落识别:[企鹅物流识别](https://github.com/KumoSiunaus/penguin-stats-recognize-v3) +- 关卡掉落识别:[企鹅物流识别](https://github.com/penguin-statistics/recognizer) - 地图格子识别:[Arknights-Tile-Pos](https://github.com/yuanyan3060/Arknights-Tile-Pos) - C++ JSON库:[meojson](https://github.com/MistEO/meojson.git) - C++ 运算符解析器:[calculator](https://github.com/kimwalisch/calculator) diff --git a/src/MeoAssistant/PenguinPack.cpp b/src/MeoAssistant/PenguinPack.cpp index 3a0dd0ee52..a370a6b6be 100644 --- a/src/MeoAssistant/PenguinPack.cpp +++ b/src/MeoAssistant/PenguinPack.cpp @@ -64,14 +64,23 @@ bool asst::PenguinPack::load_json(const std::string& stage_path, const std::stri stage_dst["drops"] = json::array(std::move(drops_vector)); stage_dst["existence"] = stage_info.at("existence").at(m_language).at("exist"); - cvt_stage_json[std::move(key)] = std::move(stage_dst); + // 企鹅识别 4.2 新增的字段,为了区分第十章的 标准关卡 or 磨难关卡 + json::value difficulty_json; + if (stage_dst["stageId"].as_string().find("tough_") == 0) { + difficulty_json["TOUGH"] = std::move(stage_dst); + } + else { + difficulty_json["NORMAL"] = std::move(stage_dst); + } + cvt_stage_json[std::move(key)] |= std::move(difficulty_json.as_object()); } } catch (json::exception& e) { m_last_error = stage_path + " parsing error " + e.what(); return false; } - ::wload_stage_index(cvt_stage_json.to_string()); + std::string cvt_string = cvt_stage_json.to_string(); + ::wload_stage_index(std::move(cvt_stage_json.to_string())); ::wload_hash_index(utils::load_file_without_bom(hash_path)); return true; diff --git a/src/MeoAssistant/README.md b/src/MeoAssistant/README.md index a8c8de1326..e31aaee7dc 100644 --- a/src/MeoAssistant/README.md +++ b/src/MeoAssistant/README.md @@ -12,7 +12,7 @@ - 图像识别库:[opencv](https://github.com/opencv/opencv.git) - ~~文字识别库:[chineseocr_lite](https://github.com/DayBreak-u/chineseocr_lite.git)~~ - 文字识别库:[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) -- 关卡掉落识别:[企鹅物流识别](https://github.com/KumoSiunaus/penguin-stats-recognize-v3) +- 关卡掉落识别:[企鹅物流识别](https://github.com/penguin-statistics/recognizer) - C++ JSON库:[meojson](https://github.com/MistEO/meojson.git) - C++ 运算符解析器:[calculator](https://github.com/kimwalisch/calculator) - C++ base64编解码:[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64) From 8d1ebe3b609fee1ad86f912353a9a683c53ddaeb Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 02:20:24 +0800 Subject: [PATCH 33/70] =?UTF-8?q?chore.=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7v3.2.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MeoAssistant/Version.h b/src/MeoAssistant/Version.h index 4613bb35a2..df263e901d 100644 --- a/src/MeoAssistant/Version.h +++ b/src/MeoAssistant/Version.h @@ -2,5 +2,5 @@ namespace asst { - constexpr static const char* Version = "v3.2.1"; + constexpr static const char* Version = "v3.2.2"; } From d354e7abf466fc291a242938637138c800864838 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Wed, 4 May 2022 14:30:30 +0800 Subject: [PATCH 34/70] =?UTF-8?q?chore.=E5=A2=9E=E5=8A=A0=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/Assistant.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/MeoAssistant/Assistant.cpp b/src/MeoAssistant/Assistant.cpp index e870aefb47..adb1423c35 100644 --- a/src/MeoAssistant/Assistant.cpp +++ b/src/MeoAssistant/Assistant.cpp @@ -184,6 +184,13 @@ bool asst::Assistant::append_fight(const std::string& stage, int mecidine, int s if (!m_inited) { return false; } + json::value params_info = json::object{ + { "stage", stage }, + { "mecidine", mecidine }, + { "stone", stone }, + { "times", times } + }; + Log.trace("asst::Assistant::append_fight | ", params_info.to_string()); constexpr const char* TaskChain = "Fight"; From e3114dbd0b97b89478d543920725d852fe192e1d Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Wed, 4 May 2022 14:19:03 +0800 Subject: [PATCH 35/70] =?UTF-8?q?fix.=E5=9C=A8=E5=9B=A0=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=AF=BC=E8=87=B4=E7=9A=84=E6=8C=87=E9=92=88?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E6=97=B6=E5=90=91=E6=97=A5=E5=BF=97=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/ProcessTask.cpp | 9 +++++++-- src/MeoAssistant/ProcessTaskImageAnalyzer.cpp | 5 +++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/MeoAssistant/ProcessTask.cpp b/src/MeoAssistant/ProcessTask.cpp index be44692bd8..905e337e7d 100644 --- a/src/MeoAssistant/ProcessTask.cpp +++ b/src/MeoAssistant/ProcessTask.cpp @@ -87,9 +87,14 @@ bool ProcessTask::_run() Rect rect; std::shared_ptr cur_task_ptr = nullptr; + auto front_task_ptr = Task.get(m_cur_tasks_name.front()); + // 可能有配置错误,导致不存在对应的任务 + if (front_task_ptr == nullptr) { + Log.error("Invalid task", m_cur_tasks_name.front()); + return false; + } // 如果第一个任务是JustReturn的,那就没必要再截图并计算了 - if (auto front_task_ptr = Task.get(m_cur_tasks_name.front()); - front_task_ptr->algorithm == AlgorithmType::JustReturn) { + if (front_task_ptr->algorithm == AlgorithmType::JustReturn) { cur_task_ptr = front_task_ptr; } else { diff --git a/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp b/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp index 4230644a7a..2a008f105c 100644 --- a/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp +++ b/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp @@ -98,6 +98,11 @@ bool asst::ProcessTaskImageAnalyzer::analyze() for (const std::string& task_name : m_tasks_name) { auto task_ptr = Task.get(task_name); + // 可能有配置错误,导致不存在对应的任务 + if (task_ptr == nullptr) { + Log.error("Invalid task", task_name); + continue; + } switch (task_ptr->algorithm) { case AlgorithmType::JustReturn: From 56566b4209bf65c46a971f1eecca518b584acbe4 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 21:55:59 +0800 Subject: [PATCH 36/70] =?UTF-8?q?chore.=E6=9B=B4=E6=96=B0=E4=BC=81?= =?UTF-8?q?=E9=B9=85=E8=AF=86=E5=88=AB=E5=BA=93=E5=88=B0=20v4.2.3=20?= =?UTF-8?q?=E7=89=88=E6=9C=AC=EF=BC=8C=E4=BF=AE=E5=A4=8D=E7=A3=A8=E9=9A=BE?= =?UTF-8?q?=E5=85=B3=E5=8D=A1=E7=9A=84=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../include/penguin-stats-recognize/depot.hpp | 8 +- .../penguin-stats-recognize/recognize.hpp | 11 ++- .../penguin-stats-recognize/recognizer.hpp | 2 +- .../penguin-stats-recognize/result.hpp | 81 +++++++++++-------- 4 files changed, 57 insertions(+), 45 deletions(-) diff --git a/3rdparty/include/penguin-stats-recognize/depot.hpp b/3rdparty/include/penguin-stats-recognize/depot.hpp index 704a51de9d..b2ab6b3c59 100644 --- a/3rdparty/include/penguin-stats-recognize/depot.hpp +++ b/3rdparty/include/penguin-stats-recognize/depot.hpp @@ -16,7 +16,6 @@ using dict = nlohmann::ordered_json; namespace penguin { - enum CircleFlags { X = 0, @@ -37,7 +36,7 @@ public: _get_item_list(); return *this; } - const dict report(bool debug = false) + const dict report([[maybe_unused]] bool debug = false) { dict _report = dict::object(); return _report; @@ -113,7 +112,7 @@ private: } } } - _item_diameter = round(cv::mean(item_circles)[R] * 2); + _item_diameter = static_cast(round(cv::mean(item_circles)[R] * 2)); for (const cv::Vec3i& c : item_circles) { @@ -128,7 +127,7 @@ private: // show_img(img_blur); int radius = _item_diameter / 2; - int offset = radius * 1.2; + int offset = static_cast(radius * 1.2); ItemTemplates templs; for (const cv::Vec3i& c : item_circles) { @@ -157,7 +156,6 @@ private: // show_img(_img_ext); } }; - } // namespace penguin #endif // PENGUIN_DEPOT_HPP_ diff --git a/3rdparty/include/penguin-stats-recognize/recognize.hpp b/3rdparty/include/penguin-stats-recognize/recognize.hpp index 5a7afce53e..bd0327d908 100644 --- a/3rdparty/include/penguin-stats-recognize/recognize.hpp +++ b/3rdparty/include/penguin-stats-recognize/recognize.hpp @@ -15,7 +15,6 @@ using dict = nlohmann::ordered_json; namespace penguin { - enum class StatusFlags { NORMAL = 0, @@ -823,8 +822,8 @@ private: topleft_new.x *= coeff_multiinv; topleft_new.y *= coeff_multiinv; cv::Size size_new = cv::Size( - round(TEMPLATE_WIDTH * ((double)_diameter / TEMPLATE_DIAMETER)), - round(TEMPLATE_HEIGHT * ((double)_diameter / TEMPLATE_DIAMETER))); + static_cast(round(TEMPLATE_WIDTH * ((double)_diameter / TEMPLATE_DIAMETER))), + static_cast(round(TEMPLATE_HEIGHT * ((double)_diameter / TEMPLATE_DIAMETER)))); if (topleft_new.x + size_new.width > width) { size_new.width = width - topleft_new.x; @@ -843,9 +842,9 @@ private: } void _get_quantity() { - cv::Rect quantityrect = cv::Rect(0, round(height * _ITEM_QTY_Y_PROP), - round(width * _ITEM_QTY_WIDTH_PROP), - round(height * _ITEM_QTY_HEIGHT_PROP)); + cv::Rect quantityrect = cv::Rect(0, static_cast(round(height * _ITEM_QTY_Y_PROP)), + static_cast(round(width * _ITEM_QTY_WIDTH_PROP)), + static_cast(round(height * _ITEM_QTY_HEIGHT_PROP))); cv::Mat quantityimg = _img(quantityrect); _quantity.set_img(quantityimg); _quantity.analyze(); diff --git a/3rdparty/include/penguin-stats-recognize/recognizer.hpp b/3rdparty/include/penguin-stats-recognize/recognizer.hpp index 3823a598b7..070664a2c2 100644 --- a/3rdparty/include/penguin-stats-recognize/recognizer.hpp +++ b/3rdparty/include/penguin-stats-recognize/recognizer.hpp @@ -18,7 +18,7 @@ #include "depot.hpp" #include "result.hpp" -static const std::string version = "4.2.2"; +static const std::string version = "4.2.3"; static const std::string opencv_version = CV_VERSION; cv::Mat decode(std::string JSarrayBuffer) diff --git a/3rdparty/include/penguin-stats-recognize/result.hpp b/3rdparty/include/penguin-stats-recognize/result.hpp index 2c6526ae11..5623a8af71 100644 --- a/3rdparty/include/penguin-stats-recognize/result.hpp +++ b/3rdparty/include/penguin-stats-recognize/result.hpp @@ -14,7 +14,7 @@ #include "recognize.hpp" using dict = nlohmann::ordered_json; -extern void show_img(cv::Mat src); +// extern void show_img(cv::Mat src); namespace penguin { // result @@ -195,7 +195,7 @@ public: } private: - int _stars = 0; + size_t _stars = 0; void _get_is_3stars() { auto& self = *this; @@ -498,7 +498,7 @@ private: { auto img_bin = _img; cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); - cv::threshold(img_bin, img_bin, 25, 255, cv::THRESH_BINARY); + cv::threshold(img_bin, img_bin, 64, 255, cv::THRESH_BINARY); auto diff_rect = cv::boundingRect(img_bin); if (diff_rect.empty()) { @@ -508,20 +508,24 @@ private: auto& self = *this; self._relate(diff_rect.tl()); - int diff_count = 0; + size_t diff_count = 0; - if (!(height < width / 4)) + if (!(height < width / 6)) { img_bin = _img; cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 200, 255, cv::THRESH_BINARY); - int inspction_line = 0.8 * cv::boundingRect(img_bin).y; + int inspction_line = static_cast(0.8 * cv::boundingRect(img_bin).y); + int offset = img_bin.rows; img_bin = _img; cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 64, 255, cv::THRESH_BINARY); auto diff_img = img_bin(cv::Rect(0, inspction_line, width, 1)); diff_count = separate(diff_img, DirectionFlags::LEFT).size(); + + _img.adjustROI(static_cast(1.2 * offset), static_cast(1.2 * offset), 0, 0); + y = y - static_cast(1.2 * offset); } switch (diff_count) @@ -602,7 +606,7 @@ private: { continue; } - int dist = abs(kh - hsv[H]); + int dist = static_cast(abs(kh - hsv[H])); _candidates.emplace_back(vtype, dist); } std::sort(_candidates.begin(), _candidates.end(), @@ -712,7 +716,7 @@ private: while (droptextimg.rows > 0) { cv::Mat topline = droptextimg.row(0); - int meanval = cv::mean(topline)[0]; + int meanval = static_cast(cv::mean(topline)[0]); if (meanval < 127) { break; @@ -780,7 +784,7 @@ public: } private: - int _items_count = round(width / (height * W_H_PROP)); + int _items_count = static_cast(round(width / (height * W_H_PROP))); Widget_DroptypeLine _line {this}; Widget_DroptypeText _text {this}; void _get_candidates() @@ -859,12 +863,12 @@ public: rpt["dropTypes"] = dict::array(); rpt["drops"] = dict::array(); - int droptypes_count = _droptype_list.size(); // will move in "for" in C++20 + size_t droptypes_count = _droptype_list.size(); // will move in "for" in C++20 for (int i = 0; i < droptypes_count; i++) { rpt["dropTypes"].push_back(_droptype_list[i].report(debug)); } - int drops_count = _drop_list.size(); // will move in "for" in C++20 + size_t drops_count = _drop_list.size(); // will move in "for" in C++20 for (int i = 0; i < drops_count; i++) { rpt["drops"].push_back( @@ -882,7 +886,7 @@ private: auto _get_separate() { cv::Mat img_bin = _img; - int offset = round(height * 0.75); + int offset = static_cast(round(height * 0.75)); img_bin.adjustROI(-offset, 0, 0, 0); cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::adaptiveThreshold(img_bin, img_bin, 255, cv::ADAPTIVE_THRESH_MEAN_C, @@ -911,7 +915,7 @@ private: } int baseline_h = row + offset; auto sp = separate(img_bin(cv::Rect(0, row, width, 1)), DirectionFlags::LEFT); - int item_diameter = height / DROP_AREA_HEIGHT_PROP * ITEM_DIAMETER_PROP; + int item_diameter = static_cast(height / DROP_AREA_HEIGHT_PROP * ITEM_DIAMETER_PROP); for (auto it = sp.cbegin(); it != sp.cend();) { const auto& range = *it; @@ -985,13 +989,13 @@ private: _droptype_list = q.top(); } - void _get_drops(const std::string& stage, const std::string& difficulty) + void _get_drops(const std::string& stage, [[maybe_unused]] const std::string& difficulty) { if (_status == StatusFlags::HAS_ERROR || _status == StatusFlags::ERROR) { return; } - int item_diameter = height / DROP_AREA_HEIGHT_PROP * ITEM_DIAMETER_PROP; + int item_diameter = static_cast(height / DROP_AREA_HEIGHT_PROP * ITEM_DIAMETER_PROP); ItemTemplates templs {stage}; for (const auto& droptype : _droptype_list) { @@ -1024,13 +1028,13 @@ private: int length = (droptype.width) / items_count; for (int i = 0; i < items_count; i++) { - std::string label = + std::string cur_label = "drops." + std::to_string(_drop_list.size()); auto range = cv::Range(droptype.x - x + length * i, droptype.x - x + length * (i + 1)); auto dropimg = _img(cv::Range(0, droptype.y - y), range); - Widget_Item drop {dropimg, item_diameter, label, this}; + Widget_Item drop {dropimg, item_diameter, cur_label, this}; drop.analyze(templs); _drop_list.emplace_back(drop, type); _drops_data.push_back({{"dropType", Droptype2Str[type]}, @@ -1206,8 +1210,8 @@ private: } const auto& bv = _baseline_v; auto drop_area_img = _img( - cv::Range(bv.y + bv.height * DROP_AREA_Y_PROP, bv.y + bv.height), - cv::Range(bv.x + bv.height * DROP_AREA_X_PROP, width)); + cv::Range(static_cast(bv.y + bv.height * DROP_AREA_Y_PROP), bv.y + bv.height), + cv::Range(static_cast(bv.x + bv.height * DROP_AREA_X_PROP), width)); _drop_area.set_img(drop_area_img); _drop_area.analyze(_stage.stage_code(), "NORMAL"); } @@ -1275,7 +1279,11 @@ private: { return; } - cv::Mat img_bin = _img(cv::Rect(0, 0.2 * height, 0.2 * width, 0.4 * height)); + cv::Mat img_bin = _img(cv::Rect( + 0, + static_cast(0.2 * height), + static_cast(0.2 * width), + static_cast(0.4 * height))); cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 120, 255, cv::THRESH_BINARY); @@ -1285,13 +1293,17 @@ private: { cv::Mat img_temp = img_bin(cv::Range(0, img_bin.rows), range); auto sp2 = separate(img_temp, DirectionFlags::TOP); + if (sp2.size() < 2) + { + break; + } int first_height = sp2.front().end - sp2.front().start; int last_height = sp2.back().end - sp2.back().start; if (abs(img_temp.cols - first_height) <= 1 && abs(img_temp.cols - last_height) <= 1 && abs(first_height - last_height) <= 1) { - baseline_v_rect = cv::Rect(range.start, sp2.front().start + 0.2 * height, + baseline_v_rect = cv::Rect(range.start, sp2.front().start + static_cast(0.2 * height), img_temp.cols, sp2.back().end - sp2.front().start); break; } @@ -1318,7 +1330,11 @@ private: : x(x_), y(y_), width(width_), height(height_), area(area_) {} }; - cv::Mat img_bin = _img(cv::Rect(0, 0.2 * height, 0.2 * width, 0.4 * height)); + cv::Mat img_bin = _img(cv::Rect( + 0, + static_cast(0.2 * height), + static_cast(0.2 * width), + static_cast(0.4 * height))); cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 120, 255, cv::THRESH_BINARY); cv::Mat _; @@ -1360,7 +1376,7 @@ private: if (ccomps[0].x == ccomps[1].x) { baseline_v_rect = cv::Rect(ccomps[0].x, - ccomps[0].y + 0.2 * height, + ccomps[0].y + static_cast(0.2 * height), ccomps[0].width, ccomps[1].y - ccomps[0].y + ccomps[1].height); } @@ -1372,7 +1388,7 @@ private: { if (ccomps[i].x == ccomps[i + 1].x) baseline_v_rect = cv::Rect(ccomps[i].x, - ccomps[i].y + 0.2 * height, + ccomps[i].y + static_cast(0.2 * height), ccomps[i].width, ccomps[i + 1].y - ccomps[i].y + ccomps[i + 1].height); } @@ -1399,7 +1415,7 @@ private: const auto& bv = _baseline_v; int left_margin = bv.x + bv.width; auto result_img = _img(cv::Range(bv.y, bv.y + bv.height / 2), - cv::Range(left_margin, left_margin + 1.5 * bv.height)); + cv::Range(left_margin, static_cast(left_margin + 1.5 * bv.height))); cv::Mat img_bin; cv::cvtColor(result_img, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 200, 255, cv::THRESH_BINARY); @@ -1417,7 +1433,7 @@ private: const auto& bv = _baseline_v; int left_margin = bv.x + bv.width; auto star_img = _img(cv::Range(bv.y + bv.height / 2, bv.y + bv.height), - cv::Range(left_margin, left_margin + 1.2 * bv.height)); + cv::Range(left_margin, static_cast(left_margin + 1.2 * bv.height))); cv::Mat img_bin; cv::cvtColor(star_img, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 127, 255, cv::THRESH_BINARY); @@ -1435,8 +1451,8 @@ private: const auto& bv = _baseline_v; int left_margin = bv.x + bv.width; auto stage_img = _img(cv::Range(0, bv.y), - cv::Range(left_margin + 0.43 * bv.height, - left_margin + 1.5 * bv.height)); + cv::Range(static_cast(left_margin + 0.43 * bv.height), + static_cast(left_margin + 1.5 * bv.height))); cv::Mat img_bin; cv::cvtColor(stage_img, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 200, 255, cv::THRESH_BINARY); @@ -1454,10 +1470,10 @@ private: const auto& bv = _baseline_v; int left_margin = bv.x + bv.width; auto diff_img = _img(cv::Range(0, bv.y), - cv::Range(left_margin, left_margin + 0.43 * bv.height)); + cv::Range(left_margin, static_cast(left_margin + 0.43 * bv.height))); cv::Mat img_bin; cv::cvtColor(diff_img, img_bin, cv::COLOR_BGR2GRAY); - cv::threshold(img_bin, img_bin, 25, 255, cv::THRESH_BINARY); + cv::threshold(img_bin, img_bin, 64, 255, cv::THRESH_BINARY); diff_img = diff_img(separate(img_bin, DirectionFlags::TOP, 1)[0], cv::Range(0, img_bin.cols)); _difficutly.set_img(diff_img); @@ -1471,19 +1487,18 @@ private: } const auto& bv = _baseline_v; cv::Mat img_bin = _img(cv::Range(bv.y + bv.height, height), - cv::Range(bv.x + bv.width, 0.2 * width)); + cv::Range(bv.x + bv.width, static_cast(0.2 * width))); cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 127, 255, cv::THRESH_BINARY); auto sp = separate(img_bin, DirectionFlags::TOP, 2); int top_margin = bv.y + bv.height + sp[1].start; auto drop_area_img = _img( - cv::Range(top_margin + bv.height * DROP_AREA_Y_PROP, top_margin + bv.height), + cv::Range(top_margin + static_cast(bv.height * DROP_AREA_Y_PROP), top_margin + bv.height), cv::Range(bv.x + bv.width, width)); _drop_area.set_img(drop_area_img); _drop_area.analyze(_stage.stage_code(), _difficutly.difficulty()); } }; - } // namespace penguin #endif // PENGUIN_RESULT_HPP_ From fe7eb9fe34a579c15d67e1d523462d98d396fc31 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 22:06:37 +0800 Subject: [PATCH 37/70] chore. Update issue templates --- .github/ISSUE_TEMPLATE/-----bug-report-.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/-----bug-report-.md b/.github/ISSUE_TEMPLATE/-----bug-report-.md index 769fbef4c9..9202b7df2d 100644 --- a/.github/ISSUE_TEMPLATE/-----bug-report-.md +++ b/.github/ISSUE_TEMPLATE/-----bug-report-.md @@ -7,7 +7,9 @@ assignees: '' --- -请附上助手软件目录下的`asst.log`日志文件,是可以直接拖拽进来的。 +!!!请尽可能详细的描述你遇到的问题,并附上助手软件目录下的 `asst.log` 日志文件!!! + +!!!日志文件是可以直接拖拽进来的,没有日志文件的 bug 反馈我会直接关掉!!! 最好再能说明下使用的模拟器、并附上出错时的游戏和软件的截图(要是没截到就算啦_(:з」∠)_ From 8e9d39cfa6614f2857a1231010952c5e0c3de373 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 22:12:30 +0800 Subject: [PATCH 38/70] =?UTF-8?q?fix.=E6=9B=B4=E6=8D=A2=E4=BD=9C=E6=88=98?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E7=9A=84=E8=AF=86=E5=88=AB=E6=A0=87=E5=BF=97?= =?UTF-8?q?=EF=BC=8C=E4=BF=AE=E5=A4=8D=E5=8D=87=E7=BA=A7=E3=80=81=E5=89=BF?= =?UTF-8?q?=E7=81=AD=E7=AD=89=E7=9A=84=E6=8E=89=E8=90=BD=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/426 --- resource/tasks.json | 12 ++++-------- resource/template/EndOfAction.png | Bin 0 -> 1922 bytes 2 files changed, 4 insertions(+), 8 deletions(-) create mode 100644 resource/template/EndOfAction.png diff --git a/resource/tasks.json b/resource/tasks.json index 5d2a123ad9..56b7b201d1 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -1033,15 +1033,11 @@ ] }, "EndOfAction": { - "algorithm": "OcrDetect", - "text": [ - "行动结束" - ], "roi": [ - 0, - 120, - 440, - 600 + 11, + 357, + 153, + 143 ], "action": "doNothing", "next": [ diff --git a/resource/template/EndOfAction.png b/resource/template/EndOfAction.png new file mode 100644 index 0000000000000000000000000000000000000000..26c77a7fe3bd09ea0bc45966e80f76e04476d078 GIT binary patch literal 1922 zcmY*acQ_kr7gt45GitV4Pozbq@o9~6Z9;-tv8md`9yKl+TL?nTUX&{}+FA)>-550! zihK2=r72&`)~c0THR?0&KlhLKJnfSXf{lZlCm8xGU6IJJtW zOO~Dabhoj!dB??cqyp9fNk_1Vx0BA*|+YAwqKM7``dU?y36 zYuE2Bm7bJNG}A)AJ4Qq3yEu8*$oUHXb`DX=6e$xi`D+&zSDgLti?f5?EWI$%g<%;8 zzRBqD6Y?-6ua6I;UlQT8@vEP_z%IkXXSAd3l2F1dn|0vz>xYD>5-Ofiw0+5!@kqz557fYLBc5^U!)`ICkNHzU=RG&Oy^cJWThM;k@F(&WcQ+{0LB-#xe-tDs)TQg|m+=qhId1)0zm* z#ULTMhSV+2hwMVUYg}9Bo@;Xd`o(?fxaxJj8pl~+Q2mRyouU2=X*N5f-4Ec$4THQe z758j*EPY!w8pRDr#4@&eWbL~i$)L{xjVzcS+dpUz-#aP9Va%X!Z1mcg z$5&;xrlTmP5JDVj{aEMv>|(<&lck{8Ufn@YrJhMKh`SWxGazvDi zu8ud8@d)xBDktf z3~DNO>!$N4L~&DaF6CU(bvSJo@yoB^w8!<*~9jyXtwe-E99X6KI;z<>MIIGpHZiwdZcLX*S4Cr0FgSCLBCMkq7W!bhR zwrAdpvE;&*k9DSIwHt47z6nr$xcAUWyo+c`7z9qJS#zcn@jBr;$ zK-WA+uemNy{-w>XoWD)PT0)zz;`C3uL-I)DW~C0;D|HX$tn4wA+YHm&o?$!Pc=Q(m zrhHhjBNj~iTF7R}DA5Vkoz}e$S_(=y{Z+mrfa{$1lL~k??W-RJE)?1KErf;d*rxEE zVNP|m6T!ROJm$G$M=lVaE0-{0&Q781Un6qyiY z83}h(O!it;c$267q&aj{U_HPy`yYt+A@BBDm`}jMU#x$V#ZrV$Q(zQW=X2835Y@pi z;a>MneCUIdF+ohe!PI0Mu&b_i%CfCe_eh~QEruhRmFr%q#0^1Y)#T36Xi=otbgjpD zHLbbmnLqntudEQUTtYV#9Ej?DZeC(eC7g8$w;U0w5XyYa;x-IZX-4U44(%Mo+Wx!? zY2U&?{iI=#DIoEL?-nU&Th9<9Vy&kA@NS3*V(?Ab+8U^}vj^uU(a#Y=7fk>MPRaN=o7x85(bKQjTsO~dI=n%0IVHf7JEw2SJ&yd?p^fg)9NphTF=h8r8c-L zuZ6#-4U)f>M5`Wa{KRBNzv|AzFrCX!xAJ~fM%A^csYumE=YV5M3ujq_OAh{bL6r&- zYk3na=PNWlW9ay}vv#KZ!^x;ySPL+&;f!*H%ztPh#LcpiR~8d?-s-(M4Dx>cjdUXj z*_Hn~=e+DRw9mS3_HE*aPqI}&Z=WTs;$2=s ziKFmB-+r6M^prY`lEvde4+MLL^NI%G%5(MPA)${u7qsQIg2ELiJpd9D9N9O}$7tjM z=f9x#U709=5aFFlVSZSP+67xKK71KW3Y!a)6m}w}aYMp&e{x6E(^w)TS==t6;k)Mh32xW8BsqAA z1U5Gv%xrWE2VFGSBku7dL1d5?7awvFnBFsC;Lfj-dIYQBm%!;);LiQzwIb6_5`#Dj zMI`9A+1M9>%4uMrDL$*Rte;69ma5%rqyq`br2uy%anK3@d>KW;G2!G=Vxk}Aewm^9 Q>1<_!LrwJRb(|Ca4`Cv#DF6Tf literal 0 HcmV?d00001 From 417cf52a7f6e628a400c3d957325032445283d8f Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 16 Mar 2022 22:10:22 +0800 Subject: [PATCH 39/70] =?UTF-8?q?feat.=E6=96=B0=E5=A2=9E=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=B4=B8=E6=98=93=E7=AB=99`=E6=BA=90=E7=9F=B3=E7=A2=8E?= =?UTF-8?q?=E7=89=87`=E8=87=AA=E5=8A=A8=E8=A1=A5=E8=B4=A7=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 23 + resource/template/ReplenishToMax.png | Bin 0 -> 1711 bytes resource/template/ReplenishToMaxConfirm.png | Bin 0 -> 2098 bytes src/MeoAssistant/Assistant.cpp | 4 +- src/MeoAssistant/MeoAssistant.vcxproj | 552 +++++------ src/MeoAssistant/MeoAssistant.vcxproj.filters | 860 +++++++++--------- .../ReplenishOriginiumShardTaskPlugin.cpp | 25 + .../ReplenishOriginiumShardTaskPlugin.h | 18 + src/MeoAssistant/StageDropsTaskPlugin.cpp | 13 +- src/MeoAssistant/StageDropsTaskPlugin.h | 1 + 10 files changed, 787 insertions(+), 709 deletions(-) create mode 100644 resource/template/ReplenishToMax.png create mode 100644 resource/template/ReplenishToMaxConfirm.png create mode 100644 src/MeoAssistant/ReplenishOriginiumShardTaskPlugin.cpp create mode 100644 src/MeoAssistant/ReplenishOriginiumShardTaskPlugin.h diff --git a/resource/tasks.json b/resource/tasks.json index 56b7b201d1..1427ee4fd0 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -2594,6 +2594,29 @@ "template": "DroneAssistTrade.png", "action": "stop" }, + "ReplenishToMax": { + "action": "ClickSelf", + "roi": [ + 882, + 128, + 165, + 149 + ], + "rearDelay": 1000, + "next": [ + "ReplenishToMaxConfirm", + "Stop" + ] + }, + "ReplenishToMaxConfirm": { + "action": "ClickSelf", + "roi": [ + 854, + 504, + 192, + 187 + ] + }, "ShamareThumbnail": { "algorithm": "JustReturn", "action": "doNothing", diff --git a/resource/template/ReplenishToMax.png b/resource/template/ReplenishToMax.png new file mode 100644 index 0000000000000000000000000000000000000000..912f2ff9bee9887bee6f24314f93de3d5809f6e6 GIT binary patch literal 1711 zcmbtVdsxy}82;r@5Eb#h)EPRQb91KT2uh(05lghl3u2*Wq@#koq){mrPX^_s<;?Mr z_Gq(t1C(@RPMLYZVvdkf%kuh|y1Yg=FSGr&KeoU3?2qr9=Q-#3zVE!}ecy9Ld&7b) z;Er$r04zc%BpNvH1j83*1ded!emww~WQ34*MkE_QZqK6ZFLVS(-vvysIXdNrNc@Vb zaMO=Uj8;*qs1M)Uo0!_!Gn{54;?Xf1$z9oHK{WCNg?ctFWAD=UU zlMk3_e9Vi=%CdidRDI_T?nnKTCr>C8|Hsk&-g(ebJjg5^em8!DR9gi1J zEkAwAC{*8OX|7$pYMoC`d)Y4yE_CVDY6T>a4c%DBMKd!qUYP@A!+L2?PfuH0n?ixP zp@r_Tg$J?OY%W(mvas3PdsxN)@NQuQ3WeTQD9#e%s8nif?9kepKjk6`(!P@9TgR}(`T_M`sgn^+}>N}gwcjO8}X|;e;U}Fod-g1ZuSfgXx#XMn^SJ(2I8upvt9|NN&aD?o&_v2k=7dsj<7l!ZM3#_Eg7?#Pw!9n{V0O=T) zt4f>tZFbfR0?O!z_?Z4f4d&+NuV23ga+vb)&`>W=&yeu&LZL8cL|BpB#2ERR_Yq*; zVQXh+dVXby&ro+`N`qoeUG7K_1n z`s8-fej2U78BdFheDi)Oai491soVTuL*hhtzEmpB%F6Qe^mOn(u=k5%P-~zUcs!oJ zHm)TD+@yjGJAyuJSJZVK;;p>?1_Vc^54H=ShF7m1Xf(&Mv7w=%Cr_SCPfw4C_^$Uz zOX?(CYgqKiO#pTvApp$O^#1+(_^g%mQ>So1dS+&HbTt2ul}IGyijfF*ULX{U#nsi- z;EjNqn^>xfs2Loj7w?`lEF+w8K13q_#jj$}{g*2S!S%Q}A{J}Hhg(?Wi$vg?5)u+3 z*~%TRPY~>`OvO2aB8{qjJh7CMP9Y(kNyn0tA13?h_jIe(19dSs2VQcY-6^M4o0|w2 z(w`X8ZKWLjEh>?}es=ZkoB(Rs-QC?UkGmm})asH!$vk5J1qp=O*-7GZ7eEgX&%XB| z5WFwBtwmoEqLR0jBCL{*9642XLoAM=(?@ah)4H4Lf={-HLpjP-(BKCT9vmAR1AVY{ zYbJ*ytEf1Xnu;M1*5{wMxVpL)6%~1xXgJEujEwBnx4o08%YS6Q-%cSdIz)LZhUP#( zr%!J~!hX5h(?husIJR^O$VvFV>F9uo(FXaz_JDx7cdKK3s0el#@gHM8F5I>!?c3t5 RBJd*uLW06bvcUNBe*$ti4p#sG literal 0 HcmV?d00001 diff --git a/resource/template/ReplenishToMaxConfirm.png b/resource/template/ReplenishToMaxConfirm.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb6b718716486d2fbdc1d1b2393a7c482f5da0f GIT binary patch literal 2098 zcmcgueK^zWA6AkOSs~iED%YYAp@>CFq)BwiI%D47VqOjzrEzlRNM#+yB4u8FJ27W- zyl%GH@zO-i%YKT`)`p^CUOLM=zioB?IRF0sIDdSf?;p?gxv%?kf9~ggo@`GKS9R3` zstO7U>TVaEuS)-Z(hs(4yL8=osga|gpuFPd?Bt!YZMF@KM1<+LF3in6O(dko#W5Il zIat)gg6``>+MPQ%dkr<+ttoriQ;r!24xez^d$%;h-1I_@ot~Pp3+AA?!@5;P9?d!E zmy7on4~NlTy}CZcZTai-V8P?YmdU57y|?mvLtIV;0hjXAdnXMe6;&~Qm-=^V?P|_1 zRX5g5IO+uSJUDSR<5cO{F5-@uvv+@ms*L=!{m|pR4cnB?9S8rL1#?-M;D{gDH%#2P z>~m(peK!|H-U+l=vpJxQBu58U2+O~4xi_P{9*M0F#wPmI`~JA{s3TYZj@9rgoSANS zf`v{xR&?LA-b2=5eQ=r=y;=;8;k%A9uaRS+PQg&*!VcGE0{00z95TZEbMt*!%224K z_7CB?GBGR%C)^^~D=CbnOpnHL(d~8yiT%|)q?WJmfVLP3fVN|X56Sc}?K#@@QLV+i zgnaxouh>`9qcgI{p^2Kdf z>dKQ7?e|BCTWIe`y-J-#_~NzbJ-ah;xnL_9Zlraea5an#>@zz~v3;7?kt>y?N+&d^ z`=~8w;mzHtV&9F3PD4w%6I^^pX5J@y4ZQ4~w*?Q>@|fngLv3e}D2mwoOd_wm17IT= z5|8S6xZshyq^2n2vY6hy|03WcGx3YRg)qXbMZozrqhJ9vqS}`MeGLbNLxRfVVkBD* zfLwLi%&hYhmWMMh!;(mKue+aMXYt(1xYjwsy`lx75`R_gRrDtYC#52`28~*!riyC8 zYVr;$!P=9oJtq;Yenkw<^TF)C3a<}8eQ*R=g{**bm766ncGnIFGQ(wV%%I3;+276^M%f7G$KGOl>5-I?={a#~D<;VDz|aMgA%0|Sk8 zmf@YRp3XaEw(s|ZnI1#>AsiUPLSw^$?h3}V6VeeK9(3WY1XFSOCF*tL8ymsWl^2{T z5}ismm7r33O6E~l3a2QKf9_cmg`SmJPF=DBj@nQneyuwnHFqA#_x*&?HA=!0U=)%16;EwSSUxrWW5 zg;&vq?}K4dR#jcGC%ChUX_if%vw^Yov9aHv9!mkQ6H(dT`B5Vbo_+H(pH6c8CnE>||=w@wa1X-j68tZ;BbNx)AQwgwD=hU)^ z#ooiOVFW_j&1AG?-8VIJnu3y6M)p+dT(RveYo&ZJSdTKc)x92m^BQmN84Nz^Z`{nR z7FJErC!^9qWZXCNj)cYVANdrRmrN!=)}m1zsI6S#d|)7hB&HV-`5HB2Dng3Vj5`DaD^%}9-{y~qy%f=c!@|^+G0uYewQ7fN~imhO@24b`Ejzw<_b(T3s zkJiw$wt0(qQVo(dJ_>_o6gK5~LxekC;McO+?WxK&?wx~q0NGgzZ3V>o`>&29y!A&# zV(!|E0R!dsE<6ibF5zVl6mZEe5DVVX=87Mv-ej$m4n$=28PP>#vS&y<;JZA zs|X!2QbPn1nuP0JSsU6KCoPLy(8$|dYj7kTtyR$8D;G!)6US}lB zy@%4l-9gpDN5zr`x>-qlu*UM&mF(rA4&iu(B)i|zM2>Uj;~(LyvQqB>X>SWL@+Ev7&15A(uV)fg+e<_qlJ1oL;#ru;fX9{$|5=m7ZlZ>#_J0regiseter_plugin(); auto trade_task_ptr = std::make_shared(task_callback, (void*)this, InfrastTaskCahin); trade_task_ptr->set_uses_of_drone(uses_of_drones) .set_work_mode(work_mode) .set_mood_threshold(dorm_threshold) .set_retry_times(InfrastRetryTimes); - trade_task_ptr->regiseter_plugin(); + auto power_task_ptr = std::make_shared(task_callback, (void*)this, InfrastTaskCahin); power_task_ptr->set_work_mode(work_mode) .set_mood_threshold(dorm_threshold) diff --git a/src/MeoAssistant/MeoAssistant.vcxproj b/src/MeoAssistant/MeoAssistant.vcxproj index 3d08500615..a0510b02b3 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj +++ b/src/MeoAssistant/MeoAssistant.vcxproj @@ -1,278 +1,280 @@ - - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 16.0 - Win32Proj - {362d1e30-f5ae-4279-9985-65c27b3ba300} - MeoAssistant - 10.0 - - - - DynamicLibrary - false - v142 - true - Unicode - - - DynamicLibrary - false - v142 - true - Unicode - - - - - - - - - - - - - - - false - $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) - $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) - - - false - $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) - $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) - - - - Level4 - true - true - true - NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - MaxSpeed - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) - RequireAdministrator - - - true - msvcrt.lib - - - - - - + + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 16.0 + Win32Proj + {362d1e30-f5ae-4279-9985-65c27b3ba300} + MeoAssistant + 10.0 + + + + DynamicLibrary + false + v142 + true + Unicode + + + DynamicLibrary + false + v142 + true + Unicode + + + + + + + + + + + + + + + false + $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) + $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) + + + false + $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) + $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) + + + + Level4 + true + true + true + NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + MaxSpeed + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) + RequireAdministrator + + + true + msvcrt.lib + + + + + + xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource -xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource - - - copy resource - - - xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) - - - copy 3rd party dll - - - - - Level4 - - - false - true - NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;ASST_DEBUG;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - Disabled - true - EnableFastChecks - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) - RequireAdministrator - - - true - msvcrt.lib - - - - - - +xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource + + + copy resource + + + xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) + + + copy 3rd party dll + + + + + Level4 + + + false + true + NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;ASST_DEBUG;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + Disabled + true + EnableFastChecks + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) + RequireAdministrator + + + true + msvcrt.lib + + + + + + xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource -xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource - - - copy resource - - - xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) - - - copy 3rd party dll - - - - - - - - - - +xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource + + + copy resource + + + xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) + + + copy 3rd party dll + + + + + + + + + + \ No newline at end of file diff --git a/src/MeoAssistant/MeoAssistant.vcxproj.filters b/src/MeoAssistant/MeoAssistant.vcxproj.filters index ce678a9f07..d3d1944de4 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj.filters +++ b/src/MeoAssistant/MeoAssistant.vcxproj.filters @@ -1,428 +1,434 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {81d86994-0d89-4cc2-aa6f-d726a0bd0490} - - - {3b93d9f2-728c-4a22-bc13-57ce7df5806c} - - - {1ef28df7-c174-4032-bbcf-9722ae53852d} - - - {557d6d96-11d9-46e1-b611-b2b8216abea6} - - - {1a8ffc31-8eb3-4af6-9065-634de2463a3e} - - - {c6a0898b-5dd7-4437-981c-00e53b30a60d} - - - {07a812fe-6b28-4be0-b6d4-33554824d3c5} - - - {74bd94e1-4973-412a-a17a-d8457de387af} - - - {87c9dee5-847b-41e6-818e-387a6385ea8b} - - - {a37e0b23-e8f8-499c-adf5-9990277e9ffe} - - - {51165426-1842-491a-b5d5-9d26c59facdd} - - - {c600668a-0d70-4694-b1e5-6a78cffd0b1a} - - - {d173e449-880b-4064-bbab-97007e3d090b} - - - {fc8aa302-89bb-4016-924d-10177dc8b334} - - - {9a6160e3-cd35-4dda-ba04-23ede1878740} - - - {a5c43813-70af-4b0e-94ac-9ddecc2e4a3c} - - - {6cd85910-b561-4cf3-85a2-20be3cd1dd76} - - - {34a52261-b34b-49ac-8102-22b0125617f5} - - - {f5faaa93-ae82-472e-9c59-9eccc29294a0} - - - - - 头文件 - - - 头文件 - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Utils - - - 头文件\Utils - - - 头文件\Utils - - - 头文件\Utils - - - 头文件\Caller - - - 头文件\Caller - - - 头文件\Task - - - 头文件\Task - - - 头文件\Task - - - 头文件\Utils - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Task - - - 头文件\Resource - - - 头文件\ImageAnalyzer - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\ImageAnalyzer - - - 头文件 - - - 头文件\ImageAnalyzer - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\Infrast - - - 头文件\Resource - - - 头文件\ImageAnalyzer\Infrast - - - 头文件 - - - 头文件\ImageAnalyzer\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\Task\Infrast - - - 头文件\ImageAnalyzer\Infrast - - - 头文件\Utils - - - 头文件\ImageAnalyzer\Infrast - - - 头文件 - - - 头文件\Task - - - 头文件\Task\Infrast - - - 头文件\Requester - - - 头文件\TaskPlugin - - - 头文件\TaskPlugin - - - 头文件\TaskPlugin - - - 头文件\ImageAnalyzer - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer - - - 头文件\TaskPlugin - - - 头文件\TaskPlugin - - - 头文件\Resource - - - - - 源文件 - - - 源文件 - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task - - - 源文件\Caller - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Task - - - 源文件\Resource - - - 源文件\ImageAnalyzer - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\ImageAnalyzer - - - 源文件 - - - 源文件\ImageAnalyzer - - - 源文件\ImageAnalyzer\Infrast - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer\General - - - 源文件\Resource - - - 源文件\ImageAnalyzer\Infrast - - - 源文件 - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\Task\Infrast - - - 源文件\ImageAnalyzer\Infrast - - - 源文件\ImageAnalyzer\Infrast - - - 源文件\Task\Infrast - - - 源文件\ImageAnalyzer\Infrast - - - 源文件 - - - 源文件\Task - - - 源文件\Task\Infrast - - - 源文件\Requester - - - 源文件\TaskPlugin - - - 源文件\TaskPlugin - - - 源文件\TaskPlugin - - - 源文件\ImageAnalyzer - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer - - - 源文件\TaskPlugin - - - 源文件\TaskPlugin - - - 源文件\Resource - - - - - 资源文件 - - - 资源文件 - - - 资源文件 - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {81d86994-0d89-4cc2-aa6f-d726a0bd0490} + + + {3b93d9f2-728c-4a22-bc13-57ce7df5806c} + + + {1ef28df7-c174-4032-bbcf-9722ae53852d} + + + {557d6d96-11d9-46e1-b611-b2b8216abea6} + + + {1a8ffc31-8eb3-4af6-9065-634de2463a3e} + + + {c6a0898b-5dd7-4437-981c-00e53b30a60d} + + + {07a812fe-6b28-4be0-b6d4-33554824d3c5} + + + {74bd94e1-4973-412a-a17a-d8457de387af} + + + {87c9dee5-847b-41e6-818e-387a6385ea8b} + + + {a37e0b23-e8f8-499c-adf5-9990277e9ffe} + + + {51165426-1842-491a-b5d5-9d26c59facdd} + + + {c600668a-0d70-4694-b1e5-6a78cffd0b1a} + + + {d173e449-880b-4064-bbab-97007e3d090b} + + + {fc8aa302-89bb-4016-924d-10177dc8b334} + + + {9a6160e3-cd35-4dda-ba04-23ede1878740} + + + {a5c43813-70af-4b0e-94ac-9ddecc2e4a3c} + + + {6cd85910-b561-4cf3-85a2-20be3cd1dd76} + + + {34a52261-b34b-49ac-8102-22b0125617f5} + + + {f5faaa93-ae82-472e-9c59-9eccc29294a0} + + + + + 头文件 + + + 头文件 + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Utils + + + 头文件\Utils + + + 头文件\Utils + + + 头文件\Utils + + + 头文件\Caller + + + 头文件\Caller + + + 头文件\Task + + + 头文件\Task + + + 头文件\Task + + + 头文件\Utils + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Task + + + 头文件\Resource + + + 头文件\ImageAnalyzer + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\ImageAnalyzer + + + 头文件 + + + 头文件\ImageAnalyzer + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\Infrast + + + 头文件\Resource + + + 头文件\ImageAnalyzer\Infrast + + + 头文件 + + + 头文件\ImageAnalyzer\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\Task\Infrast + + + 头文件\ImageAnalyzer\Infrast + + + 头文件\Utils + + + 头文件\ImageAnalyzer\Infrast + + + 头文件 + + + 头文件\Task + + + 头文件\Task\Infrast + + + 头文件\Requester + + + 头文件\TaskPlugin + + + 头文件\TaskPlugin + + + 头文件\TaskPlugin + + + 头文件\ImageAnalyzer + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer + + + 头文件\TaskPlugin + + + 头文件\TaskPlugin + + + 头文件\Resource + + + 头文件\TaskPlugin + + + + + 源文件 + + + 源文件 + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task + + + 源文件\Caller + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Task + + + 源文件\Resource + + + 源文件\ImageAnalyzer + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\ImageAnalyzer + + + 源文件 + + + 源文件\ImageAnalyzer + + + 源文件\ImageAnalyzer\Infrast + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer\General + + + 源文件\Resource + + + 源文件\ImageAnalyzer\Infrast + + + 源文件 + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\Task\Infrast + + + 源文件\ImageAnalyzer\Infrast + + + 源文件\ImageAnalyzer\Infrast + + + 源文件\Task\Infrast + + + 源文件\ImageAnalyzer\Infrast + + + 源文件 + + + 源文件\Task + + + 源文件\Task\Infrast + + + 源文件\Requester + + + 源文件\TaskPlugin + + + 源文件\TaskPlugin + + + 源文件\TaskPlugin + + + 源文件\ImageAnalyzer + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer + + + 源文件\TaskPlugin + + + 源文件\TaskPlugin + + + 源文件\Resource + + + 源文件\TaskPlugin + + + + + 资源文件 + + + 资源文件 + + + 资源文件 + + \ No newline at end of file diff --git a/src/MeoAssistant/ReplenishOriginiumShardTaskPlugin.cpp b/src/MeoAssistant/ReplenishOriginiumShardTaskPlugin.cpp new file mode 100644 index 0000000000..36eb79d7e9 --- /dev/null +++ b/src/MeoAssistant/ReplenishOriginiumShardTaskPlugin.cpp @@ -0,0 +1,25 @@ +#include "ReplenishOriginiumShardTaskPlugin.h" + +#include "ProcessTask.h" + +bool asst::ReplenishOriginiumShardTaskPlugin::verify(AsstMsg msg, const json::value& details) const +{ + if (msg != AsstMsg::SubTaskExtraInfo + || details.get("subtask", std::string()) != "InfrastMfgTask") { + return false; + } + + if (details.at("what").as_string() == "ProductOfFacility" + && details.at("details").at("product").as_string() == "OriginStone") { + return true; + } + else { + return false; + } +} + +bool asst::ReplenishOriginiumShardTaskPlugin::_run() +{ + ProcessTask task(*this, { "ReplenishToMax" }); + return task.run(); +} diff --git a/src/MeoAssistant/ReplenishOriginiumShardTaskPlugin.h b/src/MeoAssistant/ReplenishOriginiumShardTaskPlugin.h new file mode 100644 index 0000000000..929f64b339 --- /dev/null +++ b/src/MeoAssistant/ReplenishOriginiumShardTaskPlugin.h @@ -0,0 +1,18 @@ +#pragma once +#include "AbstractTaskPlugin.h" + +namespace asst +{ + // 制造站“源石碎片”自动补货任务插件 + class ReplenishOriginiumShardTaskPlugin : public AbstractTaskPlugin + { + public: + using AbstractTaskPlugin::AbstractTaskPlugin; + virtual ~ReplenishOriginiumShardTaskPlugin() = default; + + virtual bool verify(AsstMsg msg, const json::value& details) const override; + + private: + virtual bool _run() override; + }; +} diff --git a/src/MeoAssistant/StageDropsTaskPlugin.cpp b/src/MeoAssistant/StageDropsTaskPlugin.cpp index 2f29e9aeb3..6b3f2f911f 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.cpp +++ b/src/MeoAssistant/StageDropsTaskPlugin.cpp @@ -55,12 +55,13 @@ bool asst::StageDropsTaskPlugin::_run() drop_info_callback(); check_stage_valid(); - - auto upload_future = std::async( - std::launch::async, - std::bind(&StageDropsTaskPlugin::upload_to_penguin, this)); - m_upload_pending.emplace_back(std::move(upload_future)); - + + if (m_enable_penguid) { + auto upload_future = std::async( + std::launch::async, + std::bind(&StageDropsTaskPlugin::upload_to_penguin, this)); + m_upload_pending.emplace_back(std::move(upload_future)); + } return true; } diff --git a/src/MeoAssistant/StageDropsTaskPlugin.h b/src/MeoAssistant/StageDropsTaskPlugin.h index 6e111f4cfd..803f4683c9 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.h +++ b/src/MeoAssistant/StageDropsTaskPlugin.h @@ -34,5 +34,6 @@ namespace asst bool m_startbutton_delay_setted = false; std::vector> m_upload_pending; ProcessTask* m_cast_ptr = nullptr; + bool m_enable_penguid = true; }; } From 2ae77d91b3b00c48a598f1fd4d906de9517622a5 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 23:40:35 +0800 Subject: [PATCH 40/70] =?UTF-8?q?chore.=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7v3.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MeoAssistant/Version.h b/src/MeoAssistant/Version.h index df263e901d..9efd449d64 100644 --- a/src/MeoAssistant/Version.h +++ b/src/MeoAssistant/Version.h @@ -2,5 +2,5 @@ namespace asst { - constexpr static const char* Version = "v3.2.2"; + constexpr static const char* Version = "v3.3"; } From da0c5e9a3f1d0b4b88ed2e9c33fb0f32ee8359ed Mon Sep 17 00:00:00 2001 From: LiamSho Date: Wed, 4 May 2022 16:49:19 +0000 Subject: [PATCH 41/70] =?UTF-8?q?doc.=E4=BF=AE=E6=94=B9=20Contributors=20?= =?UTF-8?q?=E5=B1=95=E7=8E=B0=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3495002523..1edfd50e77 100644 --- a/README.md +++ b/README.md @@ -100,13 +100,9 @@ MAA 的意思是 MAA Assistant Arknights ### 贡献/参与者 -感谢所有参与到开发/测试中的朋友们,是大家的帮助让 MAA 越来越好! -这里仅列出对 MAA 提供了巨大帮助的大佬们 (*´▽`)ノノ +感谢所有参与到开发/测试中的朋友们,是大家的帮助让 MAA 越来越好! (*´▽`)ノノ -- 感谢 [tcyh035](https://github.com/tcyh035) 帮忙设计重构 WPF 图形界面 -- 感谢 [LoveLoliii](https://github.com/LoveLoliii) 提供公开招募算法及数据 -- 感谢 [dantmnf](https://github.com/dantmnf) 提供各种 adb 及其他逻辑处理思路 -- 感谢 [泰迪](https://github.com/yuanyan3060) 提供的地图格子识别算法及开源库 +[![Contributors](https://opencollective.com/MaaAssistantArknights/contributors.svg?width=890&button=false)](#contributors-) ## 开发相关 From 64029b6249e697fc8e791718c21974ea4a493968 Mon Sep 17 00:00:00 2001 From: Alaric Gilbert Date: Sat, 19 Feb 2022 23:01:32 +0800 Subject: [PATCH 42/70] =?UTF-8?q?feat.=20=E5=A2=9E=E5=8A=A0WSA=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/config.json | 31 ++++++++++++++++++ src/MeoAssistant/AsstDef.h | 1 + src/MeoAssistant/AsstUtils.hpp | 9 +++++ src/MeoAssistant/Controller.cpp | 49 ++++++++++++++++++++++++---- src/MeoAssistant/GeneralConfiger.cpp | 1 + 5 files changed, 85 insertions(+), 6 deletions(-) diff --git a/resource/config.json b/resource/config.json index fb817b86b4..6f610b909a 100644 --- a/resource/config.json +++ b/resource/config.json @@ -42,6 +42,7 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", + "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -90,6 +91,7 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", + "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -112,6 +114,7 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", + "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -135,6 +138,7 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", + "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] shell \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] shell screencap -p", "release": "[Adb] kill-server" @@ -158,6 +162,7 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", + "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -181,6 +186,7 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", + "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -203,11 +209,35 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init=", "displayFormat": " init=%dx%d", + "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] shell \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] shell screencap -p", "release": "[Adb] kill-server" } }, + "WSA": { + "handle": { + "class": "com.hypergryph.arknights", + "window": "明日方舟" + }, + "adb": { + "path": "[ExecDir]platform-tools\\adb.exe", + "addresses": [ + "127.0.0.1:58526" + ], + "devices": "[Adb] devices", + "addressRegex": "(.+)\tdevice", + "connect": "[Adb] connect [Address]", + "click": "[Adb] -s [Address] shell input -d [DisplayId] tap [x] [y]", + "swipe": "[Adb] -s [Address] shell input -d [DisplayId] swipe [x1] [y1] [x2] [y2] [duration]", + "display": "[Adb] -s [Address] shell \"wm size -d [DisplayId]\"", + "displayFormat": "Physical size:%dx%d", + "displayId": "[Adb] -s [Address] shell dumpsys display | grep mUniqueId=virtual:com.microsoft.windows.systemapp:com.hypergryph.arknights", + "screencapRawWithGzip": "[Adb] -s [Address] shell \"screencap -d [DisplayId] | gzip -1\"", + "screencapEncode": "[Adb] -s [Address] shell screencap -d [DisplayId] -p", + "release": "[Adb] kill-server" + } + }, "Custom": { "handle": { "class": "Custom Class", @@ -224,6 +254,7 @@ "click": "[Adb] -s [Address] shell input tap [x] [y]", "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init=", + "displayId": "", "displayFormat": " init=%dx%d", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", diff --git a/src/MeoAssistant/AsstDef.h b/src/MeoAssistant/AsstDef.h index 55112a7806..ba2561cac9 100644 --- a/src/MeoAssistant/AsstDef.h +++ b/src/MeoAssistant/AsstDef.h @@ -276,6 +276,7 @@ namespace asst std::string swipe; std::string display; std::string display_format; + std::string display_id; std::string screencap_raw_with_gzip; std::string screencap_encode; std::string release; diff --git a/src/MeoAssistant/AsstUtils.hpp b/src/MeoAssistant/AsstUtils.hpp index b1b6a65157..849a5d889c 100644 --- a/src/MeoAssistant/AsstUtils.hpp +++ b/src/MeoAssistant/AsstUtils.hpp @@ -31,6 +31,15 @@ namespace asst return str; } + inline std::string string_replace_all_batch(const std::string& src, const std::vector>& replace_pairs) + { + std::string str = src; + for (auto &[old_value, new_value] : replace_pairs) { + str = string_replace_all(str, old_value, new_value); + } + return str; + } + inline std::vector string_split(const std::string& str, const std::string& delimiter) { std::string::size_type pos1 = 0; diff --git a/src/MeoAssistant/Controller.cpp b/src/MeoAssistant/Controller.cpp index 04cf5b258c..52b38e410c 100644 --- a/src/MeoAssistant/Controller.cpp +++ b/src/MeoAssistant/Controller.cpp @@ -116,9 +116,38 @@ bool asst::Controller::connect_adb(const std::string & address) return false; } + // 按需获取display ID 信息 + if (!m_emulator_info.adb.display_id.empty()) { + std::string display_id_cmd = utils::string_replace_all( + utils::string_replace_all(m_emulator_info.adb.display_id, "[Adb]", m_emulator_info.adb.path), + "[Address]", address); + auto display_id_ret = call_command(display_id_cmd); + if (!display_id_ret) { + return false; + } + + auto& display_id_result = display_id_ret.value(); + convert_lf(display_id_result); + std::string display_id_pipe_str( + std::make_move_iterator(display_id_result.begin()), + std::make_move_iterator(display_id_result.end())); + auto last = display_id_pipe_str.rfind(':'); + if (last == std::string::npos) { + return false; + } + + m_emulator_info.adb.display_id = display_id_pipe_str.substr(last + 1); + // 去掉换行 + m_emulator_info.adb.display_id.pop_back(); + } + + std::string display_cmd = utils::string_replace_all( + utils::string_replace_all( utils::string_replace_all(m_emulator_info.adb.display, "[Adb]", m_emulator_info.adb.path), - "[Address]", address); + "[Address]", address), + "[DisplayId]", m_emulator_info.adb.display_id); + auto display_ret = call_command(display_cmd); if (!display_ret) { return false; @@ -159,11 +188,19 @@ bool asst::Controller::connect_adb(const std::string & address) m_scale_size = std::make_pair(WindowWidthDefault, scale_height); m_control_scale = static_cast(m_emulator_info.adb.display_width) / static_cast(WindowWidthDefault); } - - m_emulator_info.adb.click = utils::string_replace_all(utils::string_replace_all(m_emulator_info.adb.click, "[Adb]", m_emulator_info.adb.path), "[Address]", address); - m_emulator_info.adb.swipe = utils::string_replace_all(utils::string_replace_all(m_emulator_info.adb.swipe, "[Adb]", m_emulator_info.adb.path), "[Address]", address); - m_emulator_info.adb.screencap_raw_with_gzip = utils::string_replace_all(utils::string_replace_all(m_emulator_info.adb.screencap_raw_with_gzip, "[Adb]", m_emulator_info.adb.path), "[Address]", address); - m_emulator_info.adb.screencap_encode = utils::string_replace_all(utils::string_replace_all(m_emulator_info.adb.screencap_encode, "[Adb]", m_emulator_info.adb.path), "[Address]", address); + std::vector> replaces = { + {"[Adb]", m_emulator_info.adb.path}, + {"[Address]", address}, + {"[DisplayId]", m_emulator_info.adb.display_id} + }; + m_emulator_info.adb.click = utils::string_replace_all_batch( + m_emulator_info.adb.click, replaces); + m_emulator_info.adb.swipe = utils::string_replace_all_batch( + m_emulator_info.adb.swipe, replaces); + m_emulator_info.adb.screencap_raw_with_gzip = + utils::string_replace_all_batch( + m_emulator_info.adb.screencap_raw_with_gzip, replaces); + m_emulator_info.adb.screencap_encode = utils::string_replace_all_batch(m_emulator_info.adb.screencap_encode, replaces); m_emulator_info.adb.release = utils::string_replace_all(m_emulator_info.adb.release, "[Adb]", m_emulator_info.adb.path); return true; diff --git a/src/MeoAssistant/GeneralConfiger.cpp b/src/MeoAssistant/GeneralConfiger.cpp index 967c44fb5f..e89e790444 100644 --- a/src/MeoAssistant/GeneralConfiger.cpp +++ b/src/MeoAssistant/GeneralConfiger.cpp @@ -50,6 +50,7 @@ bool asst::GeneralConfiger::parse(const json::value& json) emulator_info.adb.click = adb_json.at("click").as_string(); emulator_info.adb.swipe = adb_json.at("swipe").as_string(); emulator_info.adb.display = adb_json.at("display").as_string(); + emulator_info.adb.display_id = adb_json.at("displayId").as_string(); emulator_info.adb.display_format = adb_json.at("displayFormat").as_string(); emulator_info.adb.screencap_raw_with_gzip = adb_json.at("screencapRawWithGzip").as_string(); emulator_info.adb.screencap_encode = adb_json.at("screencapEncode").as_string(); From 05545c69777bd083044e51dd43ad89779718f32a Mon Sep 17 00:00:00 2001 From: Alaric Gilbert Date: Sat, 19 Feb 2022 23:48:05 +0800 Subject: [PATCH 43/70] =?UTF-8?q?fix.=20=E4=BF=AE=E5=A4=8D=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E8=BD=AF=E9=87=8D=E5=90=AF=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/Controller.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/MeoAssistant/Controller.cpp b/src/MeoAssistant/Controller.cpp index 52b38e410c..17057f9e6e 100644 --- a/src/MeoAssistant/Controller.cpp +++ b/src/MeoAssistant/Controller.cpp @@ -110,6 +110,8 @@ bool asst::Controller::connect_adb(const std::string & address) std::string connect_cmd = utils::string_replace_all( utils::string_replace_all(m_emulator_info.adb.connect, "[Adb]", m_emulator_info.adb.path), "[Address]", address); + + std::string display_id; auto connect_ret = call_command(connect_cmd, 600 * 1000); // 端口即使错误,命令仍然会返回0,TODO 对connect_result进行判断 if (!connect_ret) { @@ -136,17 +138,18 @@ bool asst::Controller::connect_adb(const std::string & address) return false; } - m_emulator_info.adb.display_id = display_id_pipe_str.substr(last + 1); + display_id = display_id_pipe_str.substr(last + 1); // 去掉换行 - m_emulator_info.adb.display_id.pop_back(); + display_id.pop_back(); } + std::vector> replaces = { + {"[Adb]", m_emulator_info.adb.path}, + {"[Address]", address}, + {"[DisplayId]", display_id} + }; - - std::string display_cmd = utils::string_replace_all( - utils::string_replace_all( - utils::string_replace_all(m_emulator_info.adb.display, "[Adb]", m_emulator_info.adb.path), - "[Address]", address), - "[DisplayId]", m_emulator_info.adb.display_id); + std::string display_cmd = utils::string_replace_all_batch( + m_emulator_info.adb.display, replaces); auto display_ret = call_command(display_cmd); if (!display_ret) { @@ -188,11 +191,7 @@ bool asst::Controller::connect_adb(const std::string & address) m_scale_size = std::make_pair(WindowWidthDefault, scale_height); m_control_scale = static_cast(m_emulator_info.adb.display_width) / static_cast(WindowWidthDefault); } - std::vector> replaces = { - {"[Adb]", m_emulator_info.adb.path}, - {"[Address]", address}, - {"[DisplayId]", m_emulator_info.adb.display_id} - }; + m_emulator_info.adb.click = utils::string_replace_all_batch( m_emulator_info.adb.click, replaces); m_emulator_info.adb.swipe = utils::string_replace_all_batch( From 93ed823d1c2bbb12057ae042ddec73f6c749c094 Mon Sep 17 00:00:00 2001 From: MistEO Date: Thu, 5 May 2022 01:39:08 +0800 Subject: [PATCH 44/70] =?UTF-8?q?docs.=20=E6=9B=B4=E6=96=B0=E8=B4=A1?= =?UTF-8?q?=E7=8C=AE=E8=80=85=E5=88=97=E8=A1=A8=E5=B1=95=E7=8E=B0=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1edfd50e77..357071bd8d 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ MAA 的意思是 MAA Assistant Arknights 感谢所有参与到开发/测试中的朋友们,是大家的帮助让 MAA 越来越好! (*´▽`)ノノ -[![Contributors](https://opencollective.com/MaaAssistantArknights/contributors.svg?width=890&button=false)](#contributors-) +[![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors) ## 开发相关 From 6919eb5d37e5c2d3a72024b7cfcdf2f6f120ef9a Mon Sep 17 00:00:00 2001 From: ABA2396 <2396806385@qq.com> Date: Fri, 6 May 2022 18:55:10 +0800 Subject: [PATCH 45/70] =?UTF-8?q?feat.=E6=B7=BB=E5=8A=A0=E4=BA=86=E6=84=9A?= =?UTF-8?q?=E4=BA=BA=E5=8F=B7SN8-10=E7=9A=84=E5=85=B3=E5=8D=A1=E5=AF=BC?= =?UTF-8?q?=E8=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 177 ++++++ resource/template/SN-10.png | Bin 0 -> 17772 bytes resource/template/SN-8.png | Bin 0 -> 16607 bytes resource/template/SN-9.png | Bin 0 -> 17769 bytes resource/template/SN-Chapter2.png | Bin 0 -> 8559 bytes resource/template/SN-Chapter3.png | Bin 0 -> 6955 bytes resource/template/SN-Open.png | Bin 0 -> 16139 bytes src/MeoAssistant/MeoAssistant.vcxproj | 554 +++++++++--------- tools/TestCaller/TestCaller.vcxproj | 220 +++---- .../TransparentImageCvt.vcxproj | 190 +++--- 10 files changed, 659 insertions(+), 482 deletions(-) create mode 100644 resource/template/SN-10.png create mode 100644 resource/template/SN-8.png create mode 100644 resource/template/SN-9.png create mode 100644 resource/template/SN-Chapter2.png create mode 100644 resource/template/SN-Chapter3.png create mode 100644 resource/template/SN-Open.png diff --git a/resource/tasks.json b/resource/tasks.json index 1427ee4fd0..d172764b80 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -1,4 +1,181 @@ { + "SN-8": { + "algorithm": "justreturn", + "action": "doNothing", + "next": [ + "SNToSN-8" + ] + }, + "SNToSN-8": { + "algorithm": "OcrDetect", + "action": "clickSelf", + "text": [ + "活动已开放" + ], + "roi": [ + 40, + 481, + 308, + 139 + ], + "next": [ + "SNChapter2ToSN-8", + "SNToSN-8" + ] + }, + "SNChapter2ToSN-8": { + "algorithm": "MatchTemplate", + "action": "clickSelf", + "template": "SN-Chapter2.png", + "roi": [ + 114, + 406, + 330, + 166 + ], + "next": [ + "StageSN-8", + "SNChapter2ToSN-8", + "SwipeRightToStageSN-8" + ] + }, + "SwipeRightToStageSN-8": { + "algorithm": "justreturn", + "action": "SwipeToTheRight", + "next": [ + "StageSN-8", + "SwipeRightToStageSN-8" + ] + }, + "StageSN-8": { + "algorithm": "MatchTemplate", + "action": "clickSelf", + "template": "SN-8.png", + "roi": [ + 296, + 93, + 171, + 195 + ] + }, + "SN-9": { + "algorithm": "justreturn", + "action": "doNothing", + "next": [ + "SNToSN-9" + ] + }, + "SNToSN-9": { + "algorithm": "OcrDetect", + "action": "clickSelf", + "text": [ + "活动已开放" + ], + "roi": [ + 40, + 481, + 308, + 139 + ], + "next": [ + "SNChapter3ToSN-9", + "SNToSN-9" + ] + }, + "SNChapter3ToSN-9": { + "algorithm": "MatchTemplate", + "action": "clickSelf", + "template": "SN-Chapter3.png", + "roi": [ + 205, + 487, + 254, + 165 + ], + "next": [ + "StageSN-9", + "SwipeLeftToStageSN-9", + "SNChapter3ToSN-9" + ] + }, + "SwipeLeftToStageSN-9": { + "algorithm": "justreturn", + "action": "SwipeToTheLeft", + "next": [ + "StageSN-9", + "SwipeLeftToStageSN-9" + ] + }, + "StageSN-9": { + "algorithm": "MatchTemplate", + "action": "clickSelf", + "template": "SN-9.png", + "roi": [ + 610, + 328, + 176, + 198 + ] + }, + "SN-10": { + "algorithm": "justreturn", + "action": "doNothing", + "next": [ + "SNToSN-10" + ] + }, + "SNToSN-10": { + "algorithm": "OcrDetect", + "action": "clickSelf", + "text": [ + "活动已开放" + ], + "roi": [ + 40, + 481, + 308, + 139 + ], + "next": [ + "SNChapter3ToSN-10", + "SNToSN-10" + ] + }, + "SNChapter3ToSN-10": { + "algorithm": "MatchTemplate", + "action": "clickSelf", + "template": "SN-Chapter3.png", + "roi": [ + 205, + 487, + 254, + 165 + ], + "next": [ + "StageSN-10", + "SNChapter3ToSN-10", + "SwipeLeftToStageSN-10" + ] + }, + "SwipeLeftToStageSN-10": { + "algorithm": "justreturn", + "action": "SwipeToTheLeft", + "next": [ + "StageSN-10", + "SwipeLeftToStageSN-10" + ] + }, + "StageSN-10": { + "algorithm": "MatchTemplate", + "action": "clickSelf", + "template": "SN-10.png", + "roi": [ + 678, + 220, + 173, + 200 + ] + }, "StartUp": { "algorithm": "justreturn", "action": "doNothing", diff --git a/resource/template/SN-10.png b/resource/template/SN-10.png new file mode 100644 index 0000000000000000000000000000000000000000..267d2e3659463806b998fd43fec298d7c094bdeb GIT binary patch literal 17772 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 literal 0 HcmV?d00001 diff --git a/resource/template/SN-9.png b/resource/template/SN-9.png new file mode 100644 index 0000000000000000000000000000000000000000..a3dbd929fe40f551bbe1ed6c9be41d0e071050e2 GIT binary patch literal 17769 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 literal 0 HcmV?d00001 diff --git a/resource/template/SN-Chapter2.png b/resource/template/SN-Chapter2.png new file mode 100644 index 0000000000000000000000000000000000000000..66d06e1754c657fd029bf6d6568b1065b7f9d2b5 GIT binary patch literal 8559 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 AhyVZp literal 0 HcmV?d00001 diff --git a/resource/template/SN-Chapter3.png b/resource/template/SN-Chapter3.png new file mode 100644 index 0000000000000000000000000000000000000000..0c3a44274730e2aefa3cf5c73ff25a2522317f8a GIT binary patch literal 6955 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 Pf&rJ%=1}qZ8&UrUWE~i( literal 0 HcmV?d00001 diff --git a/resource/template/SN-Open.png b/resource/template/SN-Open.png new file mode 100644 index 0000000000000000000000000000000000000000..4e99857e159c7c5711d7a79a2be9a2a5b7f845ea GIT binary patch literal 16139 zcmXYYc_38#`~Mlap;QhLZ8%&-6i$-LQXP@BkWogGaL5!Dno2U2TgTGkQ^`S;QW^~v zlVu85LK&n&iy8R!DsjC)Cw3kfNI3p|bm#jv#;#m)- zr+|-rSh{}hXUv1;ZnU~&fY->n&dOZfeZWiiXM4H2Zy|Q5k`DxhVI;Os|25{C zS-?P4a*S1m1ceK9AK5$ojd6ldztd!JX>Nzv_sr}GQ1bx zxjT2M%=>_P0~ua`{wEgRPuW+dIf#&b?ULyVY0fTVtm=mXEld?pO%VPwTWP%wD2em)8_*JxGPum(})i&pXrDeypSuj(?yJNEcSpAqKr@p6m~~&{_tE} zBVv!!(Yf@BCvf zhY&Ve`(Hbn%W*{nu|JUSI~|chQ01dOK7@>o9skj^uI=FA@*VkyUCByfv+al}R&v>YNLe zQ9-ukQlxEFg6Ic3HI8tJjt;=HU3IR~Ocxi?!-hm!v?rH(bn(cA$hWG@ixi8^p2gU* ztI)a0U66LMb$)uS!h9_Ov{A@viPFk!}wLH$|Ydh)N64DBruJS;Q zH05NfB7`6VOQY*q3>!g)1JUp)jE(GYu@w|FvfO1=4mjx@8457Nnb)JRCuTuL%Fec1 zoQ7Q4hw7Ae#PIxy_bhid{lFl-r|DUrosKeUd-s}ib(5jC!h>t2qHsP5?+o3y4?)?U zc4LdRjvPO(t|WG6Gp;y_O65OdIxM{miq{Z8nlY4YT%zOain0Z!CfGG+;x7D>;@Y#K zjT`SMYDH~kqPGP8d#W#5RFDw@DPO{PDZ?XQ8f~G z<=fIMLE&1|1V?>05DTUuB1Z!G!nb8ZQ`y!_QNf0%#xxoF)EMbQVlrIHpTGVrbuH^d zLV(eH8KoTKB{sPxs0QZj@Hjx=s(x;1sqGfeFmpL#!}~PRo{B%J2vxAmmKgoiSR{j4 z4ZMFxZzj@aAd(cQ{Yq>h+CH16>>WjKo2o5wlbzAZaqcmW8*FS`z0v~IP-qWPGQu~j zbVR(=;wnRiM1(A6;LKVXG#im$YEXJmqM>jF$>70O#>lImy9KD#jF_6zZiFe0DJdZY zbX{o^u8byVAWe&q&Z&3hL`i}p$|#FH$hVy?W2%zlLlPSaWG+fZQw^9l%BADph{Wr( zac5$8eu14Vri|twK7@~qmJ){g-V-ia_>z!fjUe()Bu#yCVt6aLL{eCqt&biek0beO z5kgPpv3;(8HA72+ad+1Slxb zA#(v^7sBF464mZLm<<^{LuG6=Axn_c?Z^9;M95u94@sXZn?br7X$z0K#AFD9nw6Zk zIH8=ru_9X~r^ZmMX(&_?k*_MT@rn;11)IoS4qXo9rAvbXSESRSt8h79eMnJ@=}hVjifm*q({=7!w% zi8w2qD#(bo=husrZJ2U}%T)q;s}&LA?ll=CoG;l%L4}46!Cn(CF1FInpcB^1=hn6hJ|lh{Z<#E#ti|6=?2^qUbI9qNbs6z9kk_SyE!N;cH*Y$r*_6 zLL|YBK<@I?jG7aZZ1rS}b29Qzm{rN!?1*zNEOO;k*<*(3D(Hf?c!ko3yfT-u015pd zEqy66oX}3)<$35!0!gE@G?QSC6%Dl`x4a3)?Gu@Jypu(_WSBn`tBAI5uXIf~~Kg_$f1e=bs=gDyS z1+=do!h4;-$`tzP;h6>|Np#XQWM-zlUcNhfmJ;*swXba;5{PU6@Lhvz?NKLH#Gg-F zAXId;&skx?T8zh|^3CySm5y5FY3Zy`HdX0pD1!)G0UcDG>KhWF+K~)--0t3G6FFH` z{q*;&YG5}mZCeK91{Wc^%X4L$=@8idc$4tnq`XS4ug)`6T1Q)FAzvhQn6|=ZCQ<^; zra-$fMNOjC3?C9b792F2i|Av-H;G0ZLS&9IRrQLmutY6e%H$t18+k+POf!e1yWM$HIEZHTBhVjbXP`$$Gf zla7oOD_BJC^tOb5XxN8^i0S&sid?t=#&Jax8)y_3sT@bia0>(th)o5RAcXSJj-G*< z2k}q%D91fQfaYZprK`qyRC|ho_mv$4QW6l#A#^d+EK@Q|shoO56^7+fv5rb!UaNw0 zqPb-cZ53XLSpAA6)$UIbo0dk_EJm*XE{6?+;byq(TvcY2JY0N~Ju@Lc+l)m_$FDml z6!c}f{e|c)_dw$VLjP1QH3>~$=5Z#ns4r6kQB(}^=t{F4m~SM%c`XygH5VmUkEQgiJxJ$)n zAvV2Z{~req@R>RO7ingUd|m?&6yyF~Yji_6cvYnHHCs@t0iF!!3g3Hl5|fx~$ve^C zUVU?TDHd?r#YfEuI?5&I(=MB(ESGfK_eD<|kXv&XU8Myq&oEi2w)az>d^9fBYgJx* z9ZSWl9$31iu}F@P-YwQ$;j0&T{FshRf*a7N@&f~(M7Iqxi1q^qwpTT-tQD1?kr0?ZFSQM)-L=nsXmQWooH@jW5d+`+R)U*;40A?D6}L)Im$&A5gD4IP6@VU6}~c<5{l=UpjWu^ zqO) zu2g9<0?$Ej=~BAg$0l?z(zQ;F-!LCFbar8sh(ORp?Pi+3bFY$z_C^^9UUi2nzeS&R z%M`Rzx~0I#;hqcz`p-XflO={AQPBoaH2#b>2PfhO`w$3u?ErlZr)pD7g-FlXbgzDf zw^EFnS5{!%d=USDr1S~4ybZyc;nNTh$3O^|T*QVS&b~-p$;dd#7WCV{zZC}~;&=t4aKrZfF^WPQN z>SBu5W-I;bGGm+W6kJO~cC$lsWThnh77O49UINNiiy!7i8hYrb#kKOyf+90)nK9;lc4O@quY;Ja<`?M1MMwWs=a}Pg zOU@2tqA*E&KWG4DRI(Vg*A-#PpzbIol$?%e%5ixHrF=8IRuOY%F7zY$0!JnI-Y|Bx z`%J&e5h@ z1fMiD2K+%`=u=#FW7ZagbVY3rO4?^5JXUmqSx`zGQCa3K61ksqBz73F-t%ZCA`5`! zl}QF_d<^wy8Pbund&t_Ps~aO9OysK33bj*QKZooD4B&4Oxx!L%qo*B zj;E$3itV|;~qPlK-TIGiJH00D;g$@4rD9#7N04hwklsHI&vcKfSRLctI z136Ssn`8q&pq5k63#L(bAZ8}IB=JyCLI+MMx@h$47D z5lNwOZT<_9veig}W!T_f^Y$1Yc&m%YQ1F-W!MtM2qu=ZaP#iKy0-cZ)7BgLe5S7vz zd?Sy-gI#Y`^tPt#$<24?4=iXIE-&Aj)Er!GRuzAfqQb4aC7vU%cdZI+8a^}U)L|$k zdOd-@Dowvuq`AoQ?KE&{&Mvvx;nr&sk;wOHZ-D<#bUc6)%pWIazjdb6)-D#r8S?#EvR+2MROK{xWCjjF6b!DZ}yKDxGLq~>uOteTPu#$qFn zU{B204SQg3m$^PnSaoPV`f4>O6unmMoU`WVHe2HU% z4RPgXcg%{SZ~xmuijr@qH9u=8>~0RzJU!g1y395CL_1BaT(hPyY)G==RBP(k=|7`A z*{N$ef&6+gQ_wRVB7+`w3#-S$$q1A;Ebpf1$`Ttn1h)56Tf)WKK-mpLYN)gc6Y2I8 zRN&gTUsre^;yelGd+H8K}$5ndU>xOjmL6kY!GXC}maXe61fX#Sx#M z9y)jKTyVQcpEX<4;+fZr^LWkbw(1*u*Z2)4XDzF5dIQf8&3~GK-w0I zyFT1)65Q^H*kGy$_yu8*xMASlAs>}NaGkI1)k&$t)ha7APmVyj^u`;xAAA02roxhK ziMj1v_ag=}J)ciRFWVd1d}8PQt>+?5sLE2g!M>@1?1=E6U)HPJ5y%y~BQ;_&x9c4} zQobN?_3@uyS|-FT)i>A9LqGsFP5iw5g5Ahpv}n=a7#Ya7m5uc#k%QH97Op1^XP?r`iEa>a7w(foZZuwMB-nNvL z7MPOPzI|ua%yJs$Ynuk^e-BO_YXWp1l#BQ&cf;e@$1kz#r7?GmJhFp{M#*zL1p)QF zc`c_~|Cv|xRW(~Fu7O2>N}X2n^XE@M;r`dVihjRdmYt0IZDSv5DGHaHy-LjKXP>Med3S&NuIm9$efvq~ zqWSZ?3%4<&D#egVQ2tYs6Pi=Q75BHNo~|})6s1_YSJ;+ycKQ>#CA_e{iC5cCKRNpS zb#RTv{hl?LLHeoRS5r>`^91I%o(C|wafB?2m?{bi?{Tl~YZ@89vX)J1(!S%2(z{l3yvn$IA;q7l1G{if($Q8~;sslWGzf@Mj z4z4<=-VC*t)N-n8e5Btkf0^$IOB59|;$g>PBn7=K6B3Tv@;$@S%FQ9Gl~LqRyX!I}BOaK4;_~J2gNH}|6hCWE{J3!= zBvaL*x;iJ^yFConr^0&j*X!%cYArgNj$XSoQntkEaiF+xL14butN;DY`xNRyEVMdx z{9Svs-E7T~cJrw|pcwOKt+POrtm=_bMmoi>e({VhX+?6|t?f%|S%IqoSwt*#_*?}Gd*0&kO> z5uI-ye8Cafr{@%Eo;O`SvJ$)U=tTcLK-NRe&kl6d+yvUA&4ZewRhPBb+}uL&1-+m1 ztjB)j+_@7@`jkq1N05>Z-!;B?2@mXC#@JyAfLthLnIK&*ifIQh6ZioU0xQY5+#o^zI111?=1}Jx*Rdy1~>LX zouGh;^T)q^zpA%YGFI0YF*OE1jlQrRf1!bsO-CvgU6`XeS!rkWWZ%CssK(;Olj9xM z#UUS`T;H|FMB1m?xFO&O{PZ!$Z{~k?-BuQ93a+&T zzyEtdM+)v$Dr+;hy?E+5vT<$jYony-xsJkrm4BMJ%J7i8~c2J>&-+O zD-0BWl2(C`(^oXw%}G5ydH{9_R9um1_~@U!;)!0U$^9e&X=5wvkRswkcFn*c==0M< z4>-w|_15+xj%!~7#JQ*{u|35Q`{m9(#HZcZvruM?+Q;YYp+qybIUvAe?}{_i`kTBE;;hMxC5>#tEkp~IMeA)0vr3mY%YX4rs4 zfkVg>$-=w_X>=G#A-8%80UPHiD*gcC8yoChU>+#N%wxTu%zR&8`)B67ly!ly(xUMX z-k14%pPy{Z^62lVjrjbz87}K7Xf17A$283n>h{Hp7k)QG8=4A&RkU=FFH(HT^{+F^ zYx)h!0wjD4_!!#a5{>u&Z_9EEc!SPYZ_Tj}fP&eD-8>riJN^6WR8Ps73G?RTZ2(E4 zaoVpze5$`1Cq?<7#Q=son-QBx={|?IG>3C0hijxHHxV&02{i74LvmZS8Xp6e4;d13 ziU;@+gWWNnmcGAz@CChNwNq`@v**l-08&^d8E#{@GzJhKLOt};`^I{*gc9%sG4oa| zR#&$v^R0@v9Qk&&c3rwNPx7A3=5sTU7D2n*B!*1-#+GD|y>>+DJfVtLFUc z`@wyi#_=QsSzIoi1&}h|?{BX_>z@-w48PC>26-yXcF&W5%C`c&n0w$|f<;B^YNXN; zm$vTj?^RQy6Md;`{j%J8*%PgcIM05T&NL1L9IS==NwbYPfBrn7Th4bE27dcexoq#R z=*?I43c`r2-M{>xxaXnxn6P+EI8AQ0AuD$&mJ&Yr@%HVHP`*~Jkt)YPlK~PBJ?pT% zY&F_>lhZu%H1GKY)Oez)?+pBNe!~U=vaXOJR&`QlXGtVu!@}ON)46g;Q(@>b-2`_T zEks#iCX&A()>{pg9`H*Kty4Z1O>FTT|Jq+`Z5`D73?xj)*_q1|aL#g{rw#iQ)1sB? ztf%^|gFZa+dKs-M*$cx2(0!KUKVJYpxIvqNy?G3PZeBc64PGk`FfvRW+Gw;VKf^4D z-@2Mrc*0r>)$4*|#$-5=JE zrl5o_M8>QrIQ}X30C6oY?hF^QapVmv32^?SU#g|=>$%KB{FnLCLK*zvJ!jp|l6zZ| zkS{u#Bb|K{&3zA|v9Z!>t%<71H_UqIvV`)vJd` z8;hlewWWAs(09uX?8`_;>Qqn5_~?WCDTVEcY*#)@0NKq@(NH*mifet=vSZi$rX$fa zaG{Xaj$Lo`nvm?RMv%sA&FQktUIzvOc(J~MA|h!>C$GVYg6(eph1rW(d4XcQc3sYq zw(_FEbMNHl8SZ{`5X2$ScG4=ofFu=uW>5WIv0&A~eDKkby}XKxL&;-9psY{4ey@L3 zZyVg%$Go7H)XA>YW=>1Elwx7QjQwgBfdtR1%ULd^xb6$`fSE^*JN50Lhv5t6sO`nXXiQFS?o0uMt_WcW_cp3tM zq43L;`_qFTp`TwtkOX4W7)L$8xt=?Rvx1T1;8v{0KGrUGfBGYOS(b55#OVEqHDf=5 zCx96g2L=q(IgapI5#&JXWn- z>EgiPN~bEgyu!TuDWe|x-^*0CC$2uS0YofB1glL=|3_0HpAWT&;hO4qd0GPciQq80 zNE%lKicfyO-j`q=ltpE9Kko0CnUi1(yC_mZdL8H|&>5KlyKam3WL zIqM#QS_e7d<>TW6{<{i7DyR&gBT&j~r8+K`C4Qbgu)uR_w6n8Q2tJ`=aoCRw*5j?v zwM(`pUZeSD*oLy_VMCWL9a7Kf*A5$UecFme!&1*8 zl@BohyD#Qgj^CaW(V6>h+gfPy3s!$_gRCqb6Zc8EhEkj}rzPawRuILY6kDu-9KrcY z(|vH$4+M!Ht5y`RJMb2cS_oMrfKML#RvGtSQd%4|CB+L)^E1&K=jd*!LjhC}A8)(3 zC4S+3149{lRe3nDl6gee7O8Y{Z~h$*Ic9h-+f&$CpFMeJs^{`_x%8yZW@d7;5qe4Wwvf)J0h{x?D>kV1gOgtD!Q~r^i8z3T<{n?;|RKTfH z(pniGJv_#qOw>T&6#7x+zj1L;EI&Z3y*NJ$#0YF(KE!HJxU#6*^OFPcUCV_(p4=#} zPO%(I36p%xJ@M}B$jrU{iH!@vmH;-L`~nLIxMvL}e;e3Oh}w1UJ~GY`YFeEd9{e0} z7!vK(6Mx=G#T^KIt*;T|0dNPB+yeC3_I1C?phQK09snqmJZ11z0@HKj zFISxY_55=YXLQ-N;{D%WUpPHd1!-`bGzBgU(Z~HrLhEg9#H8lsb-yd6IZOJM8-M!{ zr+%eQoq)CIJJ~372?doaB{Pt?lkGv1?Zc2K{qVC68~)h}S~0M-^dC^lV;?H4o*w`8 zmGi7^QN_YwMSKpZ%gO#!Pk^xNyY^Z@Xa;Es2gX+_9U)=Ih45BzzS0<}_U2l1tjQ9W zDj@g30^hE;>AO5a>ti)=uu=&lQa=Z<-)}wDF}3H3kAl{W;Qn?XBIqLkqr8b%spGF+ z-q`aju(vSibbk`$ZfsB37{{bl)gpkr$=(}tCXaUKK8WZykH~>5go!Yn4P<uP{Pbm z2zy#a8}b&1|EU9$IRW0L2R#-i{}&=f-_GwFo0GxB(1#ZO=lnqX1Wk5lPj-X# z@g|8TkT;-Nuj%guxd&DY+>VPXB6=t|Phn4jT8cnq&jgsv2fl{u5lGdI04doeFG|~>p(klg__YZcm`4HF$N7|DB<0i8>&)J}^;3yCd z=^!r_G>GQb7f*SnekwfFV+Ve|AQ;XA8bhT%^!JV8aVW*?Jq5pE6%*HlCi4D-duE1% ztn&cz15Vm{A*bnxG-%f0^5UH*ho&ZPTv$B%T>z-@`_&T2Hr`21dwNjOpJ%&n+7ZCE z&nE`^pl~@JoRRN0K+hLI9ihtN!dh^@HD$99#prETqK9K2RCba0&Js)PKv-F86Kgy2?Z=aX2$0YbpcGFi1V9 zO7Z9X+EeW~EdQ7^9|9>wl}u@JYGLM2dKk+I;%j5LvlAYt#*#^;jI8({N+#@PI%Rfk3^BE~C#ep-f_hiVed zs+#WD>c2LW-&f6V5H&sV?E#5vOFWYl_K>wHTM26T9VmJ5uZf^vh0Oz5wlQiC)X*%! zV0gs4t>%2s;z{WXAYEx360rVGODpuNO-TwYjH0K$u9)0klWZZyIq5Ad%YOD7EUv(} zCtm6edK$B>A^SXk;lh$_$-|(yTR}LafPuur*n$Rs?NZhZWF;Gh406+a6|uy6ojZ5v zD3E)9A)JaMpy$CQY%GIOSjg-d2nwDZ#O5?a*;f`b%@MxHr}nkmX@>t9{2Y{u`_(W3 z{UFVk3Z$U0&!5$nv&slT10)vG>jy(p{55*nrrDRqe_qm*sy~2<`3o2B0pWfQ#40es zhSCL7!xyCoKcLf;OmL8^qJwSa7p;f?odb6OEdN1jsUZ8;oIig9f%xdbp2K7;IK1~P z2A67ph_%Wn&yhC$UO07M|G0uizhVFM$>ME8{dyNS|1f#{&t2w88`g$-81BuCjyZK~ zRljzY%Z|ghmp6$TG@QzOi}@1L=5}DT^Sq~BOP|_qd9dN4C7Brcw&9-R+Yc-If<5n_ z=(lMdo0uH%yu8@*wMab6hB*2{^c)ge=1Y-y0z}m0wK2n;PgCuI1njGpY>{-sV1ZU39elC@r@S4e=tuMe>+1Y-BHj>`+&h3_= zeb0wZx6bs`N~2bXcE3-Z8t;%&25dT)=Q<>}D{K7c1?y8|y?N5SC@HY$#8go@p|}#} z&>l)Yi9G-e2LL+;pg5<--&ku-cD7dac~}j6djJQu>#(9h2u8YhraCiWJR3z$|GA?n zJ(QI$dmvaNN_PXN)mji%`gJjA4@87g5ivIUv3A{0 zx)!i(1#mwIvtw|uH`Z4?1)=kLlNq(Nl)+mL3Vat;DJoY- zV2DQn+X>T%60456agPl}@9TqWL@rF2p5mmw%XDVm@MU~SlCB&Ot7zjK%Me(ZNvX8> zQ)dTZb_8_%0|PJu;GzM{i$ME<*ZCuL-Bc&szBH7Ah^-3rXQLEpI;^KgAmZKw3q(%e zLBeFI7%WCR6l(;;7nc@Wj!GG;O>=5BT0IM2QH5d50jURoxq)5TdsX8&t2`%v-_QhO z3OYQ=jUx<$;e9$v9%%tpiR+|+R=jLI(Y0Or3J^3ga&s1oMADX-S3LaE&gyp@)UI(b zXO}7$jH+}MrRoyG2#p1}d;C9?boORX!O`!n7p7X$x6CUZt^Y5Ll}4E09#`ziKipq! z9s!wd!9at1#cok7odWK0C$REbP8N@nx8byHl-=)z3p-N6wxx_)1FeirPK-&>5B9^4 z2!TKb!1yPaV6-*(WF+1DVTvR8UzwJq$T@hv%(`bxSP#2ws=z zbUdsq8P_=o<8&q+&+;u!j}OC*NI@PBnu^CHLUeuEElB_>{fFm6;;^4OaVUz<(4={|OYJy`Y+b)_&o}F zXHE7sPK^QELzykcGrKFS1|M&a7<~sq{wn<-fKzdvl8$nVEOgHP_ro)|5^3c_JQDt` z5`|GPur_m~#}Qy*H~>zRJy~PHNVblc0{VBhIDw{~L8Jo&Fp(NFZ<&hLEgdY!Mu|klm0(kjLqYVl z6noY~z}E{$!s0`D;$x7qz+F8EAo9b=#E(x5q3CO2b*9o+gm=Ze2RhZ8fP)8z32CKN zzynxGfXjZtE?Z3u_vUF@p8O`g>0fOXeZZ7AZ!Y5OG8-BJPA}@OSqt~o0x9^hW5?dd zM(OPL;N-l1Uv3QXMd;0Xvmf)3kam#<)*XmXyZyu^omc2yZ>qwD$4?M4%Ru@x2=t5S zMEup2#n(7^|T?d)Lv?YKLS|E`*r(<^s-u)ne zbY&6=8fd{7wBH*s7%}WC%)%^Q6OtihQ1(nlrzCS%w&cf;4F6EZzIMu=8wH2`F+RE| zwbYb(SJ(v;F|x+y#L7X#b6kt?8YWSp4l5I!h3fOF)J4fOjHp#T$p9o|HM%jqKP<)) z7eKk2Oh@@W-4di+o!mqOZ{y61^L0xo;GOa&y<;UcBC0cxxyW0ou1TrxLr7jw!iiXI z3~5i6EKeg}i|B%^Wn7c7)s(4{FThcD)nZ66SQ*0wGBqCd3D>0ji6PPu8p=Vu74d1t9U&a}D(Hr7sjV>ka8dg083ynx z3h|teJFZ)F6mGj!p2 zQf`bRXsZ>BTM~B{1ZUBIV}LlXr57TGpscG|d@q0$FG3}=OGHrH?a7PRbKy}IE_IlL zJ~oLg;O)P|Bd2Rgr4X}TL{*x@2pc)QMEoBXFomDt2f8|z)+rS;plOi|16a3$O=ph5 zlOZsrvx$H`g5uz@>Lobl5*oXnD7bHcx%jxLA%JnRTG;>Xk=(vUMNDJ?vyd+J@E}#B zFeZaG4Q8G=zKO@98I_KlzCfTyDPhX)BfS+7*w!U!uurbnVQ3nCKu5!Sp9>Gws(YBh zqJxsgdn9lN*b~bD4CrJqoqMUMkcj12T|I&D@vX# z@@fB+;KuR02lu;`>8lrWD~XPJkU0c1yuSe8-)tfhEU-t~7#sk@DZ6C4RvPo87<()J z;G&9py%0$!+!b#LX$>1_*HyevVtA+p?w@AEd9_h#*r}7#h|WM#ElwnBLxB83Os~>H zAy4#h0S#5_zmrM-B~uu+dABfA2vBdkn*g7KGT_t|trNrPDHG2WCRpI`5RXA-ov2An z$d-ud0^S+5IM{yl_8eGQ=%k33026+Ac?lb*UISr zG*DKvxQVlK0*~i!heL;*%v-SI%=&}IF!5bWLHPOC4rcI4CjEdm2_{4q!q1}jb1zDF zz`5Q8+{$HnrWpwK;2XH2fhMVhm8cb?jZMzB<>Ya*af1& z)dVgn_&=Eas6NexEL@8)eMv+*$|$v(U}14RGOqBux0|p`m#YHWB;Yi7|&rs&mdolfqW3u8n{?k{UyLy{JkZ zY6da6O8YYNhc*$SO_3b)RboDnxeO33k0Ljb(e|Wi3{MJpR=OCoK1nqH#ruOEjj^(c zpx2EsR%7U>ta177a+!U5bD}HNV=`PCk~6~+x}F#k3sDK41Kb7`)R7FI3TOxq1i>14 zYse-B7p}!Gn*dWlaWg|>Z6on2sB8M7$(xLU6rA0l+|`(cFQXPle$P-Cwfurv}pS}2iGmlBsa z_=N~AhP_Y9S_Y+6PmKGM`@8Esuvn9L-!6$*EC%!K>*gZh0YTS!c*pv>ArE`jbj(F@ zXhvA28VgvY4UWvvfo>+pGv3$F@BW!sXiz-Zt-PjYHd<}LX%v|LCnWy8FWjy~e|*F! z8H${lLr3{D3u>u1Y{y8L2hMb;cTu&0Mq@tcR=*<@Tbj!20!<=d%Y4X>@UWyjV4ipT z>)$^`rtd6eU%%c;cfkj}0D<)XB`vuMC#Qdrz#L1}6PSO8CwcyVVW?t zAq|`Ap*VPJV7*0us4QnDJO@IfPE5?S9C?(5<48ug`m~Z{93u#GP$lSX-ji3rx`s?A zrV^7RT+?~9KGNb+{{cz(zr6-XZ<3EmH0@6gzNsQ6z1=o(`XpIQg_6NoC;D;MdHRw` z;eRB}yiN)?EeFznn~IK literal 0 HcmV?d00001 diff --git a/src/MeoAssistant/MeoAssistant.vcxproj b/src/MeoAssistant/MeoAssistant.vcxproj index a0510b02b3..d3be7e62ce 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj +++ b/src/MeoAssistant/MeoAssistant.vcxproj @@ -1,280 +1,280 @@ - - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 16.0 - Win32Proj - {362d1e30-f5ae-4279-9985-65c27b3ba300} - MeoAssistant - 10.0 - - - - DynamicLibrary - false - v142 - true - Unicode - - - DynamicLibrary - false - v142 - true - Unicode - - - - - - - - - - - - - - - false - $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) - $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) - - - false - $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) - $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) - - - - Level4 - true - true - true - NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - MaxSpeed - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) - RequireAdministrator - - - true - msvcrt.lib - - - - - - + + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 16.0 + Win32Proj + {362d1e30-f5ae-4279-9985-65c27b3ba300} + MeoAssistant + 10.0 + + + + DynamicLibrary + false + v143 + true + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + false + $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) + $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) + + + false + $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) + $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) + + + + Level4 + true + true + true + NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + MaxSpeed + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) + RequireAdministrator + + + true + msvcrt.lib + + + + + + xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource -xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource - - - copy resource - - - xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) - - - copy 3rd party dll - - - - - Level4 - - - false - true - NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;ASST_DEBUG;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - Disabled - true - EnableFastChecks - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) - RequireAdministrator - - - true - msvcrt.lib - - - - - - +xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource + + + copy resource + + + xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) + + + copy 3rd party dll + + + + + Level4 + + + false + true + NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;ASST_DEBUG;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + Disabled + true + EnableFastChecks + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) + RequireAdministrator + + + true + msvcrt.lib + + + + + + xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource -xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource - - - copy resource - - - xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) - - - copy 3rd party dll - - - - - - - - - - +xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource + + + copy resource + + + xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) + + + copy 3rd party dll + + + + + + + + + + \ No newline at end of file diff --git a/tools/TestCaller/TestCaller.vcxproj b/tools/TestCaller/TestCaller.vcxproj index 120a646b0d..3ac4232ba0 100644 --- a/tools/TestCaller/TestCaller.vcxproj +++ b/tools/TestCaller/TestCaller.vcxproj @@ -1,111 +1,111 @@ - - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - - - - 16.0 - Win32Proj - {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64} - Tools - 10.0 - TestCaller - - - - Application - false - v142 - true - Unicode - - - Application - false - v142 - true - Unicode - - - - - - - - - - - - - - - false - $(SolutionDir)\include - $(TargetDir);$(LibraryPath) - - - false - $(SolutionDir)\include - $(TargetDir);$(LibraryPath) - - - - Level4 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - MeoAssistant.lib;%(AdditionalDependencies) - $(TargetDir);%(AdditionalLibraryDirectories) - true - - - - - Level3 - true - false - true - LOG_TRACE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - Disabled - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - MeoAssistant.lib;%(AdditionalDependencies) - $(TargetDir);%(AdditionalLibraryDirectories) - true - - - - - + + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + + + + 16.0 + Win32Proj + {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64} + Tools + 10.0 + TestCaller + + + + Application + false + v143 + true + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + false + $(SolutionDir)\include + $(TargetDir);$(LibraryPath) + + + false + $(SolutionDir)\include + $(TargetDir);$(LibraryPath) + + + + Level4 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + MeoAssistant.lib;%(AdditionalDependencies) + $(TargetDir);%(AdditionalLibraryDirectories) + true + + + + + Level3 + true + false + true + LOG_TRACE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + Disabled + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + MeoAssistant.lib;%(AdditionalDependencies) + $(TargetDir);%(AdditionalLibraryDirectories) + true + + + + + \ No newline at end of file diff --git a/tools/TransparentImageCvt/TransparentImageCvt.vcxproj b/tools/TransparentImageCvt/TransparentImageCvt.vcxproj index f3b6a494a6..3c1ac476c4 100644 --- a/tools/TransparentImageCvt/TransparentImageCvt.vcxproj +++ b/tools/TransparentImageCvt/TransparentImageCvt.vcxproj @@ -1,96 +1,96 @@ - - - - - Release - Win32 - - - Release - x64 - - - - 16.0 - Win32Proj - {093a3174-a27e-4d23-b64e-16f9448ad5ac} - TransparentImageCvt - 10.0 - - - - Application - false - v142 - true - Unicode - - - Application - false - v142 - true - Unicode - - - - - - - - - - - - - - - false - - - false - $(SolutionDir)3rdparty\include;$(VC_IncludePath);$(WindowsSDK_IncludePath) - $(SolutionDir)3rdparty\lib;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64) - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - Level4 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - opencv_world453.lib;%(AdditionalDependencies) - - - - - - - - + + + + + Release + Win32 + + + Release + x64 + + + + 16.0 + Win32Proj + {093a3174-a27e-4d23-b64e-16f9448ad5ac} + TransparentImageCvt + 10.0 + + + + Application + false + v143 + true + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + false + + + false + $(SolutionDir)3rdparty\include;$(VC_IncludePath);$(WindowsSDK_IncludePath) + $(SolutionDir)3rdparty\lib;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64) + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level4 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + opencv_world453.lib;%(AdditionalDependencies) + + + + + + + + \ No newline at end of file From 4e4cd35a127e115dcf4db3d239a66f87325ca6f9 Mon Sep 17 00:00:00 2001 From: MistEO Date: Fri, 6 May 2022 22:18:29 +0800 Subject: [PATCH 46/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8DdisplayId=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E6=97=B6=E7=9A=84=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/config.json | 10 +------ src/MeoAssistant/Controller.cpp | 45 +++++++++++++++------------- src/MeoAssistant/GeneralConfiger.cpp | 2 +- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/resource/config.json b/resource/config.json index 6f610b909a..ea4065ea20 100644 --- a/resource/config.json +++ b/resource/config.json @@ -42,7 +42,6 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", - "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -72,7 +71,7 @@ "release": "[Adb] kill-server" } }, - "BlueStacksInternationalNewVersion": { + "BlueStacksInternationalNewVersion": { "handle": { "class": "", "window": "BlueStacks App Player" @@ -91,7 +90,6 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", - "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -114,7 +112,6 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", - "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -138,7 +135,6 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", - "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] shell \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] shell screencap -p", "release": "[Adb] kill-server" @@ -162,7 +158,6 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", - "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -186,7 +181,6 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init= | awk ' { print $3 } '", "displayFormat": "cur=%dx%d", - "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", "release": "[Adb] kill-server" @@ -209,7 +203,6 @@ "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init=", "displayFormat": " init=%dx%d", - "displayId": "", "screencapRawWithGzip": "[Adb] -s [Address] shell \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] shell screencap -p", "release": "[Adb] kill-server" @@ -254,7 +247,6 @@ "click": "[Adb] -s [Address] shell input tap [x] [y]", "swipe": "[Adb] -s [Address] shell input swipe [x1] [y1] [x2] [y2] [duration]", "display": "[Adb] -s [Address] shell dumpsys window displays | grep init=", - "displayId": "", "displayFormat": " init=%dx%d", "screencapRawWithGzip": "[Adb] -s [Address] exec-out \"screencap | gzip -1\"", "screencapEncode": "[Adb] -s [Address] exec-out screencap -p", diff --git a/src/MeoAssistant/Controller.cpp b/src/MeoAssistant/Controller.cpp index 17057f9e6e..80dfb2d366 100644 --- a/src/MeoAssistant/Controller.cpp +++ b/src/MeoAssistant/Controller.cpp @@ -107,11 +107,14 @@ bool asst::Controller::connect_adb(const std::string & address) { LogTraceScope("connect_adb " + address); - std::string connect_cmd = utils::string_replace_all( - utils::string_replace_all(m_emulator_info.adb.connect, "[Adb]", m_emulator_info.adb.path), - "[Address]", address); + std::vector> replaces = { + {"[Adb]", m_emulator_info.adb.path}, + {"[Address]", address} + }; + + std::string connect_cmd = utils::string_replace_all_batch( + m_emulator_info.adb.connect, replaces); - std::string display_id; auto connect_ret = call_command(connect_cmd, 600 * 1000); // 端口即使错误,命令仍然会返回0,TODO 对connect_result进行判断 if (!connect_ret) { @@ -120,9 +123,8 @@ bool asst::Controller::connect_adb(const std::string & address) // 按需获取display ID 信息 if (!m_emulator_info.adb.display_id.empty()) { - std::string display_id_cmd = utils::string_replace_all( - utils::string_replace_all(m_emulator_info.adb.display_id, "[Adb]", m_emulator_info.adb.path), - "[Address]", address); + std::string display_id_cmd = utils::string_replace_all_batch( + m_emulator_info.adb.display_id, replaces); auto display_id_ret = call_command(display_id_cmd); if (!display_id_ret) { return false; @@ -138,15 +140,12 @@ bool asst::Controller::connect_adb(const std::string & address) return false; } - display_id = display_id_pipe_str.substr(last + 1); + std::string display_id = display_id_pipe_str.substr(last + 1); // 去掉换行 display_id.pop_back(); + + replaces.emplace_back("[DisplayId]", std::move(display_id)); } - std::vector> replaces = { - {"[Adb]", m_emulator_info.adb.path}, - {"[Address]", address}, - {"[DisplayId]", display_id} - }; std::string display_cmd = utils::string_replace_all_batch( m_emulator_info.adb.display, replaces); @@ -178,29 +177,33 @@ bool asst::Controller::connect_adb(const std::string & address) constexpr double DefaultRatio = static_cast(WindowWidthDefault) / static_cast(WindowHeightDefault); - double cur_ratio = static_cast(m_emulator_info.adb.display_width) / static_cast(m_emulator_info.adb.display_height); + double cur_ratio = static_cast(m_emulator_info.adb.display_width) / + static_cast(m_emulator_info.adb.display_height); if (cur_ratio >= DefaultRatio // 说明是宽屏或默认16:9,按照高度计算缩放 || std::fabs(cur_ratio - DefaultRatio) < DoubleDiff) { int scale_width = static_cast(cur_ratio * WindowHeightDefault); m_scale_size = std::make_pair(scale_width, WindowHeightDefault); - m_control_scale = static_cast(m_emulator_info.adb.display_height) / static_cast(WindowHeightDefault); + m_control_scale = static_cast(m_emulator_info.adb.display_height) / + static_cast(WindowHeightDefault); } else { // 否则可能是偏正方形的屏幕,按宽度计算 int scale_height = static_cast(WindowWidthDefault / cur_ratio); m_scale_size = std::make_pair(WindowWidthDefault, scale_height); - m_control_scale = static_cast(m_emulator_info.adb.display_width) / static_cast(WindowWidthDefault); + m_control_scale = static_cast(m_emulator_info.adb.display_width) / + static_cast(WindowWidthDefault); } - + m_emulator_info.adb.click = utils::string_replace_all_batch( m_emulator_info.adb.click, replaces); m_emulator_info.adb.swipe = utils::string_replace_all_batch( m_emulator_info.adb.swipe, replaces); - m_emulator_info.adb.screencap_raw_with_gzip = - utils::string_replace_all_batch( + m_emulator_info.adb.screencap_raw_with_gzip = utils::string_replace_all_batch( m_emulator_info.adb.screencap_raw_with_gzip, replaces); - m_emulator_info.adb.screencap_encode = utils::string_replace_all_batch(m_emulator_info.adb.screencap_encode, replaces); - m_emulator_info.adb.release = utils::string_replace_all(m_emulator_info.adb.release, "[Adb]", m_emulator_info.adb.path); + m_emulator_info.adb.screencap_encode = utils::string_replace_all_batch( + m_emulator_info.adb.screencap_encode, replaces); + m_emulator_info.adb.release = utils::string_replace_all_batch( + m_emulator_info.adb.release, replaces); return true; } diff --git a/src/MeoAssistant/GeneralConfiger.cpp b/src/MeoAssistant/GeneralConfiger.cpp index e89e790444..00772dbf18 100644 --- a/src/MeoAssistant/GeneralConfiger.cpp +++ b/src/MeoAssistant/GeneralConfiger.cpp @@ -50,7 +50,7 @@ bool asst::GeneralConfiger::parse(const json::value& json) emulator_info.adb.click = adb_json.at("click").as_string(); emulator_info.adb.swipe = adb_json.at("swipe").as_string(); emulator_info.adb.display = adb_json.at("display").as_string(); - emulator_info.adb.display_id = adb_json.at("displayId").as_string(); + emulator_info.adb.display_id = adb_json.get("displayId", std::string()); emulator_info.adb.display_format = adb_json.at("displayFormat").as_string(); emulator_info.adb.screencap_raw_with_gzip = adb_json.at("screencapRawWithGzip").as_string(); emulator_info.adb.screencap_encode = adb_json.at("screencapEncode").as_string(); From 616e012472b8ae83232d7ae5c9faa50cae10833e Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Fri, 6 May 2022 19:23:11 +0800 Subject: [PATCH 47/70] =?UTF-8?q?feat.=E7=BB=99SN-8~10=E5=8A=A0=E4=B8=AAui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 313e57bf4a..9bec0931f8 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -78,6 +78,11 @@ namespace MeoAsstGui new CombData { Display = "技能-5", Value = "CA-5" }, new CombData { Display = "1-7", Value = "1-7" } }; + // “愚人号” 活动关卡 + StageList.Add(new CombData { Display = "SN-8", Value = "SN-8" }); + StageList.Add(new CombData { Display = "SN-9", Value = "SN-9" }); + StageList.Add(new CombData { Display = "SN-10", Value = "SN-10" }); + // “风雪过境” 活动关卡 //StageList.Add(new CombData { Display = "BI-7", Value = "BI-7" }); //StageList.Add(new CombData { Display = "BI-8", Value = "BI-8" }); From 46bc27f51e3fd65146d2e1318ded1047dc7764c5 Mon Sep 17 00:00:00 2001 From: MistEO Date: Fri, 6 May 2022 23:20:58 +0800 Subject: [PATCH 48/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E8=82=89=E9=B8=BD?= =?UTF-8?q?=E5=B9=B2=E5=91=98=E8=BE=93=E5=87=BA=E4=B8=8D=E5=A4=9F=E6=97=B6?= =?UTF-8?q?=E5=80=99=E5=8D=A1=E6=AD=BB=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/449 https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/213 https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/206 --- resource/tasks.json | 27 ++++++++++++ .../RoguelikeBattleTaskPlugin.cpp | 41 ++++++++++++++++++- src/MeoAssistant/RoguelikeBattleTaskPlugin.h | 3 ++ 3 files changed, 70 insertions(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index d172764b80..7f3e271583 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -4492,6 +4492,33 @@ 100 ] }, + "BattleOperRetreatBegin": { + "algorithm": "JustReturn", + "rearDelay": 500, + "next": [ + "BattleOperRetreat" + ] + }, + "BattleOperRetreat": { + "algorithm": "OcrDetect", + "text": [ + "角色" + ], + "roi": [ + 900, + 500, + 380, + 150 + ], + "rearDelay": 500, + "action": "ClickRect", + "specificRect": [ + 563, + 190, + 80, + 60 + ] + }, "StartToWakeUpToRoguelike1": { "template": "StartToWakeUp.png", "action": "clickSelf", diff --git a/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp b/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp index 9d45ace460..d070c76f55 100644 --- a/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp +++ b/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp @@ -1,5 +1,7 @@ #include "RoguelikeBattleTaskPlugin.h" +#include + #include "BattleImageAnalyzer.h" //#include "BattlePerspectiveImageAnalyzer.h" #include "Controller.h" @@ -39,11 +41,24 @@ bool asst::RoguelikeBattleTaskPlugin::_run() return true; } + constexpr static auto time_limit = std::chrono::minutes(10); + + bool timeout = false; + auto start_time = std::chrono::steady_clock::now(); while (!need_exit()) { // 不在战斗场景,且已使用过了干员,说明已经打完了,就结束循环 if (!auto_battle() && m_used_opers) { break; } + if (std::chrono::steady_clock::now() - start_time > time_limit) { + timeout = true; + break; + } + } + // 超过时间限制了,一般是某个怪被干员卡住了,一直不结束。 + if (timeout) { + Log.info("Timeout, retreat!"); + all_melee_retreat(); } clear(); @@ -76,8 +91,9 @@ bool asst::RoguelikeBattleTaskPlugin::get_stage_info() if (side_info.empty()) { continue; } - m_side_tile_info = std::move(side_info); m_stage_name = tr.text; + m_side_tile_info = std::move(side_info); + m_normal_tile_info = tile.calc(m_stage_name, false); calced = true; break; } @@ -88,6 +104,7 @@ bool asst::RoguelikeBattleTaskPlugin::get_stage_info() } else { m_side_tile_info = tile.calc(m_stage_name, true); + m_normal_tile_info = tile.calc(m_stage_name, false); calced = true; } @@ -279,6 +296,28 @@ bool asst::RoguelikeBattleTaskPlugin::use_skill(const asst::Rect& rect) return task.run(); } +bool asst::RoguelikeBattleTaskPlugin::retreat(const Point& point) +{ + Ctrler.click(point); + + ProcessTask task(*this, { "BattleOperRetreatBegin" }); + task.set_retry_times(0); + return task.run(); +} + +void asst::RoguelikeBattleTaskPlugin::all_melee_retreat() +{ + for (const auto& loc : m_used_tiles) { + auto& tile_info = m_normal_tile_info[loc]; + auto& type = tile_info.buildable; + if (type == Loc::Melee || type == Loc::All) { + if (!retreat(tile_info.pos)) { + return; + } + } + } +} + void asst::RoguelikeBattleTaskPlugin::clear() { m_used_opers = false; diff --git a/src/MeoAssistant/RoguelikeBattleTaskPlugin.h b/src/MeoAssistant/RoguelikeBattleTaskPlugin.h index 3f43f35cf7..1c8f6ab2aa 100644 --- a/src/MeoAssistant/RoguelikeBattleTaskPlugin.h +++ b/src/MeoAssistant/RoguelikeBattleTaskPlugin.h @@ -24,8 +24,10 @@ namespace asst bool get_stage_info(); bool auto_battle(); + void all_melee_retreat(); bool speed_up(); bool use_skill(const Rect& rect); + bool retreat(const Point& point); void clear(); // 通过资源文件离线计算可放置干员的位置,优先使用 @@ -40,6 +42,7 @@ namespace asst int m_pre_hp = 0; std::unordered_map m_side_tile_info; + std::unordered_map m_normal_tile_info; std::vector m_homes; size_t m_cur_home_index = 0; std::unordered_set m_used_tiles; From 6a2c5f365f0d5968fd9b2f283f9873e7a1a0772c Mon Sep 17 00:00:00 2001 From: MistEO Date: Fri, 6 May 2022 23:28:19 +0800 Subject: [PATCH 49/70] =?UTF-8?q?chore.=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MeoAssistant/Version.h b/src/MeoAssistant/Version.h index 9efd449d64..efb55c9201 100644 --- a/src/MeoAssistant/Version.h +++ b/src/MeoAssistant/Version.h @@ -2,5 +2,5 @@ namespace asst { - constexpr static const char* Version = "v3.3"; + constexpr static const char* Version = "v3.3.1"; } From 7f94286949c0cafca92d246bd3e7b45c6ccbb2ca Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Sat, 7 May 2022 00:02:26 +0800 Subject: [PATCH 50/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D`=E6=AE=8B=E9=98=B3?= =?UTF-8?q?`=E7=AB=A0=E8=8A=82=E6=B2=A1=E6=9C=89=E5=BC=80=E5=90=AF?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=841-7=E5=AF=BC=E8=88=AA=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 我解锁了,没法测试 --- resource/tasks.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index 7f3e271583..4d9025e76d 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -213,7 +213,11 @@ ], "action": "clickSelf", "next": [ - "StageThemeChapter3ToChapter2To1-7" + "StageThemeChapter3ToChapter2To1-7", + "StageThemeChapter2ToChapter1To1-7", + "StageThemeEpisode3ToEpisode1To1-7", + "StageThemeEpisode2ToEpisode1To1-7", + "StageThemeEpisode1To1-7" ] }, "StageThemeChapter3ToChapter2To1-7": { From 6dbad5a80a9dbfb7d36b40de434e9140ee2a3bf7 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Sat, 7 May 2022 00:31:10 +0800 Subject: [PATCH 51/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E6=8A=8A`1-1*`?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E6=88=90`1-1`=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resource/tasks.json b/resource/tasks.json index 4d9025e76d..7dae2dba78 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -304,6 +304,7 @@ "SwipeLeftToStage1-7": { "algorithm": "OcrDetect", "action": "SlowlySwipeToTheLeft", + "need_match": true, "text": [ "1-8", "TR-10", @@ -327,6 +328,7 @@ "SwipeRightToStage1-7": { "algorithm": "OcrDetect", "action": "SlowlySwipeToTheRight", + "need_match": true, "text": [ "1-1", "1-2", From 8fc270b488aebdee72f21e3694a91bca72665734 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Sat, 7 May 2022 00:55:45 +0800 Subject: [PATCH 52/70] =?UTF-8?q?perf.=E4=BF=AE=E6=94=B9`need=5Fmatch`?= =?UTF-8?q?=E4=B8=BA`fullMatch`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 4 ++-- src/MeoAssistant/TaskData.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index 7dae2dba78..a45515c0ef 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -304,7 +304,7 @@ "SwipeLeftToStage1-7": { "algorithm": "OcrDetect", "action": "SlowlySwipeToTheLeft", - "need_match": true, + "fullMatch": true, "text": [ "1-8", "TR-10", @@ -328,7 +328,7 @@ "SwipeRightToStage1-7": { "algorithm": "OcrDetect", "action": "SlowlySwipeToTheRight", - "need_match": true, + "fullMatch": true, "text": [ "1-1", "1-2", diff --git a/src/MeoAssistant/TaskData.cpp b/src/MeoAssistant/TaskData.cpp index d81bf62f62..fee9c3cb45 100644 --- a/src/MeoAssistant/TaskData.cpp +++ b/src/MeoAssistant/TaskData.cpp @@ -89,7 +89,7 @@ bool asst::TaskData::parse(const json::value& json) for (const json::value& text : task_json.at("text").as_array()) { ocr_task_info_ptr->text.emplace_back(text.as_string()); } - ocr_task_info_ptr->need_full_match = task_json.get("need_match", false); + ocr_task_info_ptr->need_full_match = task_json.get("fullMatch", false); if (task_json.contains("ocrReplace")) { for (const json::value& rep : task_json.at("ocrReplace").as_array()) { ocr_task_info_ptr->replace_map.emplace(rep.as_array()[0].as_string(), rep.as_array()[1].as_string()); From d755af0b560cf3cdb1294920d12bb05d31a65840 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Sat, 7 May 2022 01:02:28 +0800 Subject: [PATCH 53/70] =?UTF-8?q?perf.=E7=BB=99=E5=87=BA=E4=B8=80=E4=B8=AA?= =?UTF-8?q?`1-7`=E5=AF=BC=E8=88=AA=E6=97=B6=E4=B8=87=E4=B8=80=E5=88=92?= =?UTF-8?q?=E8=BF=87=E5=A4=B4=E7=9A=84=E8=A7=A3=E5=86=B3=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index a45515c0ef..1603737eab 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -322,7 +322,8 @@ ], "next": [ "Stage1-7", - "SwipeLeftToStage1-7" + "SwipeLeftToStage1-7", + "SwipeRightToStage1-7" ] }, "SwipeRightToStage1-7": { @@ -348,7 +349,8 @@ ], "next": [ "Stage1-7", - "SwipeRightToStage1-7" + "SwipeRightToStage1-7", + "SwipeLeftToStage1-7" ] }, "Stage1-7": { From 0fb6c29004adf51e0d46064e7be9625ccdc2f07e Mon Sep 17 00:00:00 2001 From: bakashigure Date: Sat, 7 May 2022 02:04:48 +0800 Subject: [PATCH 54/70] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + docs/.vuepress/config.ts | 24 + docs/index.md | 24 + docs/package.json | 20 + docs/readme.md | 600 ++++++++++++++ docs/yarn.lock | 1657 ++++++++++++++++++++++++++++++++++++++ docs/回调消息协议.md | 32 +- docs/常见问题.md | 14 +- docs/模拟器支持.md | 30 +- docs/详细介绍.md | 26 +- 10 files changed, 2380 insertions(+), 50 deletions(-) create mode 100644 docs/.vuepress/config.ts create mode 100644 docs/index.md create mode 100644 docs/package.json create mode 100644 docs/readme.md create mode 100644 docs/yarn.lock diff --git a/.gitignore b/.gitignore index 6cc417ce52..025aa6f8be 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# docs +docs/node_modules +docs/.vuepress/.temp # Prerequisites *.d diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts new file mode 100644 index 0000000000..cc3ed42d34 --- /dev/null +++ b/docs/.vuepress/config.ts @@ -0,0 +1,24 @@ +const { defaultTheme } = require('@vuepress/theme-default') +const { searchPlugin } = require('@vuepress/plugin-search') + +module.exports = { + lang: 'zh-CN', + title: 'MaaAssistantArknights', + description: 'MAA', + theme: defaultTheme({ + repo: 'MaaAssistantArknights/MaaAssistantArknights', + sidebarDepth: 5, + docsBranch: 'lr', + docsDir: 'docs', + // editLinkPattern: ':repo/edit/:branch/:path' + navbar: [{ text: '必读', link: '/guide.html' }], + }), + markdown: { + extractHeaders: { + level: [2, 3, 4, 5], + }, + }, + plugins: [ + searchPlugin({ }) + ], +} diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000000..0b68a2aba8 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,24 @@ +--- +home: true + +actions: + - text: Link Start! + link: /readme.html + type: primary + +# features: +# - title: 多设备兼容 +# details: 手机真机、手机虚拟机、云手机、模拟器全部支持。免ROOT,适配异形屏。 +# - title: 完全托管 +# details: 定时启动、自动热更新、多账号管理、原创QQ通知服务,助你远离明日方舟。 +# - title: 高性能 +# details: 极致耗时优化,快过手操。每日任务速通、源石锭速刷冠军。 +# - title: 高效率 +# details: 根据实际基建情况,穷举计算最优基建排班,不套用固定组合。 +# - title: 高自定义 +# details: 多账号独立设置、信用商品优先级、抢登次数设置、自动吃到期理智药... +# - title: 允许商用 +# details: 遵循GPL3.0协议,不限商用。修改代码后商用必须开源。 + + +--- diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000000..a9c62b3a67 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,20 @@ +{ + "name": "maa-docs", + "version": "1.0.0", + "description": "manual for MaaAssistantArknights", + "main": "index.js", + "repository": "https://github.com/MaaAssistantArknights/MaaAssistantArknights", + "author": "bakashigure ", + "license": "AGPL-3.0", + "dependencies": { + "@vuepress/plugin-docsearch": "^2.0.0-beta.43", + "@vuepress/plugin-search": "^2.0.0-beta.43" + }, + "devDependencies": { + "vuepress": "^2.0.0-beta.43" + }, + "scripts": { + "docs:dev": ": > readme.md | cat 详细介绍.md 常见问题.md 模拟器支持.md 回调消息协议.md >> readme.md | vuepress dev .", + "docs:build": ": > readme.md | cat 详细介绍.md 常见问题.md 模拟器支持.md 回调消息协议.md >> readme.md | vuepress build ." + } +} diff --git a/docs/readme.md b/docs/readme.md new file mode 100644 index 0000000000..dd113830ab --- /dev/null +++ b/docs/readme.md @@ -0,0 +1,600 @@ +# MAA使用说明 + +## 详细介绍 + +### 刷理智 + +- 若选项中没有你需要的关卡,请手动进入游戏 **蓝色开始按钮** 界面,并选择 `当前关卡`。 +- 主界面上的 `吃理智`、`吃石头`、`指定次数` 三个选项为短路开关,即三个选项中的任一条件达到,均会视为任务完成,停止刷理智。 + - 举例1:设置 `吃理智药` : `999`、`吃石头` : `10`、`指定次数` : `1`。则在刷完 **一次** 后,由于满足了 `指定次数`:`1` 的条件,视为任务完成,停止刷理智。 + - 举例2:不勾选 `吃理智药`、不勾选 `吃石头`,设置 `指定次数` : `100`。则在当前可用理智全部刷完后(可能只刷了几次),由于满足了 `不吃理智药`、`不吃石头` 的条件,视为任务完成,停止刷理智。 +- 刷完自动上传 [企鹅物流数据统计](https://penguin-stats.cn/) +- 可自定义企鹅物流 ID +- 识别并显示材料掉落 +- 掉线后会重连,继续刷上次的图 +- 凌晨 4 点刷新后也会重连,继续刷上次的图 +- 支持剿灭模式 +- 支持打完升级了的情况 +- 支持代理失败的情况,会自动放弃本次行动 + +### 基建换班 + +#### 换班策略 + +自动计算并选择 **单设施内的最优解**,支持所有通用类技能和特殊技能组合;支持识别经验书、赤金、原石碎片、芯片,分别使用不同的干员组合! + +#### 宿舍入驻心情阈值 + +识别心情进度条的百分比;心情小于该阈值的干员,不会再去上班,直接进驻宿舍。 + +#### 特殊说明 + +- 基建换班目前均为单设施最优解,但非跨设施的全局最优解。例如:`巫恋+龙舌兰`、`红云+稀音` 等这类单设施内的组合,都是可以正常识别并使用的;`迷迭香`、`红松骑士团` 这类多个设施间联动的体系,暂不支持使用。 +- 若 `无人机用途` 选择 `贸易站-龙门币` ,则将额外识别是否有 `巫恋组`,并优先为其使用。 +- 会客室仅缺一个线索时,会选择对应流派的干员;否则会选择通用干员。 +- 会客室仅当自有线索满时,才会送出线索,并且只送三个。有需要的同学可自行修改 `resource/tasks.json` 中 `SelectClue` - `maxTimes` 字段,自定义送出个数。 +- 控制中枢策略太过复杂,目前只考虑 `阿米娅`、`诗怀雅`、`凯尔希`、`彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。 +- 部分异格干员会在基建内产生冲突,请留意辅助界面上是否有提示 “干员冲突”,若有请手动再查看下基建换班情况(可能会有某个设施没人) + +### 信用商店随缘买 + +从左到右依次买,但不会买 `碳` 和 `家具零件` 。有需要的同学可自行修改 `resource/tasks.json` 中 `CreditShop-NotToBuy` - `text` 字段,自定义不买的物品。后续版本会尝试开放界面选项 + +### 公开招募识别 + +- 自动公招和公招识别是两个独立的功能! +- 自动公招支持使用 `加急许可`,全自动连续公招!请进入设置中选择~ +- 出 5、6 星都会有弹窗提示 + +### 自动肉鸽功能 + +- 设置中的三个选项 + - 尽可能往后打:用于刷蜡烛 + - 刷源石锭投资,第一层商店后直接退出:刷源石锭最高效的模式,建议手动选择 `古堡观光` (简单)模式 + - 刷源石锭投资,投资后退出:兼顾刷蜡烛和刷源石锭投资的模式 +- 肉鸽使用干员是可以自定义的,默认的干员是作者根据自己的练度随手写的,如果经常作战失败,建议按你自己的练度修改一下,请参考 [肉鸽自定义选人方法](https://github.com/MistEO/MeoAssistantArknights/issues/167)。后期将优化这里的选人逻辑 +- 支持掉线重连、支持凌晨 4 点更新后继续回去刷 +- 如果软件出现 bug 卡住了,会自动放弃当次探索并重试。但如果经常在某个地方卡住然后放弃、严重影响效率的,欢迎提个 issue 反馈一下~ + + +### 其他乱七八糟的说明 + +- 主界面上要执行的任务,是可以拖动改变顺序的。同样设置中基建换班的顺序,也是可以拖动改变的。 +- 新的活动关卡刚上线的时候可能无法正常识别,一般一两天内软件会自动 OTA 更新资源,更新后即可正常识别。 +- 活动关卡掉落识别到的 `未知材料`,一般就是活动商店的票据。 +- `resource/config.json` 中有一些自定义选项,可以尝试根据自己的需要进行修改。 +- 所有点击操作,都是点击按钮内随机位置,并模拟泊松分布(按钮偏中间位置点的概率大,越往旁边点到的概率越小)。 +- 底层算法纯 C++ 开发,并设计了多重的缓存技术,最大限度降低 CPU 和内存占用。 +- 软件支持自动更新✿✿ヽ(°▽°)ノ✿ 推荐非杠精的同学使用测试版,一般来说更新快且 bug 少(什么 MIUI (╯‵□′)╯︵┻━┻ +- 如果新版本自动下载失败,可手动下载后,直接把压缩包放到同目录下,会自动更新的。 + +### 我是国际服玩家,可以使用么? + +可以!但是目前只支持少部分功能,请参考 [这个链接](../resource/international/) + +### I'm an international server player, could I use it? + +Yes, but there are few supported features, please refer to [this link](../resource/international/) +## 模拟器支持 + +### 蓝叠模拟器 + +完美支持。需要在模拟器 `设置` - `引擎设置` 中打开 `允许ADB连接` + +### 蓝叠模拟器国际版(推荐使用) + +完美支持。需要在模拟器 `设定` - `进阶` 中打开 `Android调试桥` + +### 蓝叠模拟器 Hyper-V 版本 + +支持 + +1. 在模拟器 `设定` - `进阶` 中打开 `Android调试桥` +2. 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 +3. 在软件 `设置` - `连接设置` 中填写蓝叠安装目录下 `bluestacks.conf` 文件的完整路径 + +### 夜神模拟器 + +完美支持 + +### 夜神模拟器 安卓 9 + +完美支持 + +### MuMu 模拟器 + +支持。但是可能会 + +- 一直连接出错:暂时不知道是什么原因,可尝试使用自定义连接 +- 卡在主界面无法识别,过一会提示任务出错:和 MuMu 的渲染方式有关,推荐换模拟器( + +### MuMu 手游助手(星云引擎) + +不支持。没开放 adb 端口 + +### MuMu 模拟器 安卓 9 + +不支持。adb 截图出来是黑的,不知道怎么整 + +### 雷电模拟器 + +勉强支持。雷电总有莫名其妙的问题,可以试试看,不保证能用( + +### 逍遥模拟器 + +支持。但可能有莫名其妙的识别错误问题 + +### 腾讯手游助手 + +不支持。没开放 adb 端口 + +### Win11 WSA + +不支持。WSA 目前没有实现 AOSP screencap 需要的接口,无法进行截图。等微软支持后会尝试适配 + +### AVD + +支持。 + +### 自定义连接 + +1. 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 +2. 进入软件 `设置` - `连接设置`,填写自定义 adb 地址(需要填写 IP + 端口,例如 `127.0.0.1:5555` ) + +**注意 :** 若是使用手机,在非 `16:9` 分辨率下,部分功能不稳定(但也凑合能用),尤其是基建,几乎是不可用状态,正在进一步适配中。推荐使用 `16:9` 分辨率,经过的测试验证最多,也最稳定。 +## 常见问题 + +### 软件一打开就闪退 + +- 可能性 1: 运行库问题。 + 请尝试安装 [Visual C++ Redistributable](https://docs.microsoft.com/zh-CN/cpp/windows/latest-supported-vc-redist?view=msvc-160#visual-studio-2015-2017-2019-and-2022)、[.NET Framework 4.8](https://dotnet.microsoft.com/download/dotnet-framework/net48) 后重新运行本软件。 +- 可能性 2: CPU 指令集不支持。 + 项目使用 `PaddleOCR` 对游戏部分界面进行识别。`PaddleOCR` 用到了较新发布的 CPU 才支持的 `AVX` 指令集,而一些较老的 CPU 可能并不支持该指令集。 + 您可以尝试下载 [NoAVX](../3rdparty/ppocr_noavx.zip) 版本的 `PaddleOCR`, 解压后替换本软件中同名的文件。这是对于使用不支持 `AVX` 指令集的 CPU 的用户的性能降低的替代方案,如非必要,请不要使用。 + (具体可以下载 [CPU-Z](https://www.cpuid.com/softwares/cpu-z.html),查看“指令集”中有无 `AVX` 这一项来判断) +- 若上述均没有效果,请提 issue。 + +### 软件可以正常启动,但一点击开始运行就闪退 + +设置中的`bluestacks.conf`, 是给 [蓝叠模拟器 Hyper-V 版本](https://github.com/MistEO/MeoAssistantArknights/blob/master/docs/%E6%A8%A1%E6%8B%9F%E5%99%A8%E6%94%AF%E6%8C%81.md#%E8%93%9D%E5%8F%A0%E6%A8%A1%E6%8B%9F%E5%99%A8-hyper-v-%E7%89%88%E6%9C%AC) 使用的,若非该版本,请不要填写该项。如果确定不是这个问题,请再提 issue ~ + +### 连接错误/捕获模拟器窗口错误 + +提示 : 请根据 [使用说明](../README.md#使用说明) 确定您的模拟器及打开方式正确 + +- 方法 1: 使用 [自定义连接](#自定义连接) 的方式连接模拟器 +- 方法 2: 换模拟器,推荐 [蓝叠国际版](https://www.bluestacks.com/download.html) Nougat 64 bit +- 方法 3: _根本解决方法_ 编辑 `resource/config.json`, 修改(最好是新增)模拟器窗口句柄名,并修改对应的 adb 设置。若您修改后可以提 PR 给我,我会感激不尽的_(:з」∠)_ + +### 识别错误/任务开始后一直不动、没有反应 + +提示 : 依次进行,若问题解决,则无需往下 + +1. 请根据 [模拟器支持情况](模拟器支持.md) 确定您的模拟器是受支持的 +2. 修改模拟器分辨率设置,`320 dpi` +3. 修改模拟器分辨率设置,横屏 `1280 * 720` 分辨率 +4. 换模拟器,推荐 [蓝叠国际版](https://www.bluestacks.com/download.html) Nougat 64 bit ( 请注意蓝叠需要在模拟器设置里开启 adb ) +5. 若仍有问题,请提 issue + +### 自定义连接 + +- 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 +- 进入软件 `设置` - `连接设置`,填写自定义 adb 地址(需要填写 IP + 端口,例如 `127.0.0.1:5555` ) + +### 环境变量中已有 adb, 可以不再下载一份么? + +可以!请手动修改 `resource\config.json` - `Custom` - `adb` - `path` 为 `adb.exe`, 或其他 adb 的路径 +## 回调消息协议 + +### 回调函数原型 + +```c++ +typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom_arg); +``` + +### 参数总览 + +- `int msg` + 消息类型 + + ```c++ + enum class AsstMsg + { + /* Global Info */ + InternalError = 0, // 内部错误 + InitFailed, // 初始化失败 + ConnectionError, // 连接相关错误 + AllTasksCompleted, // 全部任务完成 + /* TaskChain Info */ + TaskChainError = 10000, // 任务链执行/识别错误 + TaskChainStart, // 任务链开始 + TaskChainCompleted, // 任务链完成 + TaskChainExtraInfo, // 任务链额外信息 + /* SubTask Info */ + SubTaskError = 20000, // 原子任务执行/识别错误 + SubTaskStart, // 原子任务开始 + SubTaskCompleted, // 原子任务完成 + SubTaskExtraInfo // 原子任务额外信息 + }; + ``` + +- `const char* details` + 消息详情,json 字符串,详见 [字段解释](#字段解释) +- `void* custom_arg` + 调用方自定义参数,会原样传出 `AsstCreateEx` 接口中的 `custom_arg` 参数,C 系语言可利用该参数传出 `this` 指针 + +### 字段解释 + +#### InternalError + +Todo + +#### InitFailed + +```jsonc +{ + "what": string, // 错误类型 + "details": object, // 错误详情 +} +``` + +#### ConnectionError + +Todo + +#### AllTasksCompleted + +```jsonc +{ + "taskchain": string, // 最后的任务链 + "pre_taskchain": string // 上一个任务链 +} +``` + +##### 常见 `taskchain` 字段 + +- `StartUp` + 开始唤醒 +- `Fight` + 刷理智 +- `Mall` + 信用点及购物 +- `Recruit` + 自动公招 +- `RecruitCalc` + 公招识别 +- `Infrast` + 基建换班 +- `Roguelike` + 无限刷肉鸽 +- `Debug` + 调试 + +#### TaskChain 相关消息 + +```jsonc +{ + "taskchain": string, // 当前的任务链 + "pre_taskchain": string // 上一个任务链 +} +``` + +#### TaskChainExtraInfo + +Todo + +#### SubTask 相关消息 + +```jsonc +{ + "subtask": string, // 子任务名 + "class": string, // 子任务符号名 + "taskchain": string, // 当前任务链 + "details": object, // 详情 +} +``` + +##### 常见 `subtask` 字段 + +- `ProcessTask` + + ```jsonc + // 对应的 details 字段举例 + { + "task": "StartButton2", // 任务名 + "action": 512, + "exec_times": 1, // 已执行次数 + "max_times": 999, // 最大执行次数 + "algorithm": 0 + } + ``` + +- Todo 其他 + +###### 常见 `task` 字段 + +- `StartButton2` + 开始战斗 +- `MedicineConfirm` + 使用理智药 +- `StoneConfirm` + 碎石 +- `RecruitRefreshConfirm` + 公招刷新标签 +- `RecruitConfirm` + 公招确认招募 +- `RecruitNowConfirm` + 公招使用加急许可 +- `ReportToPenguinStats` + 汇报到企鹅数据统计 +- `InfrastDormDoubleConfirmButton` + 基建宿舍的二次确认按钮,仅当干员冲突时才会有,请提示用户 +- `Roguelike1Start` + 肉鸽开始探索 +- `Roguelike1StageTraderInvestConfirm` + 肉鸽投资了源石锭 +- `Roguelike1StageTraderInvestSystemFull` + 肉鸽投资达到了游戏上限 +- `Roguelike1ExitThenAbandon` + 肉鸽放弃了本次探索 +- `Roguelike1MissionCompletedFlag` + 肉鸽战斗完成 +- `Roguelike1MissionFailedFlag` + 肉鸽战斗失败 +- `Roguelike1StageSafeHouseEnter` + 肉鸽关卡:诡异行商 +- `Roguelike1StageSafeHouseEnter` + 肉鸽关卡:安全的角落 +- `Roguelike1StageEncounterEnter` + 肉鸽关卡:不期而遇/古堡馈赠 +- `Roguelike1StageCambatDpsEnter` + 肉鸽关卡:普通作战 +- `Roguelike1StageEmergencyDps` + 肉鸽关卡:紧急作战 +- `Roguelike1StageDreadfulFoe` + 肉鸽关卡:险路恶敌 +- Todo 其他 + +#### SubTaskExtraInfo + +```jsonc +{ + "taskchain": string, // 当前任务链 + "class": string, // 子任务类型 + "what": string, // 信息类型 + "details": object, // 信息详情 +} +``` + +##### 常见 `what` 及 `details` 字段 + +- `StageDrops` + 关卡材料掉落信息 + + ```jsonc + // 对应的 details 字段举例 + { + "exceptions": [], + "resultLabel": true, + "drops": [ // 本次识别到的掉落材料 + { + "dropType": "NORMAL_DROP", + "itemId": "3301", + "quantity": 2, + "itemName": "技巧概要·卷1" + }, + { + "dropType": "NORMAL_DROP", + "itemId": "3302", + "quantity": 1, + "itemName": "技巧概要·卷2" + }, + { + "dropType": "NORMAL_DROP", + "itemId": "3303", + "quantity": 2, + "itemName": "技巧概要·卷3" + } + ], + "dropTypes": [ + { + "dropTypes": "LMB" + }, + { + "dropTypes": "NORMAL_DROP" + } + ], + "stage": { // 关卡信息 + "stageCode": "CA-5", + "stageId": "wk_fly_5" + }, + "stars": 3, // 行动结束星级 + "fingerprint": "e464bafaa3f92877bbc4fb20209e4169ae49d587499c8d2e72026b96356c591f6a17477a5b345518a00b23be78252e0825070585d33f2109390807672c252a0b", + "md5": "b40ea51ec7802afa2e86951bffbbc21f", + "cost": 6.0624, + "stats": [ // 本次执行期间总的材料掉落 + { + "itemId": "3301", + "itemName": "技巧概要·卷1", + "quantity": 4 + }, + { + "itemId": "3302", + "itemName": "技巧概要·卷2", + "quantity": 3 + }, + { + "itemId": "3303", + "itemName": "技巧概要·卷3", + "quantity": 4 + } + ] + } + ``` + +- `RecruitTagsDetected` + 公招识别到了 Tags + + ```jsonc + // 对应的 details 字段举例 + { + "tags": [ + "费用回复", + "防护", + "先锋干员", + "辅助干员", + "近战位" + ] + } + ``` + +- `RecruitSpecialTag` + 公招识别到了特殊 Tag + + ```jsonc + // 对应的 details 字段举例 + { + "tag": "高级资深干员" + } + ``` + +- `RecruitResult` + 公招识别结果 + + ```jsonc + // 对应的 details 字段举例 + { + "level": 4, // 总的星级 + "result": [ + { + "tags": [ + "削弱" + ], + "level": 4, // 这组 tags 的星级 + "opers": [ + { + "name": "初雪", + "level": 5 // 干员星级 + }, + { + "name": "陨星", + "level": 5 + }, + { + "name": "槐琥", + "level": 5 + }, + { + "name": "夜烟", + "level": 4 + }, + { + "name": "流星", + "level": 4 + } + ] + }, + { + "tags": [ + "减速", + "术师干员" + ], + "level": 4, + "opers": [ + { + "name": "夜魔", + "level": 5 + }, + { + "name": "格雷伊", + "level": 4 + } + ] + }, + { + "tags": [ + "削弱", + "术师干员" + ], + "level": 4, + "opers": [ + { + "name": "夜烟", + "level": 4 + } + ] + } + ] + } + ``` + +- `RecruitTagsSelected` + 公招选择了 Tags + + ```jsonc + // 对应的 details 字段举例 + { + "tags": [ + "减速", + "术师干员" + ] + } + ``` + +- `EnterFacility` + 基建进入了设施 + + ```jsonc + // 对应的 details 字段举例 + { + "facility": "Mfg", // 设施名 + "index": 0 // 设施序号 + } + ``` + +- `NotEnoughStaff` + 基建可用干员不足 + + ```jsonc + // 对应的 details 字段举例 + { + "facility": "Mfg", // 设施名 + "index": 0 // 设施序号 + } + ``` + +- `ProductOfFacility` + 基建产物 + + ```jsonc + // 对应的 details 字段举例 + { + "product": "Money", // 产物名 + "facility": "Mfg", // 设施名 + "index": 0 // 设施序号 + } + ``` + +- `StageInfo` + 自动作战关卡信息 + + ```jsonc + // 对应的 details 字段举例 + { + "name": string // 关卡名 + } + ``` + +- `StageInfoError` + 自动作战关卡识别错误 + +- `PenguinId` + 企鹅物流 ID + + ```jsonc + // 对应的 details 字段举例 + { + "id": string + } + ``` + diff --git a/docs/yarn.lock b/docs/yarn.lock new file mode 100644 index 0000000000..cc8d545d3b --- /dev/null +++ b/docs/yarn.lock @@ -0,0 +1,1657 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@algolia/autocomplete-core@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz#ec0178e07b44fd74a057728ac157291b26cecf37" + integrity sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A== + dependencies: + "@algolia/autocomplete-shared" "1.5.2" + +"@algolia/autocomplete-preset-algolia@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz#36c5638cc6dba6ea46a86e5a0314637ca40a77ca" + integrity sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw== + dependencies: + "@algolia/autocomplete-shared" "1.5.2" + +"@algolia/autocomplete-shared@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79" + integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug== + +"@algolia/cache-browser-local-storage@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz#f8aa4fe31104b19d616ea392f9ed5c2ea847d964" + integrity sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/cache-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.0.tgz#27b83fd3939d08d72261b36a07eeafc4cb4d2113" + integrity sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA== + +"@algolia/cache-in-memory@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz#10801a74550cbabb64b59ff08c56bce9c278ff2d" + integrity sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/client-account@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.0.tgz#f8646dd40d1e9e3353e10abbd5d6c293ea92a8e2" + integrity sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-analytics@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.0.tgz#a00bd02df45d71becb9dd4c5c993d805f2e1786d" + integrity sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.0.tgz#8bc373d164dbdcce38b4586912bbe162492bcb86" + integrity sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA== + dependencies: + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-personalization@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.0.tgz#10fb7af356422551f11a67222b39c52306f1512c" + integrity sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-search@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.0.tgz#2d8ff8e755c4a37ec89968f3f9b358eed005c7f0" + integrity sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/logger-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.0.tgz#be2606e71aae618a1ff1ea9a1b5f5a74284b35a8" + integrity sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA== + +"@algolia/logger-console@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.0.tgz#f28028a760e3d9191e28a10b12925e48f6c9afde" + integrity sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ== + dependencies: + "@algolia/logger-common" "4.13.0" + +"@algolia/requester-browser-xhr@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz#e2483f4e8d7f09e27cd0daf6c77711d15c5a919f" + integrity sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg== + dependencies: + "@algolia/requester-common" "4.13.0" + +"@algolia/requester-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.0.tgz#47fb3464cfb26b55ba43676d13f295d812830596" + integrity sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw== + +"@algolia/requester-node-http@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz#7d981bbd31492f51dd11820a665f9d8906793c37" + integrity sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ== + dependencies: + "@algolia/requester-common" "4.13.0" + +"@algolia/transporter@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.0.tgz#f6379e5329efa2127da68c914d1141f5f21dbd07" + integrity sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA== + dependencies: + "@algolia/cache-common" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + +"@babel/parser@^7.16.4": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== + +"@docsearch/css@3.0.0", "@docsearch/css@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0.tgz#fe57b474802ffd706d3246eab25d52fac8aa3698" + integrity sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA== + +"@docsearch/js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/js/-/js-3.0.0.tgz#394a99f68895503d57faf523ecec0b25b02f638c" + integrity sha512-j3tUJWlgW3slYqzGB8fm7y05kh2qqrIK1dZOXHeMUm/5gdKE85fiz/ltfCPMDFb/MXF+bLZChJXSMzqY0Ck30Q== + dependencies: + "@docsearch/react" "3.0.0" + preact "^10.0.0" + +"@docsearch/react@3.0.0", "@docsearch/react@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0.tgz#d02ebdc67573412185a6a4df13bc254c7c0da491" + integrity sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg== + dependencies: + "@algolia/autocomplete-core" "1.5.2" + "@algolia/autocomplete-preset-algolia" "1.5.2" + "@docsearch/css" "3.0.0" + algoliasearch "^4.0.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@types/debug@^4.1.7": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + +"@types/fs-extra@^9.0.13": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== + dependencies: + "@types/node" "*" + +"@types/linkify-it@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" + integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== + +"@types/markdown-it@^12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" + integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== + dependencies: + "@types/linkify-it" "*" + "@types/mdurl" "*" + +"@types/mdurl@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + +"@types/node@*": + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" + integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react@^17.0.43": + version "17.0.44" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7" + integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@vitejs/plugin-vue@^2.3.1": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.3.2.tgz#12ea7a42e6c83d5ea48e14dc41fd2bbb5806ee37" + integrity sha512-umyypfSHS4kQLdYAnJHhaASq7FRzNCdvcRoQ3uYGNk1/M4a+hXUd7ysN7BLhCrWH6uBokyCkFeUAaFDzSaaSrQ== + +"@vue/compiler-core@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.33.tgz#e915d59cce85898f5c5cfebe4c09e539278c3d59" + integrity sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/shared" "3.2.33" + estree-walker "^2.0.2" + source-map "^0.6.1" + +"@vue/compiler-dom@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz#6db84296f949f18e5d3e7fd5e80f943dbed7d5ec" + integrity sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ== + dependencies: + "@vue/compiler-core" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/compiler-sfc@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz#7ce01dc947a8b76c099811dc6ca58494d4dc773d" + integrity sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.33" + "@vue/compiler-dom" "3.2.33" + "@vue/compiler-ssr" "3.2.33" + "@vue/reactivity-transform" "3.2.33" + "@vue/shared" "3.2.33" + estree-walker "^2.0.2" + magic-string "^0.25.7" + postcss "^8.1.10" + source-map "^0.6.1" + +"@vue/compiler-ssr@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz#3e820267e4eea48fde9519f006dedca3f5e42e71" + integrity sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ== + dependencies: + "@vue/compiler-dom" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/devtools-api@^6.0.0", "@vue/devtools-api@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz#b4aec2f4b4599e11ba774a50c67fa378c9824e53" + integrity sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ== + +"@vue/reactivity-transform@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz#286063f44ca56150ae9b52f8346a26e5913fa699" + integrity sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.33" + "@vue/shared" "3.2.33" + estree-walker "^2.0.2" + magic-string "^0.25.7" + +"@vue/reactivity@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.33.tgz#c84eedb5225138dbfc2472864c151d3efbb4b673" + integrity sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ== + dependencies: + "@vue/shared" "3.2.33" + +"@vue/runtime-core@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.33.tgz#2df8907c85c37c3419fbd1bdf1a2df097fa40df2" + integrity sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw== + dependencies: + "@vue/reactivity" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/runtime-dom@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz#123b8969247029ea0d9c1983676d4706a962d848" + integrity sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw== + dependencies: + "@vue/runtime-core" "3.2.33" + "@vue/shared" "3.2.33" + csstype "^2.6.8" + +"@vue/server-renderer@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.33.tgz#4b45d6d2ae10ea4e3d2cf8e676804cf60f331979" + integrity sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew== + dependencies: + "@vue/compiler-ssr" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/shared@3.2.33", "@vue/shared@^3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.33.tgz#69a8c99ceb37c1b031d5cc4aec2ff1dc77e1161e" + integrity sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg== + +"@vuepress/bundler-vite@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/bundler-vite/-/bundler-vite-2.0.0-beta.43.tgz#9f07e155f057439a8cbb3c85aeb8eefa333d61c2" + integrity sha512-bNUanrWymNPex1pJ5HSWqyv8s2bTXkPjXDRppe5tQI2qY7DiL+2hwZfWtlKuLzR6jrEX6CHH/DGbZJdaxR30Wg== + dependencies: + "@vitejs/plugin-vue" "^2.3.1" + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + autoprefixer "^10.4.5" + connect-history-api-fallback "^1.6.0" + postcss "^8.4.13" + rollup "^2.71.1" + vite "~2.9.6" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/cli@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/cli/-/cli-2.0.0-beta.43.tgz#824050b979b6b18ad8fa5ede70ea0c42ff5aa725" + integrity sha512-NEJbGnVO09AxuO0kgkDIDQ6u81jVbrgUYG7kPWlEKT2bbbkKJQ4gppMTIPjmh4GwxNYjX5UWC8y3nXFT2X198g== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + cac "^6.7.12" + chokidar "^3.5.3" + envinfo "^7.8.1" + esbuild "^0.14.36" + +"@vuepress/client@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/client/-/client-2.0.0-beta.43.tgz#cdf30641fb7ab868b16a14a424c1a81f272c638c" + integrity sha512-G7rb/Jj1C1fj22+rcdbp0mF2y+1me3GSpPcF2k/9Lo+6U4V7AchhsM6kiCbGWcIWSmrV0IpyLjNEJbYO1PniUw== + dependencies: + "@vue/devtools-api" "^6.1.4" + "@vuepress/shared" "2.0.0-beta.43" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/core@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-2.0.0-beta.43.tgz#e452fbed38b11cc080201a2b790ef0c64f3740bb" + integrity sha512-WvphpFV7ctoCcsNzvKyj+U2kgr28AZkoWEYIvqOv60KlBozAuQVDD8k47yZ+XKt+778OcJ3QqKzNDJnRps9sQw== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/markdown" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + gray-matter "^4.0.3" + toml "^3.0.0" + vue "^3.2.33" + +"@vuepress/markdown@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-2.0.0-beta.43.tgz#b6fed2b268bc82ae2f99234c59565e6f785e1980" + integrity sha512-jyT/AvxFjY8fRAX/AmewwOfyRYPhSwa2z9/eosOZCotcqyw6gGwnFhtXXMIEgD4whoS7a9PPYUelhedlpzMVdw== + dependencies: + "@types/markdown-it" "^12.2.3" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + markdown-it "^13.0.0" + markdown-it-anchor "^8.4.1" + markdown-it-emoji "^2.0.0" + mdurl "^1.0.1" + +"@vuepress/plugin-active-header-links@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.43.tgz#5bf11b6855aef3df5cd92e3bedafd4fbd83284d5" + integrity sha512-I3dzOVO6zD7z31U0SuRYOwE5bLpFN0Crdwurr3PoSK6MJwAJ4IkKplKfGAJnhQFUXzYteg6I8PJS34AFrLrxnQ== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + ts-debounce "^4.0.0" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/plugin-back-to-top@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-beta.43.tgz#338c7221876d06007cbde4e918d36d289958ab84" + integrity sha512-HU/ioh9W2bKDNMU8zZ+oJLfqfhEboglkSiGxc95TgI9VwqpLoo6Gzxdu2Mz8d+ha5aTraffhKo4EKRtEG4oT+w== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + ts-debounce "^4.0.0" + vue "^3.2.33" + +"@vuepress/plugin-container@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-container/-/plugin-container-2.0.0-beta.43.tgz#e9d2f1eca45ace686e4179e28a62555e7c76d379" + integrity sha512-VEylRRgt8+dvQDUWQSneNbkJEZN4lqs9z9hwjfVJq+ZEy18P204GtAsOzi+EmRX4urFpaliQoWzxZtcFzq3R0Q== + dependencies: + "@types/markdown-it" "^12.2.3" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/markdown" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + markdown-it "^13.0.0" + markdown-it-container "^3.0.0" + +"@vuepress/plugin-docsearch@^2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-docsearch/-/plugin-docsearch-2.0.0-beta.43.tgz#07d800f1c471bdcc7cc00beb2217568118cb6a01" + integrity sha512-qThQeTr9hGO9W1bgZp+v4yst2EDvqOMohWabdjpmQSf9/3d80oNJMK7Sz+97zpXwumK7xwsKcVDX4LlFZMEjLg== + dependencies: + "@docsearch/css" "^3.0.0" + "@docsearch/js" "^3.0.0" + "@docsearch/react" "^3.0.0" + "@types/react" "^17.0.43" + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + ts-debounce "^4.0.0" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/plugin-external-link-icon@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-external-link-icon/-/plugin-external-link-icon-2.0.0-beta.43.tgz#2abf86fc1bf8f9e35d9a217d1fbaf3ab523acc2f" + integrity sha512-xNp61yPZeGgcc3YDVMb0eu/VDdno/tJE1heNF0m9N8l/YwhdkQ3AuZvATGgWh9fMKBNHnbO9neTuJSaG4FzZjw== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/markdown" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + vue "^3.2.33" + +"@vuepress/plugin-git@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-git/-/plugin-git-2.0.0-beta.43.tgz#dfeac73b6a17d575716fced54a3a0fad4de9f46e" + integrity sha512-fcYyoqGE3KXY+vucOOwYab2Q/m0afovg1CVetlYnKoRhfqLLJjghIHfEOikp48mm7j5LkcFzb6UBuc8XqYV/MA== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + execa "^5.1.1" + +"@vuepress/plugin-medium-zoom@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-beta.43.tgz#537435250e6c9be84bfd83b1467f7a61f9caf548" + integrity sha512-p/wQVX/k7RV6gu6yt4NombLmUdHjhvP6NEVy3vXfLDroTU0jsG9YMC2bh7i+Ht1tqjGUK8Jea+6JX0prEPzMow== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + medium-zoom "^1.0.6" + vue "^3.2.33" + +"@vuepress/plugin-nprogress@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-beta.43.tgz#984749493c8d8ab17fa5f458ccf5989e229299c9" + integrity sha512-NMqk8RFUh+JxgMvWKyFn1Xb/9OkWeQQqmxW9MZB7X845GlVacp41rxbJGe3Sw4JKJ6/PnVbRNlBVJX/JO4Ok2w== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/plugin-palette@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-palette/-/plugin-palette-2.0.0-beta.43.tgz#77b802a6e6a8a81904832f5b22f7a39ccd523d8a" + integrity sha512-9ijmk5Qpfx0ncdEHhdoPZP4LABzlj5ot9r0KU9IR+OVMySB/39dc4kElfrZCpfnXMx9CYZMd5drhlLj4TUsxnw== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + chokidar "^3.5.3" + +"@vuepress/plugin-prismjs@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-beta.43.tgz#f7e59bf411e7a0b798d36574aab30e374e69e1ac" + integrity sha512-u5ARmX0pr26tcJBbXri1/04hWsy6neaG9oUY1L8D28L/Sb9+7dvzfzvfWPonQLSe7sYs2w8xNvmuFvguldb5mA== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + prismjs "^1.27.0" + +"@vuepress/plugin-search@^2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-2.0.0-beta.43.tgz#bb05ae8a552d0b493f314868cdba779cf274619e" + integrity sha512-q1py7LajaFFDM12zWjcWw6i8vOn3s3nT05+4zTVH+zf4qa4M3gabPa/M2Jx/hUU3wYXzviZMMjw3KFYM1CGNjw== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + chokidar "^3.5.3" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/plugin-theme-data@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-beta.43.tgz#15aaf2671ac8bc59e0fdb86393f6b05cc80ad750" + integrity sha512-Y3uFcCdgCZrqZl0Blc+7v3DJivJVrdzqG4/ul74Bmu2IbgsP6RYCtMGrMvslTu9vhW/gEeNsL2v7kSVkUyjTvA== + dependencies: + "@vue/devtools-api" "^6.1.4" + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + vue "^3.2.33" + +"@vuepress/shared@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/shared/-/shared-2.0.0-beta.43.tgz#18a8d150118ace3499aeb62ef849ecb4c56a67a1" + integrity sha512-MzO81IMmwmoJiU5g+U3+RhXCsQ5rdv/WQxj8xqozl3hRNpmzmF0Pi/Kc06P+5bZb2kVqv1eZIdQ9U91K9mi8HA== + dependencies: + "@vue/shared" "^3.2.33" + +"@vuepress/theme-default@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-2.0.0-beta.43.tgz#5fe3caf055f497b3625e525f33458e3cd4bf60df" + integrity sha512-4aHcBH7vCD7VHl6RrMq7A8kb4U+j8URJE/PVElXabdAsSAzC9rQCa+KTsbLab32xUDzm8o5eGkrMdLaL424BAw== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/plugin-active-header-links" "2.0.0-beta.43" + "@vuepress/plugin-back-to-top" "2.0.0-beta.43" + "@vuepress/plugin-container" "2.0.0-beta.43" + "@vuepress/plugin-external-link-icon" "2.0.0-beta.43" + "@vuepress/plugin-git" "2.0.0-beta.43" + "@vuepress/plugin-medium-zoom" "2.0.0-beta.43" + "@vuepress/plugin-nprogress" "2.0.0-beta.43" + "@vuepress/plugin-palette" "2.0.0-beta.43" + "@vuepress/plugin-prismjs" "2.0.0-beta.43" + "@vuepress/plugin-theme-data" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + "@vueuse/core" "^8.2.1" + sass "^1.51.0" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/utils@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/utils/-/utils-2.0.0-beta.43.tgz#3c0c6b34c33e79368268c9e89166143d774db5a3" + integrity sha512-T56eQJdj5U7ZZLvL9zwH2rMrhQkba3YxEtrQehtKqfQ75NYfG8l+SjF9I1cMb/ujbFsv2YWBFsOyjZYtSiR8rA== + dependencies: + "@types/debug" "^4.1.7" + "@types/fs-extra" "^9.0.13" + "@vuepress/shared" "2.0.0-beta.43" + chalk "^4.1.2" + debug "^4.3.4" + fs-extra "^10.0.1" + globby "^11.0.4" + hash-sum "^2.0.0" + ora "^5.4.1" + upath "^2.0.1" + +"@vueuse/core@^8.2.1": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-8.4.2.tgz#e5be73f40394150e6a1b6abd59e5adb7c6bb6c1f" + integrity sha512-dUVU96lii1ZdWoNJXauQNt+4QrHz1DKbuW+y6pDR2N10q7rGZJMDU7pQeMcC2XeosX7kMODfaBuqsF03NozzLg== + dependencies: + "@vueuse/metadata" "8.4.2" + "@vueuse/shared" "8.4.2" + vue-demi "*" + +"@vueuse/metadata@8.4.2": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-8.4.2.tgz#b33e6b7bd5ca69e3f24ea41b149267118bcd566f" + integrity sha512-2BIj++7P0/I5dfMsEe8q7Kw0HqVAjVcyNOd9+G22/ILUC9TVLTeYOuJ1kwa1Gpr+0LWKHc6GqHiLWNL33+exoQ== + +"@vueuse/shared@8.4.2": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-8.4.2.tgz#5900f06ff78bd8b6df4cbf48f8ca82dd6d9747d1" + integrity sha512-hILXMEjL8YQhj1LHN/HZ49UThyfk8irTjhele2nW+L3N55ElFUBGB/f4w0rg8EW+/suhqv7kJJPTZzvHCqxlIw== + dependencies: + vue-demi "*" + +algoliasearch@^4.0.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.0.tgz#e36611fda82b1fc548c156ae7929a7f486e4b663" + integrity sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw== + dependencies: + "@algolia/cache-browser-local-storage" "4.13.0" + "@algolia/cache-common" "4.13.0" + "@algolia/cache-in-memory" "4.13.0" + "@algolia/client-account" "4.13.0" + "@algolia/client-analytics" "4.13.0" + "@algolia/client-common" "4.13.0" + "@algolia/client-personalization" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/logger-console" "4.13.0" + "@algolia/requester-browser-xhr" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/requester-node-http" "4.13.0" + "@algolia/transporter" "4.13.0" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +autoprefixer@^10.4.5: + version "10.4.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== + dependencies: + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== + dependencies: + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" + escalade "^3.1.1" + node-releases "^2.0.3" + picocolors "^1.0.0" + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +cac@^6.7.12: + version "6.7.12" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.12.tgz#6fb5ea2ff50bd01490dbda497f4ae75a99415193" + integrity sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA== + +caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: + version "1.0.30001338" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz#b5dd7a7941a51a16480bdf6ff82bded1628eec0d" + integrity sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ== + +chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^2.6.8: + version "2.6.20" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda" + integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA== + +csstype@^3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== + +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +electron-to-chromium@^1.4.118: + version "1.4.136" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.136.tgz#b6a3595a9c29d6d8f60e092d40ac24f997e4e7ef" + integrity sha512-GnITX8rHnUrIVnTxU9UlsTnSemHUA2iF+6QrRqxFbp/mf0vfuSc/goEyyQhUX3TUUCE3mv/4BNuXOtaJ4ur0eA== + +entities@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +envinfo@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +esbuild-android-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz#5b94a1306df31d55055f64a62ff6b763a47b7f64" + integrity sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw== + +esbuild-android-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz#78acc80773d16007de5219ccce544c036abd50b8" + integrity sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA== + +esbuild-darwin-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz#e02b1291f629ebdc2aa46fabfacc9aa28ff6aa46" + integrity sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA== + +esbuild-darwin-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz#01eb6650ec010b18c990e443a6abcca1d71290a9" + integrity sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ== + +esbuild-freebsd-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz#790b8786729d4aac7be17648f9ea8e0e16475b5e" + integrity sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig== + +esbuild-freebsd-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz#b66340ab28c09c1098e6d9d8ff656db47d7211e6" + integrity sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ== + +esbuild-linux-32@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz#7927f950986fd39f0ff319e92839455912b67f70" + integrity sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g== + +esbuild-linux-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz#4893d07b229d9cfe34a2b3ce586399e73c3ac519" + integrity sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q== + +esbuild-linux-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz#8442402e37d0b8ae946ac616784d9c1a2041056a" + integrity sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA== + +esbuild-linux-arm@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz#d5dbf32d38b7f79be0ec6b5fb2f9251fd9066986" + integrity sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA== + +esbuild-linux-mips64le@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz#95081e42f698bbe35d8ccee0e3a237594b337eb5" + integrity sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ== + +esbuild-linux-ppc64le@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz#dceb0a1b186f5df679618882a7990bd422089b47" + integrity sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q== + +esbuild-linux-riscv64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz#61fb8edb75f475f9208c4a93ab2bfab63821afd2" + integrity sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ== + +esbuild-linux-s390x@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz#34c7126a4937406bf6a5e69100185fd702d12fe0" + integrity sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ== + +esbuild-netbsd-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz#322ea9937d9e529183ee281c7996b93eb38a5d95" + integrity sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q== + +esbuild-openbsd-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz#1ca29bb7a2bf09592dcc26afdb45108f08a2cdbd" + integrity sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ== + +esbuild-sunos-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz#c9446f7d8ebf45093e7bb0e7045506a88540019b" + integrity sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA== + +esbuild-windows-32@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz#f8e9b4602fd0ccbd48e5c8d117ec0ba4040f2ad1" + integrity sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw== + +esbuild-windows-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz#280f58e69f78535f470905ce3e43db1746518107" + integrity sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw== + +esbuild-windows-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz#d97e9ac0f95a4c236d9173fa9f86c983d6a53f54" + integrity sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw== + +esbuild@^0.14.27, esbuild@^0.14.36: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.38.tgz#99526b778cd9f35532955e26e1709a16cca2fb30" + integrity sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA== + optionalDependencies: + esbuild-android-64 "0.14.38" + esbuild-android-arm64 "0.14.38" + esbuild-darwin-64 "0.14.38" + esbuild-darwin-arm64 "0.14.38" + esbuild-freebsd-64 "0.14.38" + esbuild-freebsd-arm64 "0.14.38" + esbuild-linux-32 "0.14.38" + esbuild-linux-64 "0.14.38" + esbuild-linux-arm "0.14.38" + esbuild-linux-arm64 "0.14.38" + esbuild-linux-mips64le "0.14.38" + esbuild-linux-ppc64le "0.14.38" + esbuild-linux-riscv64 "0.14.38" + esbuild-linux-s390x "0.14.38" + esbuild-netbsd-64 "0.14.38" + esbuild-openbsd-64 "0.14.38" + esbuild-sunos-64 "0.14.38" + esbuild-windows-32 "0.14.38" + esbuild-windows-64 "0.14.38" + esbuild-windows-arm64 "0.14.38" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fs-extra@^10.0.1: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + dependencies: + js-yaml "^3.13.1" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-sum@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" + integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + +inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +linkify-it@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" + integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== + dependencies: + uc.micro "^1.0.1" + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +markdown-it-anchor@^8.4.1: + version "8.6.3" + resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.3.tgz#70418e91dc6fcfbe25b896f7223147225b46abee" + integrity sha512-3IiHYh/kJHY2IcuKv5qv+IKNxDwXjVoYQ5FvbBUPywcwCQ4ICLIw5z0QrhYBtcD7h88MfFK3zKAkABTvPMxm7A== + +markdown-it-container@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/markdown-it-container/-/markdown-it-container-3.0.0.tgz#1d19b06040a020f9a827577bb7dbf67aa5de9a5b" + integrity sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw== + +markdown-it-emoji@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz#cd42421c2fda1537d9cc12b9923f5c8aeb9029c8" + integrity sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ== + +markdown-it@^13.0.0: + version "13.0.1" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" + integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== + dependencies: + argparse "^2.0.1" + entities "~3.0.1" + linkify-it "^4.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +medium-zoom@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/medium-zoom/-/medium-zoom-1.0.6.tgz#9247f21ca9313d8bbe9420aca153a410df08d027" + integrity sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanoid@^3.3.3: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +node-releases@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.1.10, postcss@^8.4.13: + version "8.4.13" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" + integrity sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA== + dependencies: + nanoid "^3.3.3" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +preact@^10.0.0: + version "10.7.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.7.1.tgz#bdd2b2dce91a5842c3b9b34dfe050e5401068c9e" + integrity sha512-MufnRFz39aIhs9AMFisonjzTud1PK1bY+jcJLo6m2T9Uh8AqjD77w11eAAawmjUogoGOnipECq7e/1RClIKsxg== + +prismjs@^1.27.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.28.0.tgz#0d8f561fa0f7cf6ebca901747828b149147044b6" + integrity sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rollup@^2.59.0, rollup@^2.71.1: + version "2.72.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.72.0.tgz#f94280b003bcf9f2f1f2594059a9db5abced371e" + integrity sha512-KqtR2YcO35/KKijg4nx4STO3569aqCUeGRkKWnJ6r+AvBBrVY9L4pmf4NHVrQr4mTOq6msbohflxr2kpihhaOA== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sass@^1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" + integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +ts-debounce@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ts-debounce/-/ts-debounce-4.0.0.tgz#33440ef64fab53793c3d546a8ca6ae539ec15841" + integrity sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg== + +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +upath@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +vite@~2.9.6: + version "2.9.8" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.8.tgz#2c2cb0790beb0fbe4b8c0995b80fe691a91c2545" + integrity sha512-zsBGwn5UT3YS0NLSJ7hnR54+vUKfgzMUh/Z9CxF1YKEBVIe213+63jrFLmZphgGI5zXwQCSmqIdbPuE8NJywPw== + dependencies: + esbuild "^0.14.27" + postcss "^8.4.13" + resolve "^1.22.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" + +vue-demi@*: + version "0.12.5" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.12.5.tgz#8eeed566a7d86eb090209a11723f887d28aeb2d1" + integrity sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q== + +vue-router@^4.0.14: + version "4.0.15" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.15.tgz#b4a0661efe197f8c724e0f233308f8776e2c3667" + integrity sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg== + dependencies: + "@vue/devtools-api" "^6.0.0" + +vue@^3.2.33: + version "3.2.33" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.33.tgz#7867eb16a3293a28c4d190a837bc447878bd64c2" + integrity sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ== + dependencies: + "@vue/compiler-dom" "3.2.33" + "@vue/compiler-sfc" "3.2.33" + "@vue/runtime-dom" "3.2.33" + "@vue/server-renderer" "3.2.33" + "@vue/shared" "3.2.33" + +vuepress-vite@2.0.0-beta.43: + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/vuepress-vite/-/vuepress-vite-2.0.0-beta.43.tgz#d830c37c3bf997f3ff5855c923ff26e52942b7a0" + integrity sha512-AJQJ60eKZE+tqB1A+079Zu2mssOuM95/I1qA5a5ORqjm+3gKf+opzqs8beXJDu/POOoAaWYgif4Ak9mVKGygHQ== + dependencies: + "@vuepress/bundler-vite" "2.0.0-beta.43" + "@vuepress/cli" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/theme-default" "2.0.0-beta.43" + +vuepress@^2.0.0-beta.43: + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-2.0.0-beta.43.tgz#f2a98bef84f446f92b759df4e3a0f7fd7c51fed9" + integrity sha512-O60rL6UNw/zqNUK/nx9nU/ztR1x3vhik7zxa1MgA6z92NRuHILVYZKkJMMyjM3bK5z6YDUHuwvpYFTrIN6cWDQ== + dependencies: + vuepress-vite "2.0.0-beta.43" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" diff --git a/docs/回调消息协议.md b/docs/回调消息协议.md index 4e2f02d3eb..2a8edba131 100644 --- a/docs/回调消息协议.md +++ b/docs/回调消息协议.md @@ -1,12 +1,12 @@ -# 回调消息协议 +## 回调消息协议 -## 回调函数原型 +### 回调函数原型 ```c++ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom_arg); ``` -## 参数总览 +### 参数总览 - `int msg` 消息类型 @@ -37,13 +37,13 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom - `void* custom_arg` 调用方自定义参数,会原样传出 `AsstCreateEx` 接口中的 `custom_arg` 参数,C 系语言可利用该参数传出 `this` 指针 -## 字段解释 +### 字段解释 -### InternalError +#### InternalError Todo -### InitFailed +#### InitFailed ```jsonc { @@ -52,11 +52,11 @@ Todo } ``` -### ConnectionError +#### ConnectionError Todo -### AllTasksCompleted +#### AllTasksCompleted ```jsonc { @@ -65,7 +65,7 @@ Todo } ``` -#### 常见 `taskchain` 字段 +##### 常见 `taskchain` 字段 - `StartUp` 开始唤醒 @@ -84,7 +84,7 @@ Todo - `Debug` 调试 -### TaskChain 相关消息 +#### TaskChain 相关消息 ```jsonc { @@ -93,11 +93,11 @@ Todo } ``` -### TaskChainExtraInfo +#### TaskChainExtraInfo Todo -### SubTask 相关消息 +#### SubTask 相关消息 ```jsonc { @@ -108,7 +108,7 @@ Todo } ``` -#### 常见 `subtask` 字段 +##### 常见 `subtask` 字段 - `ProcessTask` @@ -125,7 +125,7 @@ Todo - Todo 其他 -##### 常见 `task` 字段 +###### 常见 `task` 字段 - `StartButton2` 开始战斗 @@ -169,7 +169,7 @@ Todo 肉鸽关卡:险路恶敌 - Todo 其他 -### SubTaskExtraInfo +#### SubTaskExtraInfo ```jsonc { @@ -180,7 +180,7 @@ Todo } ``` -#### 常见 `what` 及 `details` 字段 +##### 常见 `what` 及 `details` 字段 - `StageDrops` 关卡材料掉落信息 diff --git a/docs/常见问题.md b/docs/常见问题.md index 200514f4be..3e3f286629 100644 --- a/docs/常见问题.md +++ b/docs/常见问题.md @@ -1,6 +1,6 @@ -# 常见问题 +## 常见问题 -## 软件一打开就闪退 +### 软件一打开就闪退 - 可能性 1: 运行库问题。 请尝试安装 [Visual C++ Redistributable](https://docs.microsoft.com/zh-CN/cpp/windows/latest-supported-vc-redist?view=msvc-160#visual-studio-2015-2017-2019-and-2022)、[.NET Framework 4.8](https://dotnet.microsoft.com/download/dotnet-framework/net48) 后重新运行本软件。 @@ -10,11 +10,11 @@ (具体可以下载 [CPU-Z](https://www.cpuid.com/softwares/cpu-z.html),查看“指令集”中有无 `AVX` 这一项来判断) - 若上述均没有效果,请提 issue。 -## 软件可以正常启动,但一点击开始运行就闪退 +### 软件可以正常启动,但一点击开始运行就闪退 设置中的`bluestacks.conf`, 是给 [蓝叠模拟器 Hyper-V 版本](https://github.com/MistEO/MeoAssistantArknights/blob/master/docs/%E6%A8%A1%E6%8B%9F%E5%99%A8%E6%94%AF%E6%8C%81.md#%E8%93%9D%E5%8F%A0%E6%A8%A1%E6%8B%9F%E5%99%A8-hyper-v-%E7%89%88%E6%9C%AC) 使用的,若非该版本,请不要填写该项。如果确定不是这个问题,请再提 issue ~ -## 连接错误/捕获模拟器窗口错误 +### 连接错误/捕获模拟器窗口错误 提示 : 请根据 [使用说明](../README.md#使用说明) 确定您的模拟器及打开方式正确 @@ -22,7 +22,7 @@ - 方法 2: 换模拟器,推荐 [蓝叠国际版](https://www.bluestacks.com/download.html) Nougat 64 bit - 方法 3: _根本解决方法_ 编辑 `resource/config.json`, 修改(最好是新增)模拟器窗口句柄名,并修改对应的 adb 设置。若您修改后可以提 PR 给我,我会感激不尽的_(:з」∠)_ -## 识别错误/任务开始后一直不动、没有反应 +### 识别错误/任务开始后一直不动、没有反应 提示 : 依次进行,若问题解决,则无需往下 @@ -32,11 +32,11 @@ 4. 换模拟器,推荐 [蓝叠国际版](https://www.bluestacks.com/download.html) Nougat 64 bit ( 请注意蓝叠需要在模拟器设置里开启 adb ) 5. 若仍有问题,请提 issue -## 自定义连接 +### 自定义连接 - 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 - 进入软件 `设置` - `连接设置`,填写自定义 adb 地址(需要填写 IP + 端口,例如 `127.0.0.1:5555` ) -## 环境变量中已有 adb, 可以不再下载一份么? +### 环境变量中已有 adb, 可以不再下载一份么? 可以!请手动修改 `resource\config.json` - `Custom` - `adb` - `path` 为 `adb.exe`, 或其他 adb 的路径 diff --git a/docs/模拟器支持.md b/docs/模拟器支持.md index 2f7d6dbbf6..4f894620fa 100644 --- a/docs/模拟器支持.md +++ b/docs/模拟器支持.md @@ -1,14 +1,14 @@ -# 模拟器支持 +## 模拟器支持 -## 蓝叠模拟器 +### 蓝叠模拟器 完美支持。需要在模拟器 `设置` - `引擎设置` 中打开 `允许ADB连接` -## 蓝叠模拟器国际版(推荐使用) +### 蓝叠模拟器国际版(推荐使用) 完美支持。需要在模拟器 `设定` - `进阶` 中打开 `Android调试桥` -## 蓝叠模拟器 Hyper-V 版本 +### 蓝叠模拟器 Hyper-V 版本 支持 @@ -16,50 +16,50 @@ 2. 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 3. 在软件 `设置` - `连接设置` 中填写蓝叠安装目录下 `bluestacks.conf` 文件的完整路径 -## 夜神模拟器 +### 夜神模拟器 完美支持 -## 夜神模拟器 安卓 9 +### 夜神模拟器 安卓 9 完美支持 -## MuMu 模拟器 +### MuMu 模拟器 支持。但是可能会 - 一直连接出错:暂时不知道是什么原因,可尝试使用自定义连接 - 卡在主界面无法识别,过一会提示任务出错:和 MuMu 的渲染方式有关,推荐换模拟器( -## MuMu 手游助手(星云引擎) +### MuMu 手游助手(星云引擎) 不支持。没开放 adb 端口 -## MuMu 模拟器 安卓 9 +### MuMu 模拟器 安卓 9 不支持。adb 截图出来是黑的,不知道怎么整 -## 雷电模拟器 +### 雷电模拟器 勉强支持。雷电总有莫名其妙的问题,可以试试看,不保证能用( -## 逍遥模拟器 +### 逍遥模拟器 支持。但可能有莫名其妙的识别错误问题 -## 腾讯手游助手 +### 腾讯手游助手 不支持。没开放 adb 端口 -## Win11 WSA +### Win11 WSA 不支持。WSA 目前没有实现 AOSP screencap 需要的接口,无法进行截图。等微软支持后会尝试适配 -## AVD +### AVD 支持。 -## 自定义连接 +### 自定义连接 1. 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 2. 进入软件 `设置` - `连接设置`,填写自定义 adb 地址(需要填写 IP + 端口,例如 `127.0.0.1:5555` ) diff --git a/docs/详细介绍.md b/docs/详细介绍.md index cedf3d0190..bd355f3278 100644 --- a/docs/详细介绍.md +++ b/docs/详细介绍.md @@ -1,6 +1,8 @@ -# 详细介绍 +# MAA使用说明 -## 刷理智 +## 详细介绍 + +### 刷理智 - 若选项中没有你需要的关卡,请手动进入游戏 **蓝色开始按钮** 界面,并选择 `当前关卡`。 - 主界面上的 `吃理智`、`吃石头`、`指定次数` 三个选项为短路开关,即三个选项中的任一条件达到,均会视为任务完成,停止刷理智。 @@ -15,17 +17,17 @@ - 支持打完升级了的情况 - 支持代理失败的情况,会自动放弃本次行动 -## 基建换班 +### 基建换班 -### 换班策略 +#### 换班策略 自动计算并选择 **单设施内的最优解**,支持所有通用类技能和特殊技能组合;支持识别经验书、赤金、原石碎片、芯片,分别使用不同的干员组合! -### 宿舍入驻心情阈值 +#### 宿舍入驻心情阈值 识别心情进度条的百分比;心情小于该阈值的干员,不会再去上班,直接进驻宿舍。 -### 特殊说明 +#### 特殊说明 - 基建换班目前均为单设施最优解,但非跨设施的全局最优解。例如:`巫恋+龙舌兰`、`红云+稀音` 等这类单设施内的组合,都是可以正常识别并使用的;`迷迭香`、`红松骑士团` 这类多个设施间联动的体系,暂不支持使用。 - 若 `无人机用途` 选择 `贸易站-龙门币` ,则将额外识别是否有 `巫恋组`,并优先为其使用。 @@ -34,17 +36,17 @@ - 控制中枢策略太过复杂,目前只考虑 `阿米娅`、`诗怀雅`、`凯尔希`、`彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。 - 部分异格干员会在基建内产生冲突,请留意辅助界面上是否有提示 “干员冲突”,若有请手动再查看下基建换班情况(可能会有某个设施没人) -## 信用商店随缘买 +### 信用商店随缘买 从左到右依次买,但不会买 `碳` 和 `家具零件` 。有需要的同学可自行修改 `resource/tasks.json` 中 `CreditShop-NotToBuy` - `text` 字段,自定义不买的物品。后续版本会尝试开放界面选项 -## 公开招募识别 +### 公开招募识别 - 自动公招和公招识别是两个独立的功能! - 自动公招支持使用 `加急许可`,全自动连续公招!请进入设置中选择~ - 出 5、6 星都会有弹窗提示 -## 自动肉鸽功能 +### 自动肉鸽功能 - 设置中的三个选项 - 尽可能往后打:用于刷蜡烛 @@ -55,7 +57,7 @@ - 如果软件出现 bug 卡住了,会自动放弃当次探索并重试。但如果经常在某个地方卡住然后放弃、严重影响效率的,欢迎提个 issue 反馈一下~ -## 其他乱七八糟的说明 +### 其他乱七八糟的说明 - 主界面上要执行的任务,是可以拖动改变顺序的。同样设置中基建换班的顺序,也是可以拖动改变的。 - 新的活动关卡刚上线的时候可能无法正常识别,一般一两天内软件会自动 OTA 更新资源,更新后即可正常识别。 @@ -66,10 +68,10 @@ - 软件支持自动更新✿✿ヽ(°▽°)ノ✿ 推荐非杠精的同学使用测试版,一般来说更新快且 bug 少(什么 MIUI (╯‵□′)╯︵┻━┻ - 如果新版本自动下载失败,可手动下载后,直接把压缩包放到同目录下,会自动更新的。 -## 我是国际服玩家,可以使用么? +### 我是国际服玩家,可以使用么? 可以!但是目前只支持少部分功能,请参考 [这个链接](../resource/international/) -## I'm an international server player, could I use it? +### I'm an international server player, could I use it? Yes, but there are few supported features, please refer to [this link](../resource/international/) From ffd14ac154a23e5a40ab142f7cd87910b22f5fad Mon Sep 17 00:00:00 2001 From: Alisa Date: Sat, 7 May 2022 02:57:01 +0800 Subject: [PATCH 55/70] ci: add Azure Static Web Apps workflow file on-behalf-of: @Azure opensource@microsoft.com --- ...tatic-web-apps-gentle-desert-00290f400.yml | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/azure-static-web-apps-gentle-desert-00290f400.yml diff --git a/.github/workflows/azure-static-web-apps-gentle-desert-00290f400.yml b/.github/workflows/azure-static-web-apps-gentle-desert-00290f400.yml new file mode 100644 index 0000000000..ee3cecd19c --- /dev/null +++ b/.github/workflows/azure-static-web-apps-gentle-desert-00290f400.yml @@ -0,0 +1,45 @@ +name: Azure Static Web Apps CI/CD + +on: + push: + branches: + - master + pull_request: + types: [opened, synchronize, reopened, closed] + branches: + - master + +jobs: + build_and_deploy_job: + if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GENTLE_DESERT_00290F400 }} + repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) + action: "upload" + ###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### + # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig + app_location: "/docs" # App source code path + api_location: "" # Api source code path - optional + output_location: ".vuepress/dist" # Built app content directory - optional + ###### End of Repository/Build Configurations ###### + + close_pull_request_job: + if: github.event_name == 'pull_request' && github.event.action == 'closed' + runs-on: ubuntu-latest + name: Close Pull Request Job + steps: + - name: Close Pull Request + id: closepullrequest + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GENTLE_DESERT_00290F400 }} + action: "close" From 18013cd42818676cb4dede62e84bcf0dfb891a29 Mon Sep 17 00:00:00 2001 From: Alisa Date: Sat, 7 May 2022 03:05:30 +0800 Subject: [PATCH 56/70] Update package.json --- docs/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/package.json b/docs/package.json index a9c62b3a67..95db32f446 100644 --- a/docs/package.json +++ b/docs/package.json @@ -14,7 +14,7 @@ "vuepress": "^2.0.0-beta.43" }, "scripts": { - "docs:dev": ": > readme.md | cat 详细介绍.md 常见问题.md 模拟器支持.md 回调消息协议.md >> readme.md | vuepress dev .", - "docs:build": ": > readme.md | cat 详细介绍.md 常见问题.md 模拟器支持.md 回调消息协议.md >> readme.md | vuepress build ." + "dev": ": > readme.md | cat 详细介绍.md 常见问题.md 模拟器支持.md 回调消息协议.md >> readme.md | vuepress dev .", + "build": ": > readme.md | cat 详细介绍.md 常见问题.md 模拟器支持.md 回调消息协议.md >> readme.md | vuepress build ." } } From 19af9382b894fbc66d0b485054bc24e071bb3dc2 Mon Sep 17 00:00:00 2001 From: Alisa Date: Sat, 7 May 2022 03:16:01 +0800 Subject: [PATCH 57/70] =?UTF-8?q?ci.=E4=BC=98=E5=8C=96=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=8F=91=E5=B8=83=20CI/CD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0290f400.yml => maa-doc-azure-deploy.yaml} | 23 ++++--------------- 1 file changed, 4 insertions(+), 19 deletions(-) rename .github/workflows/{azure-static-web-apps-gentle-desert-00290f400.yml => maa-doc-azure-deploy.yaml} (57%) diff --git a/.github/workflows/azure-static-web-apps-gentle-desert-00290f400.yml b/.github/workflows/maa-doc-azure-deploy.yaml similarity index 57% rename from .github/workflows/azure-static-web-apps-gentle-desert-00290f400.yml rename to .github/workflows/maa-doc-azure-deploy.yaml index ee3cecd19c..b7fe035724 100644 --- a/.github/workflows/azure-static-web-apps-gentle-desert-00290f400.yml +++ b/.github/workflows/maa-doc-azure-deploy.yaml @@ -4,14 +4,12 @@ on: push: branches: - master - pull_request: - types: [opened, synchronize, reopened, closed] - branches: - - master + paths: + - "docs/*" + workflow_dispatch: jobs: - build_and_deploy_job: - if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') + build_and_deploy: runs-on: ubuntu-latest name: Build and Deploy Job steps: @@ -30,16 +28,3 @@ jobs: app_location: "/docs" # App source code path api_location: "" # Api source code path - optional output_location: ".vuepress/dist" # Built app content directory - optional - ###### End of Repository/Build Configurations ###### - - close_pull_request_job: - if: github.event_name == 'pull_request' && github.event.action == 'closed' - runs-on: ubuntu-latest - name: Close Pull Request Job - steps: - - name: Close Pull Request - id: closepullrequest - uses: Azure/static-web-apps-deploy@v1 - with: - azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GENTLE_DESERT_00290F400 }} - action: "close" From 8f2a6d7c441a039b5b7edd04543515ff6b0599fe Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Sat, 7 May 2022 10:20:15 +0800 Subject: [PATCH 58/70] =?UTF-8?q?perf.=E5=A2=9E=E9=95=BF=E5=8D=95=E6=AC=A1?= =?UTF-8?q?`SlowSwipe`=E6=BB=91=E5=8A=A8=E9=95=BF=E5=BA=A6=EF=BC=8C?= =?UTF-8?q?=E4=BD=86=E4=B8=8D=E4=BC=9A=E8=B6=85=E8=BF=87=E5=B1=8F=E5=B9=95?= =?UTF-8?q?=E5=AE=BD=E5=BA=A6=E7=9A=8480%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index 1603737eab..8a8e2dc3db 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -2971,7 +2971,7 @@ "algorithm": "justReturn", "action": "clickRect", "specificRect": [ - 700, + 200, 200, 100, 300 From 8541c54158ced31f5d83eec44f96293c505f03c7 Mon Sep 17 00:00:00 2001 From: ABA2396 <2396806385@qq.com> Date: Sat, 7 May 2022 11:14:02 +0800 Subject: [PATCH 59/70] =?UTF-8?q?feat.=E5=90=88=E5=B9=B6LS-5=20LS-6;CE-5?= =?UTF-8?q?=20CE-6=E5=AF=BC=E8=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 178 ++++++++++++---------------- resource/template/UnableToAgent.png | Bin 0 -> 7848 bytes 2 files changed, 74 insertions(+), 104 deletions(-) create mode 100644 resource/template/UnableToAgent.png diff --git a/resource/tasks.json b/resource/tasks.json index d172764b80..55508ced7d 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -363,59 +363,12 @@ "algorithm": "justreturn", "action": "doNothing", "next": [ - "StageResourceToLS6", - "StageLSToStageLS6", + "StageResourceToLS", + "StageLSToLS", "StageLS6" ] }, - "StageResourceToLS6": { - "template": "StageResource.png", - "roi": [ - 640, - 640, - 300, - 60 - ], - "action": "clickSelf", - "next": [ - "SwipeToStageLS6" - ] - }, - "SwipeToStageLS6": { - "algorithm": "justReturn", - "action": "swipeToTheLeft", - "next": [ - "StageLSToStageLS6" - ] - }, - "StageLSToStageLS6": { - "template": "StageLS.png", - "action": "clickSelf", - "cache": false, - "next": [ - "StageLS6" - ] - }, - "StageLS6": { - "action": "clickSelf", - "cache": false, - "roi": [ - 923, - 102, - 259, - 136 - ] - }, - "LS-5": { - "algorithm": "justreturn", - "action": "doNothing", - "next": [ - "StageResourceToLS5", - "StageLS", - "StageLS5" - ] - }, - "StageResourceToLS5": { + "StageResourceToLS": { "template": "StageResource.png", "roi": [ 640, @@ -432,12 +385,44 @@ "algorithm": "justReturn", "action": "swipeToTheLeft", "next": [ - "StageLS" + "StageLSToLS" ] }, - "StageLS": { + "StageLSToLS": { + "template": "StageLS.png", "action": "clickSelf", "cache": false, + "next": [ + "StageLS6" + ] + }, + "StageLS6": { + "action": "clickSelf", + "cache": false, + "roi": [ + 936, + 101, + 243, + 143 + ], + "next": [ + "UnableToAgentLS6", + "AgentLS6" + ] + }, + "AgentLS6": { + "algorithm": "justReturn", + "action": "DoNothing" + }, + "UnableToAgentLS6": { + "template": "UnableToAgent.png", + "action": "swipeToTheLeft", + "roi": [ + 994, + 535, + 286, + 143 + ], "next": [ "StageLS5" ] @@ -672,59 +657,12 @@ "algorithm": "justreturn", "action": "doNothing", "next": [ - "StageResourceToCE6", - "StageCE", + "StageResourceToCE", + "StageCEToCE", "StageCE6" ] }, - "StageResourceToCE6": { - "template": "StageResource.png", - "roi": [ - 640, - 640, - 300, - 60 - ], - "action": "clickSelf", - "next": [ - "SwipeToStageCE6" - ] - }, - "SwipeToStageCE6": { - "algorithm": "justReturn", - "action": "swipeToTheLeft", - "next": [ - "StageCEToCE6" - ] - }, - "StageCEToCE6": { - "template": "StageCE.png", - "action": "clickSelf", - "cache": false, - "next": [ - "StageCE6" - ] - }, - "StageCE6": { - "action": "clickSelf", - "cache": false, - "roi": [ - 936, - 101, - 243, - 143 - ] - }, - "CE-5": { - "algorithm": "justreturn", - "action": "doNothing", - "next": [ - "StageResourceToCE5", - "StageCE", - "StageCE5" - ] - }, - "StageResourceToCE5": { + "StageResourceToCE": { "template": "StageResource.png", "roi": [ 640, @@ -741,12 +679,44 @@ "algorithm": "justReturn", "action": "swipeToTheLeft", "next": [ - "StageCE" + "StageCEToCE" ] }, - "StageCE": { + "StageCEToCE": { + "template": "StageCE.png", "action": "clickSelf", "cache": false, + "next": [ + "StageCE6" + ] + }, + "StageCE6": { + "action": "clickSelf", + "cache": false, + "roi": [ + 936, + 101, + 243, + 143 + ], + "next": [ + "UnableToAgentCE6", + "AgentCE6" + ] + }, + "AgentCE6": { + "algorithm": "justReturn", + "action": "DoNothing" + }, + "UnableToAgentCE6": { + "template": "UnableToAgent.png", + "action": "swipeToTheLeft", + "roi": [ + 994, + 535, + 286, + 143 + ], "next": [ "StageCE5" ] diff --git a/resource/template/UnableToAgent.png b/resource/template/UnableToAgent.png new file mode 100644 index 0000000000000000000000000000000000000000..c6c33591cdf4ea1224c8b6c438a783b58ca84727 GIT binary patch literal 7848 zcmbVRc{r4N`?r-uafU+KVkk!;qbOT-gh^BsvX;b=5VB=&;V5E;FqWn?Xf>s5V;K&G z!eq<7@B41XHhwpCPIcU!|^ zd-x-@feC(Q2>UlMFbFxK)eoQcU>q&g31Em~eRc}Lu8PUt_2^aV z-Uclmys=6;wlSmF%)ZGr-TqCcT?Ut8dU|NO!ACbzNwtc5^yArA0$zJZ)(aajDrsFg zb&5;A2lL037}aG>YCHKt{}``@ zDSdKISEMnTi!B%7t9G)3#9=uT!FSFBExH};fwtrli$JDfR-dPM9$Tt`IH1K;&JkWb zsU_-&<=c$vX3-Mmv|i70qj0jj#KLE`E+xUOiPMi(R1v2z97Jum@GKK=U-Yff6n1qE zVN8uIkm{r|-%7m`&0nHr>E9_Hd>IKp4u>3HeKy~3@Gxwt4x&*@lojodW5g;7p?h=? zMdz*K8PFUxgDH4=4W2#|3a6lT2F;G;j7$5DyxNKP-o_+w!Cy*z;uvlD(8J-bi|_Vg ze|Ch@8%XB}_5Ik=!-#X%{>ZzU2+xS(D>3{#4FWtvuU}_+@cj9R3x2U>pz2Xc zs9--yy6YUJP*BO;p>e9SuOf~+n8kMWDCStc;!-4(Ct&YQ=@ABI=2lXoInjsN)Ua)?1w9E$&;B~tNHivCj*xb!m@A`{h zmttk?KD#!rah2-TC*~se{((V5!I>^>K=&L*WUn5#M}$olbqG-+7MzQ=R4fnS776ZT zzjdVQcX@%$ADrSzTF9-#{tRCcbpMk!X;=}v&tXLI+;mW!UTK& zN1LhDQ@uHE;}S>VO@C@5Zt&q&U%tR^j{Q$)@@~A9SoOQ2K-6a_KQS_{&(dQe-fZXO zA&u1;TKH5R=x1RH$gC#|n&h~(=lhgd=~WZZ5x@SLoZvN*jD#wq26^DqeFV!Q2uIVXAWt zzyJ*2b?$%-4Efr;Nd_G1$Y^$0oG9WnB$~I@)QCy)aa1NK@p=qBNtqjMcAqNS>DS3_ zVU&KUF5hR70mY2O+@SPJ?cU9T#F#ib%J3sA5|lEZKfnC;_7*9_RAldMsno2g_fiV> zO*75y^sO=|vA7R1-GGP8%4sd31;7<>hfIPZV?(1&Pml z=P!W$_Vp;`YBVdX@O_;X@+PafQC@PjKpfCmw+=abmzz6x>FP9%N@{Lm$ec zXJ==7dwcEe?MFvP38xJW>uYOsSLln{QM>t3*5y5A5g*>aPd<**GcwvW2pkipx-ig| z=T&wRKru0CuBxhPYT9V(w>*3A-o2jllU;8U5)!T!< z6cE;EcY_Yjxnf^E-x8hrVZTF*RxEO%F}pur-)pw6V1-^J+~!F&`!`ffJ$vr~cn7Zz zd}QWS{@C2iuEj*}6sDiAeSAtgTG}krL9m0mNM5KT>Lwg?g;U?*l~MJWctE(KXli6+ zbn>LE-KX6TUc4BEbFgj}7#JM1{r&fbY?uDTqj&tTU%x&--9O%%L+w{vIdJmy>8tHN zRK|*m3g|lm`YDkpBO~KzXJ_Z=xHE}FA|)sHLBCCUc*DE>k*Mahiys0vZEy4JPq=?y z2qpF#zyp|SYHHfqNnKf%ynZ{B-!L6uj?3N8ycQjMoc0 zay_U0Z?W?Vse1D%c88$0ZQJHH(lA*n7RGSv)-6EBi#oR4Nbz0Ivt`S2w;EmSV@pd5 z6vgyv)zQLpTv@cPJ0+ppsr1EhzllQD0+0#moRPHH*litve{-f|dxm{8kWr?6vs+K; zFZHg>0f$bVstRCc)xxRzTsw8@)Y-F*wNLcj;hmpM99`YrPuy3|hB=3kxC9&}Eu9a8 z5K-2nwp^oT-=3fFMtG@%^N|p_w0iqr%ip3iP&#h{6||G zl$T9QR2*m*uO@8t@?0VCRzP)ibzorNZ$X>$W(yp!^$X10TW4_;Zw<+)H2Aa^CYgap9BR*dql%>rcCT3zdBXJ&vwnXNUNGV^C& zMCcwIw4nD|xQ(|}q-^|7k25lunU;dHK^zmS#Mj-rrB6|wo_hKrp!b7CQ-=L^$zu=k z_jK-?y1v~~@IlJZp(&RihG{P%L ztX2d|Ind@%?Gs||)cc{jXWG?pI(~+R|jnq}*$E zncRuKI7j-xqcGq34;D-S<=eM!xh0O%Mr_n_{8s4TZO0p5_rq)|^~bv;>n04596UYe z8(v+=A(4P#k-_qKO6KLpG{N|B*MC>AlD=FJwZ~+?V_W=jiAn5_m|X$e=L4S_#Zufo znVg(_>XF7hLI^)9nLw}tPYaH|E`#hBCfZE*5OjfG4@!`XT@ZT`bnV0IG_T&A8PQLGrwotYE^nA7bCX2bF zoG)&a#FmHbh>eTuo>VO1{?2P%wr6Fbal0h3@DB|SYlaE3)5=RV{_xdUU(Yenl<8<| zXD5m&(Ee&tt0)s#bs;3C0$xg9>XlhsrmKsdI(d?7t%u+hCk_rG4VpQNU%qj+w;xzbaZq)J+mqOt0NK+rbcgYZQUYe09eBG2`ahmHh!~V*REZFL0gXd z_-~vlEWlvU6+dVD-bj7j?BUcLjS#-`k{;+|V2XKV+Fsjm+J5T`2q6Lo(z3E>v399A zWzQ+lf~MwX;ACi`Ae@u(_g?Rl+ado8VB=L~tG8|6ZpJo&!-R4zhj3`96;gzK6>-PA z#J>iTFSd@a3pzc2G^2UR*AG;Bm`L`8iGI7*ALNxqvargv8T#^~V9DUvn9#mUr+4uT z4Gmob;;rD2MWOwZv`D}?DLQfMR|B617(l_2RrLb^)K;d|n1Rv3n)JgHg#DJBI(i~b z(EAj~Y@Z1UEAa#fFE=+A3{YNP!W(_v1HHM^l~U5us)K}x(hicti4zp1@!W33yEu%& zH_qT#Q_S8A`HQXNOq^;<6W|-h^Qh+JcCu9&)-1;jV`<&9gJM^#r8cb7N~iDDX> zHgC8Bxw4j3!}!95M^cQcsI*@a@tDJi60JRZ_HgX@5thWqj|aTk7tJj!+AoBu%z++d zq^3#>g(>XYH^1x)&KB2r)+WKVM9>`>QMRfOK0ZE#wa_bXTTKA-bpL8K+NH0YF-qDD zN|xi&Ux~$H0|VDMD;16a#61T@ROO|WHZu8u%*RLZw zH~f=$*;h5+>i5f+uZkDgyuVb3z@7F zr{TcLDdgRUv(duH`!3O>fZ3O(DVZ>v2OQgS2WwK=uh!^b;c4}Cb?d-lE_&w!B(GCa zf+B&#e4s}KPVC~jt?{VyiqYNf+M}Yc8m>*C00jbnOHISTF@H)3kISY3=Xij7yq&yK ztAFA}YQAN4ad4RxLT29k=bZteS8~giEv~MvlODNGo&?LI2`%pJK0uydyy6-PNDP8w zeLn@yx!dSv$3$n5za9hnkge??==^4A{*rE|YSa34F#AsRX6_K_m`=Wjo>8TB+@QAm z`E|bw1>aj&SJ(5Yu5PyD1}D?eqetN-)IWX^i)0#s;V%l@1UYGnH-F+5Ajh<(V4%N% zQJVL>^WB}_wZGA26&ioXF}7-sG26BBYut{z8j#s`ZTOy{g^ol7*19tOKzAa0L>bb2 zYTnq`70@o)cq$&EYdi zGCq?dQ&U!Q!O`CNQBhle<~<~yBqk>Q#RlM+BO$w0#2b06uE=2%1U`vb&mnhj|)k+ ztEYQ;Ep9mzO^Mli<8se5yh8To*S*u%y}>_bUu$75ldJ-5Soh3OZMq!gPiO}B{H8{C z6^GTcgBqawA)lAyP>l7i;_&s$3-x3nunV@}6|?9I!vUYEuzGH+b+K$GKKy%CjEs$q z1<6$xt!i$*V|e)RVOhSBp`lB*wmZHJgTq-)-TBL-j;NcIerD5p@gm4Oz6&+@ANL3$ zt8wLUpx3s~2BFL-$8D6HnQ3v#bsnr>sm8yFzz-E~f)m+P#P*WLAm>8G#an@)#5C_- zc5u*@hzJc0O^J8Dt>+Jm5=axx!}Y}W*EV6`u1*>oUjx}>nC`34Mj{9}etu+KeSLIv zbS7*=GBYFe^!4@4%<`-&VtLIy7>VrCSshU(4ue0Q*$#~^Ysq%uw`|FB!jfS478bOW zJSIAbe#>^MXTCCjdGOkfe->yu zln$J*{QmuJ?(QoCnrhhEh6Y84mMrMK+=Mh6iV%vqJcMVB`W5mgH=S$C^_=vG7x*7f z{7jE8F+2MJ*9PTch-S{H+|sRU|RnFvzLT^M>s_)PL~xM7k9dTQSLFCz2o z!-wArBE=8CU@YU0Bj}gN!8Exj)2*gZsXeB|M>2UpY z)&|sUx*&l0gz_Yd z#%N7pA(S~RR7dM7J$my%1Y~wQ=GI|3Tnm`oX^I+!>+7Z)b8l_W9l0K!8;cA)8H>wK zW!HkJPe6C+;>TD2|92LZ@!wn~;3=FuS<;PKJ)+-U zONmPTw-*x!;J)RrO9EBA@UAOnX_(UQt{l`2{@V+OZ{YT`7O3f`GOtV3-jB#$#qaNH zxzc0*@#^VoOZF4VbF=&GEZ43KXsGTORk+alpFi&t>;Uik_BD!=mo2#9N=Q73<$wN0 z2iP2#IOfeJ$2nB5z>=4kGe!ywghbM`lTB9p7#qD@F_{9_WTw%VktG_ zGid#GU`ykWfkowtj8HusBV3k%4TwA7(s!Ug9_2@0TD|M6o#ehmBn>s$5natx=X9|DXaz{Y68U)u~U8ws4)eWD*4V?xPfLsAJtV)J#y~){{eWy BLc;(6 literal 0 HcmV?d00001 From 55eaef8e10fc1b542fe3869bff4566637e791a33 Mon Sep 17 00:00:00 2001 From: ABA2396 <2396806385@qq.com> Date: Sat, 7 May 2022 11:47:03 +0800 Subject: [PATCH 60/70] =?UTF-8?q?feat.=E4=BF=AE=E6=94=B9=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=AF=BC=E8=88=AA=E5=90=8E=E7=9A=84ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 9bec0931f8..8c667245f9 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -70,11 +70,9 @@ namespace MeoAsstGui new CombData { Display = "当前关卡", Value = string.Empty }, new CombData { Display = "上次作战", Value = "LastBattle" }, new CombData { Display = "剿灭作战", Value = "Annihilation" }, - new CombData { Display = "龙门币-5", Value = "CE-5" }, - new CombData { Display = "龙门币-6", Value = "CE-6" }, + new CombData { Display = "龙门币5/6", Value = "CE-6" }, + new CombData { Display = "经验5/6", Value = "LS-6" }, new CombData { Display = "红票-5", Value = "AP-5" }, - new CombData { Display = "经验-5", Value = "LS-5" }, - new CombData { Display = "经验-6", Value = "LS-6" }, new CombData { Display = "技能-5", Value = "CA-5" }, new CombData { Display = "1-7", Value = "1-7" } }; From 9bdf71e95da3cca1d48d8cceb701e9a6975b0f36 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Sat, 7 May 2022 12:37:53 +0800 Subject: [PATCH 61/70] =?UTF-8?q?perf.=E5=A2=9E=E9=95=BF=E5=8D=95=E6=AC=A1?= =?UTF-8?q?`SlowSwipe`=E6=BB=91=E5=8A=A8=E6=97=B6=E9=97=B4=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E6=BB=91=E9=A3=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index 8a8e2dc3db..11be016d7c 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -2963,7 +2963,7 @@ 100, 300 ], - "preDelay": 1000, + "preDelay": 1500, "rearDelay": 300, "Doc": "这里的preDelay作为滑动duration使用,rearDelay作为滑动额外延时使用" }, From 795dbbe4901a46b86939831cd1b3ab685000f893 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 7 May 2022 13:26:13 +0800 Subject: [PATCH 62/70] chore. Update appveyor config --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index c3e4a5f2a2..c35f9de288 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 0.8.{build} +version: 0.9.{build} configuration: - RelWithDebInfo - Release @@ -20,4 +20,4 @@ notifications: on_build_failure: true on_build_status_changed: false on_failure: -- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) \ No newline at end of file +- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) From 6517cfa61eabdb214971a932b6a7d16cf178c243 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 7 May 2022 13:33:47 +0800 Subject: [PATCH 63/70] chore. Update appveyor config (#457) --- README.md | 2 +- appveyor.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 357071bd8d..fa161aa1e8 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ MAA 的意思是 MAA Assistant Arknights ### Windows -直接使用 Visual Studio 2019 或更高版本打开 `MeoAssistantArknights.sln` 即可,所有环境都是配置好的 +直接使用 Visual Studio 2022 ~~或更高版本~~ 打开 `MeoAssistantArknights.sln` 即可,所有环境都是配置好的 ### Linux | macOS diff --git a/appveyor.yml b/appveyor.yml index c35f9de288..89b811f78a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,5 @@ version: 0.9.{build} +image: Visual Studio 2022 configuration: - RelWithDebInfo - Release From 3f67826f73a59c41154479e4b863f29c94f8bf96 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 7 May 2022 22:34:50 +0800 Subject: [PATCH 64/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8DSN-9=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E5=9C=A8=E5=8A=A0=E8=BD=BD=E5=8A=A8=E7=94=BB=E8=BE=83?= =?UTF-8?q?=E6=85=A2=E6=97=B6=E5=8D=A1=E4=BD=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index 6a84ccfd2d..fd75d4b4d7 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -94,8 +94,8 @@ ], "next": [ "StageSN-9", - "SwipeLeftToStageSN-9", - "SNChapter3ToSN-9" + "SNChapter3ToSN-9", + "SwipeLeftToStageSN-9" ] }, "SwipeLeftToStageSN-9": { From b9101b070d02b519abc160ae82ca71193300b5c9 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 7 May 2022 22:38:47 +0800 Subject: [PATCH 65/70] =?UTF-8?q?feat.=E7=95=8C=E9=9D=A2=E5=85=B3=E5=8D=A1?= =?UTF-8?q?=E5=AF=BC=E8=88=AA=E7=9A=84=E4=B8=80=E7=82=B9=E5=B0=8F=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/TaskQueueViewModel.cs | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index 8c667245f9..7ebf6f4efa 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -70,20 +70,21 @@ namespace MeoAsstGui new CombData { Display = "当前关卡", Value = string.Empty }, new CombData { Display = "上次作战", Value = "LastBattle" }, new CombData { Display = "剿灭作战", Value = "Annihilation" }, - new CombData { Display = "龙门币5/6", Value = "CE-6" }, - new CombData { Display = "经验5/6", Value = "LS-6" }, + new CombData { Display = "龙门币-6/5", Value = "CE-6" }, + new CombData { Display = "经验-6/5", Value = "LS-6" }, new CombData { Display = "红票-5", Value = "AP-5" }, new CombData { Display = "技能-5", Value = "CA-5" }, - new CombData { Display = "1-7", Value = "1-7" } + new CombData { Display = "1-7", Value = "1-7" }, + + // “愚人号” 活动关卡 + new CombData { Display = "SN-8", Value = "SN-8" }, + new CombData { Display = "SN-9", Value = "SN-9" }, + new CombData { Display = "SN-10", Value = "SN-10" }, + + //// “风雪过境” 活动关卡 + //new CombData { Display = "BI-7", Value = "BI-7" }, + //new CombData { Display = "BI-8", Value = "BI-8" } }; - // “愚人号” 活动关卡 - StageList.Add(new CombData { Display = "SN-8", Value = "SN-8" }); - StageList.Add(new CombData { Display = "SN-9", Value = "SN-9" }); - StageList.Add(new CombData { Display = "SN-10", Value = "SN-10" }); - - // “风雪过境” 活动关卡 - //StageList.Add(new CombData { Display = "BI-7", Value = "BI-7" }); - //StageList.Add(new CombData { Display = "BI-8", Value = "BI-8" }); var now = DateTime.Now; var hour = now.Hour; @@ -475,4 +476,4 @@ namespace MeoAsstGui } } } -} +} From 25549eb8011916d38cee36b71cc8f727b24a6d29 Mon Sep 17 00:00:00 2001 From: MistEO Date: Sat, 7 May 2022 22:51:47 +0800 Subject: [PATCH 66/70] =?UTF-8?q?docs.=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=8F=8Acmake,=E5=88=A0=E9=99=A4=E8=80=81=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=BC=81=E9=B9=85=E5=BA=93=E7=9A=84=E7=9B=B8=E5=85=B3=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 3 +-- docs/Linux编译教程.md | 6 +----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 99248b9d0c..fea561c7bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,7 +22,6 @@ set(CMAKE_CXX_STANDARD 17) add_library(MeoAssistant SHARED ${SRC}) find_library(PaddleOCR_LIB NAMES ppocr PATHS 3rdparty/lib) -find_library(Penguin_LIB NAMES penguin-stats-recognize PATHS 3rdparty/lib) if (WIN32) find_library(OpenCV NAMES opencv_world453 PATHS 3rdparty/lib) @@ -32,7 +31,7 @@ else () find_package(ZLIB REQUIRED) endif () -target_link_libraries(MeoAssistant ${OpenCV} ${PaddleOCR_LIB} ${Penguin_LIB} ${ZLIB}) +target_link_libraries(MeoAssistant ${OpenCV} ${PaddleOCR_LIB} ${ZLIB}) if (BUILD_TEST) add_executable(test tools/TestCaller/main.cpp) diff --git a/docs/Linux编译教程.md b/docs/Linux编译教程.md index 3a81d76218..aed8b9172b 100644 --- a/docs/Linux编译教程.md +++ b/docs/Linux编译教程.md @@ -17,7 +17,7 @@ 1. 使用我魔改了接口的版本:https://github.com/MistEO/PaddleOCR 2. 参考 [这个教程](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.3/deploy/cpp_infer#readme) 3. 额外依赖的 `PaddlePaddle` 直接 [下载](https://paddleinference.paddlepaddle.org.cn/master/user_guides/download_lib.html) 即可。其中 `avx` 和 `mkl` 两者都可以提高计算效率,建议选择。但如果 CPU 不支持,则只能选择 `noavx` 和 `openblas` 的兼容性版本(一般稍微新一点的 CPU 都支持两者了,AMD 的也没关系)。 `cuda` 和 `cudnn` 是 GPU 加速库,在 `PaddleOCR` 上可能比较麻烦,我没折腾过,有兴趣可以尝试下 -4. 若 `cmake` 找不到 `Opencv` ,可尝试修改 [Opencv 的查找路径](https://github.com/MistEO/PaddleOCR/blob/release/2.3/deploy/cpp_infer/CMakeLists.txt#L49) +4. 若 `cmake` 找不到 `Opencv` ,可尝试修改 [Opencv 的查找路径](https://github.com/MistEO/PaddleOCR/blob/release/2.3/deploy/cpp_infer/CMakeLists.txt#L49) 5. 若您使用 `MKL` 版本,可修改 [MKL 宏定义](https://github.com/MistEO/PaddleOCR/blob/release/2.3/deploy/cpp_infer/include/ocr_defines.h#L9) 为 `true` 以提高性能 编译选项参考 @@ -27,10 +27,6 @@ cmake ../ -DPADDLE_LIB=/your_path/paddle_inference/ -DOpenCV_DIR=/your_path_to_o # 若设备不支持 MKL, 可再额外添加 -DWITH_MKL=OFF 选项,并下载对应的 PaddlePaddle 预测库版本 ``` -### penguin-stats-recognize-v3 - -使用我魔改了接口的版本:https://github.com/MistEO/penguin-stats-recognize-v3 - ### zlib Ubuntu 下: From c1a84f54e74f7359a65fcf9076c57c98cd6d8ea1 Mon Sep 17 00:00:00 2001 From: shxyke Date: Sun, 8 May 2022 10:37:22 +0800 Subject: [PATCH 67/70] fix: Fix build error on Linux with gnustl This error seems caused by gnustl vector, I do not know how to fix it, so I use macro to change container to deque under gnustl, use deque under other STL library will also cause problem. --- .../penguin-stats-recognize/result.hpp | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/3rdparty/include/penguin-stats-recognize/result.hpp b/3rdparty/include/penguin-stats-recognize/result.hpp index 5623a8af71..0d9a639550 100644 --- a/3rdparty/include/penguin-stats-recognize/result.hpp +++ b/3rdparty/include/penguin-stats-recognize/result.hpp @@ -13,6 +13,12 @@ #include "core.hpp" #include "recognize.hpp" +#if defined(__GLIBCXX__) || defined(__GLIBCPP__) +#define Widget_container std::deque +#else +#define Widget_container std::vector +#endif + using dict = nlohmann::ordered_json; // extern void show_img(cv::Mat src); @@ -323,7 +329,7 @@ private: const int _CANDIDATES_COUNT = 5; bool _existance = false; std::string _difficulty = "NORMAL"; // for temporary workaround - std::vector _stage_chrs; + Widget_container _stage_chrs; const std::string _stage_code() const { return _stage_code(_candidate_index); @@ -407,8 +413,8 @@ private: } void _get_candidates() { - auto comp = [](std::vector a, - std::vector b) { + auto comp = [](Widget_container a, + Widget_container b) { int dist_a = 0, dist_b = 0; for (const auto& chr : a) { @@ -421,8 +427,8 @@ private: return dist_a > dist_b; }; std::priority_queue< - std::vector, - std::vector>, + Widget_container, + std::vector>, decltype(comp)> q(comp); auto last_pop = _stage_chrs; @@ -882,7 +888,7 @@ public: private: dict _drops_data; std::vector _drop_list; - std::vector _droptype_list; + Widget_container _droptype_list; auto _get_separate() { cv::Mat img_bin = _img; @@ -960,8 +966,8 @@ private: } void _next_droptype_candidate() { - auto comp = [](std::vector a, - std::vector b) { + auto comp = [](Widget_container a, + Widget_container b) { int dist_a = 0, dist_b = 0; for (const auto& type : a) { @@ -974,8 +980,8 @@ private: return dist_a > dist_b; }; std::priority_queue< - std::vector, - std::vector>, + Widget_container, + std::vector>, decltype(comp)> q(comp); auto last_pop = _droptype_list; From df486706f07172c1cd32746edf0ac62cec669570 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Sun, 8 May 2022 13:16:12 +0800 Subject: [PATCH 68/70] =?UTF-8?q?chore.=E4=BC=98=E5=8C=96CI=E4=BD=BF?= =?UTF-8?q?=E5=BE=97=E5=9C=A8fork=E4=B8=8A=E4=B8=8D=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/maa-doc-azure-deploy.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maa-doc-azure-deploy.yaml b/.github/workflows/maa-doc-azure-deploy.yaml index b7fe035724..f71103aa47 100644 --- a/.github/workflows/maa-doc-azure-deploy.yaml +++ b/.github/workflows/maa-doc-azure-deploy.yaml @@ -6,12 +6,12 @@ on: - master paths: - "docs/*" - workflow_dispatch: jobs: build_and_deploy: runs-on: ubuntu-latest name: Build and Deploy Job + if: github.repository_owner == 'MaaAssistantArknights' steps: - uses: actions/checkout@v2 with: From 122c7464a7d6fe94b6271b66f8e77e79c6c9fc7c Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Sun, 8 May 2022 13:03:20 +0800 Subject: [PATCH 69/70] =?UTF-8?q?style.=E9=9A=8F=E4=BE=BF=E6=94=B9?= =?UTF-8?q?=E7=82=B9=E6=B5=8B=E8=AF=95=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/Linux编译教程.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Linux编译教程.md b/docs/Linux编译教程.md index aed8b9172b..a10863e56f 100644 --- a/docs/Linux编译教程.md +++ b/docs/Linux编译教程.md @@ -29,7 +29,7 @@ cmake ../ -DPADDLE_LIB=/your_path/paddle_inference/ -DOpenCV_DIR=/your_path_to_o ### zlib -Ubuntu 下: +Ubuntu 下: ```bash sudo apt update && sudo apt install zlib1g-dev From 511501a6374fd50d8905f819a046956327fb3137 Mon Sep 17 00:00:00 2001 From: ABA2396 <2396806385@qq.com> Date: Sun, 8 May 2022 23:37:44 +0800 Subject: [PATCH 70/70] =?UTF-8?q?fix.=E6=B4=BB=E5=8A=A8=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=90=8E=E5=AF=BC=E8=88=AA=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index 7f3e271583..a17e07f2ae 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -10,7 +10,7 @@ "algorithm": "OcrDetect", "action": "clickSelf", "text": [ - "活动已开放" + "已开放" ], "roi": [ 40, @@ -69,7 +69,7 @@ "algorithm": "OcrDetect", "action": "clickSelf", "text": [ - "活动已开放" + "已开放" ], "roi": [ 40, @@ -128,7 +128,7 @@ "algorithm": "OcrDetect", "action": "clickSelf", "text": [ - "活动已开放" + "已开放" ], "roi": [ 40,

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�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 mz_3&>Gnt&mW-FhVu>TkE)ov}|sq0(-0000 Date: Mon, 2 May 2022 18:31:31 +0800 Subject: [PATCH 17/70] =?UTF-8?q?fix.=E7=BB=A7=E7=BB=AD=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=9F=90=E4=BA=9B=E6=83=85=E5=86=B5=E4=B8=8B=E6=96=AD=E7=BA=BF?= =?UTF-8?q?=E9=87=8D=E8=BF=9E=E5=8F=AF=E8=83=BD=E5=8D=A1=E4=BD=8F=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index 74f1e8c23c..8207fab0bd 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -486,6 +486,7 @@ 85 ], "next": [ + "StartToWakeUp", "StartUpConnectingFlag", "Terminal", "CloseAnno", @@ -4092,8 +4093,8 @@ 100 ], "next": [ - "StartUpConnectingToRoguelike1", "StartToWakeUpToRoguelike1", + "StartUpConnectingToRoguelike1", "TerminalToRoguelike1", "CloseAnnoToRoguelike1", "TodaysSuppliesToRoguelike1" From d5a543cdcff649f5900f623024df66d685d97a31 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Mon, 2 May 2022 18:35:09 +0800 Subject: [PATCH 18/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E6=9F=90=E4=BA=9B?= =?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=8B=E6=96=AD=E7=BA=BF=E9=87=8D=E8=BF=9E?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E5=8D=A1=E5=9C=A8=E7=99=BB=E5=BD=95=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index 8207fab0bd..9a97a7ded8 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -478,7 +478,7 @@ ] }, "StartUpConnectingFlag": { - "action": "doNothing", + "action": "clickSelf", "roi": [ 0, 635, From 6c6bb824cb02e49ef70e229308f6cc9fb2690f9a Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Mon, 2 May 2022 19:06:45 +0800 Subject: [PATCH 19/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D=E6=9F=90=E4=BA=9B?= =?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=8BB=E6=9C=8D=E5=8D=A1=E5=9C=A8?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=95=8C=E9=9D=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 27 +++++++++++++++++++++++- resource/template/StartLoginBServer.png | Bin 0 -> 1751 bytes 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 resource/template/StartLoginBServer.png diff --git a/resource/tasks.json b/resource/tasks.json index 9a97a7ded8..c4863c4d48 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -6,6 +6,7 @@ "GameStart", "StartToWakeUp", "StartUpConnectingFlag", + "StartLoginBServer", "Terminal", "CloseAnno", "TodaysSupplies", @@ -471,6 +472,7 @@ "next": [ "StartToWakeUp", "StartUpConnectingFlag", + "StartLoginBServer", "Terminal", "CloseAnno", "OfflineConfirm", @@ -487,6 +489,7 @@ ], "next": [ "StartToWakeUp", + "StartLoginBServer", "StartUpConnectingFlag", "Terminal", "CloseAnno", @@ -494,6 +497,23 @@ "TodaysSupplies" ] }, + "StartLoginBServer": { + "action": "clickSelf", + "roi": [ + 440, + 370, + 400, + 80 + ], + "next": [ + "StartUpConnectingFlag", + "StartLoginBServer", + "Terminal", + "CloseAnno", + "OfflineConfirm", + "TodaysSupplies" + ] + }, "ReturnToTerminal": { "template": "Return.png", "action": "clickSelf", @@ -1005,6 +1025,7 @@ "EndOfAction", "StartToWakeUp", "StartUpConnectingFlag", + "StartLoginBServer", "OfflineConfirm", "StartButton1" ] @@ -1025,6 +1046,7 @@ "EndOfAction", "StartToWakeUp", "StartUpConnectingFlag", + "StartLoginBServer", "OfflineConfirm", "StartButton1" ] @@ -1044,7 +1066,8 @@ "PrtsErrorConfirm", "OfflineConfirm", "StartToWakeUp", - "StartUpConnectingFlag" + "StartUpConnectingFlag", + "StartLoginBServer" ] }, "OfflineConfirm": { @@ -1063,6 +1086,7 @@ "CloseAnno", "StartToWakeUp", "StartUpConnectingFlag", + "StartLoginBServer", "OfflineConfirm", "TodaysSupplies" ] @@ -1078,6 +1102,7 @@ "next": [ "StartToWakeUp", "StartUpConnectingFlag", + "StartLoginBServer", "Terminal", "CloseAnno", "OfflineConfirm", diff --git a/resource/template/StartLoginBServer.png b/resource/template/StartLoginBServer.png new file mode 100644 index 0000000000000000000000000000000000000000..7964baea7d127ea39f3cc3fa083d4e710a0f47a9 GIT binary patch literal 1751 zcmbtV`#;l*8~?0fJGoz$OR%t|omRfsPDq@waCY2t z-ID7O!Y~naB6nj>$VM%fI0|Rq{(LB1&>|sEouP`(#xm3E*%$j0Y47ofNpvN+2lQ-O&zU4<1^Q0I499GYSA|9>{+E zQCfn(3v==c2LP4Z|1}Ul5FP~pGQJoz$|K5eWjdIgNzj0Z_a@kllA{6e_1Ag*wN~_h~R2 zsh%zg9*tquMts|(g>L!)Jm$I)qW{#z=_n(hCqaOs|aQhIKud+eo$$x#gN zd(KcZSS_e{PUyp-*st&LxWg|ZM5Td|`$y6uM!Up=1yDa`dg1`gIVw6-q=R^Y$dj~sxo|S z`BnW^N$GgA?o$Xin{32beqwH9YdcZKF~E)DUUpu5u8M6Kc~4~=_dR1Pi-d@Sk0cQg zQNg*Y%oDE@67`0}3wNOngg=P>NQ4Wo{(MUmdgtX?-Kw}3em-jklg^%?n9*L~K&3cy zwza06V>~kebJK2_^Y=YOEJIvg#tV!)tT3&vBlo(?uWyzlhtL09=Q*?5N?-2j%T7rb zQds+^;gy9=x|6A4CU<##c4hbnAtdlk!VSaK9b}a$hc}Q|-LGgIIVvcQSr!V+mY9zs zZ|2^@Y%KlpyryFEgpAvrYg-v+iYW^I5pAw_cB(64`eV1=-gz=g7p-}NH!hw|Ta0|G zdpqgEMjuKiWzeafy?yEi^`PcW$N{otfX#UlJjqnk%uRYGp~8KmTo{23P&=8N_vh7} zuN((l|AyVXKHoI7J=syK%4*T^)ca!W+~BddBPY?Hf85HbE`F0oe9x1wn3LzJHZ#bJ zOKlc|J!QW}jE{XUQ}$#EugZlWsFQr7;9f4+rjfl7=*dznN4!3Z7a$S2DqGv=%-x)_ z=Voy)PO0P@_ed*yfLdCcHD?IuXZ3j-3r_lJqScnBpPs1Kpj94($}a6rl^85Bcj0pW zPM5letn5Z$ZhKd^GD3=L1^hxF;`cN`a>WtWMU+YPwIES-f^yt;P!Wroc{nxHC4%i9 z9`B;v_tw|)utaNu4{o5UY4|^n6AGPcw*3ZUaGgn=QhC)jqQ)U zhbB53joxV1l$y)l9ad|JY|geopHh#81zFE8i-BENgxNAZK{1xM@gEB2eiDAX`< zY!R!TXh>*fTPdO9t;;P|vxo~y?seNZZ zCtYPe6m@vOx;i`{{M}ZaMz!s9b{pSaxx4atBBdKg+Q-dKIjTMD&^AN=tHVS4o{hYh zQ}Tai7=@F4@49Na@#GYY_=4!sZTpn|TO#5LBIn9_;FR%~PMT51HZIvo()}!{Gp$!j zLXE+}0FLVmhjBkaYhSVH~Ft*9fj%Yh|7qyKfD9zsh=wAJ{?@ z`s`8J{IEAP*j~X$m`S|3WdNUDWvK00qA-0wiR5sjwX+9*^A+uuh zQUA&H*(6*g#ioSpR{)nab>?DYxnsix7MFkdup*59?jyCn?$gxZ6%q2A(5gLMdWZK6 zUjH-k7%>5xd}W<#NLY)v2RUIm_<&Y9cauiLx#o<4(`ROV2buo;n&XL**&2A6X6YGc z3SCcU4Ht2(kN=L;|8{ko1P=fIDW=oNkgxJIkfZr{>Aoh(_W>~WE@-x$|Gj?!E`LH8 literal 0 HcmV?d00001 From fa2e42123b5c8899fdaf5dd238da86e587ec6ac4 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Tue, 3 May 2022 02:09:25 +0800 Subject: [PATCH 20/70] =?UTF-8?q?fix.=E4=BF=AE=E5=A4=8D`GameStart`?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E7=BC=93=E5=AD=98=E4=BD=8D=E7=BD=AE=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95=E5=94=A4=E9=86=92?= =?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 --- resource/tasks.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resource/tasks.json b/resource/tasks.json index c4863c4d48..8a8c4feb24 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -463,6 +463,7 @@ 200, 120 ], + "cache": false, "templThreshold": 0.7, "rearDelay": 3000, "maskRange": [ From 0550fbb99fb93bdac4f671f28b65ad14a1f265ca Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Tue, 3 May 2022 02:22:59 +0800 Subject: [PATCH 21/70] =?UTF-8?q?feat.=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/ProcessTask.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/MeoAssistant/ProcessTask.cpp b/src/MeoAssistant/ProcessTask.cpp index e66d695c00..17f6b548fc 100644 --- a/src/MeoAssistant/ProcessTask.cpp +++ b/src/MeoAssistant/ProcessTask.cpp @@ -123,6 +123,11 @@ bool ProcessTask::_run() } if (exec_times >= max_times) { + info["details"] = json::object{ + { "task", cur_name }, + { "exec_times", exec_times }, + { "max_times", max_times } + }; Log.info("exec times exceeds the limit", info.to_string()); m_cur_tasks_name = cur_task_ptr->exceeded_next; sleep(task_delay); From 0aa56a5f9d4b6074617446970897f76e54f51c47 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Tue, 3 May 2022 02:48:46 +0800 Subject: [PATCH 22/70] =?UTF-8?q?style.=E4=BF=AE=E5=A4=8D=E4=B8=80?= =?UTF-8?q?=E5=A4=84=E8=8B=B1=E8=AF=AD=E8=AF=AD=E6=B3=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MeoAssistant/ProcessTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MeoAssistant/ProcessTask.cpp b/src/MeoAssistant/ProcessTask.cpp index 17f6b548fc..7abd4d6e3c 100644 --- a/src/MeoAssistant/ProcessTask.cpp +++ b/src/MeoAssistant/ProcessTask.cpp @@ -128,7 +128,7 @@ bool ProcessTask::_run() { "exec_times", exec_times }, { "max_times", max_times } }; - Log.info("exec times exceeds the limit", info.to_string()); + Log.info("exec times exceeded the limit", info.to_string()); m_cur_tasks_name = cur_task_ptr->exceeded_next; sleep(task_delay); continue; From 137c6ff95bae1e33d88b50cb890fe52bbdeedc46 Mon Sep 17 00:00:00 2001 From: zzyyyl <74587068+zzyyyl@users.noreply.github.com> Date: Tue, 3 May 2022 22:17:25 +0800 Subject: [PATCH 23/70] =?UTF-8?q?perf.=E4=BC=98=E5=8C=96`1-7`=E5=AF=BC?= =?UTF-8?q?=E8=88=AA=E6=97=B6=E7=9A=84=E6=BB=91=E5=8A=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 47 +++++++++++++++++---------------------------- 1 file changed, 18 insertions(+), 29 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index 6ad3d26c14..ca37a52906 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -85,8 +85,7 @@ "next": [ "Stage1-7", "SwipeLeftToStage1-7", - "SwipeRightToStage1-7", - "SwipeRightToStage1-7From1-6" + "SwipeRightToStage1-7" ] }, "StageThemeEpisode2ToEpisode1To1-7": { @@ -101,8 +100,7 @@ "next": [ "Stage1-7", "SwipeLeftToStage1-7", - "SwipeRightToStage1-7", - "SwipeRightToStage1-7From1-6" + "SwipeRightToStage1-7" ] }, "StageThemeEpisode1To1-7": { @@ -117,15 +115,19 @@ "next": [ "Stage1-7", "SwipeLeftToStage1-7", - "SwipeRightToStage1-7", - "SwipeRightToStage1-7From1-6" + "SwipeRightToStage1-7" ] }, "SwipeLeftToStage1-7": { "algorithm": "OcrDetect", "action": "swipeToTheLeft", "text": [ - "1-10" + "1-8", + "TR-10", + "1-9", + "1-10", + "1-11", + "1-12" ], "cache": false, "roi": [ @@ -143,7 +145,14 @@ "algorithm": "OcrDetect", "action": "swipeToTheRight", "text": [ - "1-3" + "1-1", + "1-2", + "1-3", + "1-4", + "1-5", + "TR-8", + "1-6", + "TR-9" ], "cache": false, "roi": [ @@ -154,27 +163,7 @@ ], "next": [ "Stage1-7", - "SwipeRightToStage1-7", - "SwipeRightToStage1-7From1-6" - ] - }, - "SwipeRightToStage1-7From1-6": { - "algorithm": "OcrDetect", - "action": "swipeToTheRight", - "text": [ - "1-6" - ], - "cache": false, - "roi": [ - 0, - 120, - 1080, - 480 - ], - "next": [ - "Stage1-7", - "SwipeRightToStage1-7", - "SwipeRightToStage1-7From1-6" + "SwipeRightToStage1-7" ] }, "Stage1-7": { From 698c4ed8ba2d8c58459bebc79ec196eeed9c7b4b Mon Sep 17 00:00:00 2001 From: MistEO Date: Tue, 3 May 2022 23:05:26 +0800 Subject: [PATCH 24/70] =?UTF-8?q?feat.=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E7=BC=93=E6=85=A2=E6=BB=91=E5=8A=A8=E7=9A=84=20ProcessTask=20a?= =?UTF-8?q?ction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 27 ++- src/MeoAssistant/AsstDef.h | 6 +- src/MeoAssistant/ProcessTask.cpp | 24 ++ src/MeoAssistant/ProcessTask.h | 1 + src/MeoAssistant/TaskData.cpp | 368 ++++++++++++++++--------------- 5 files changed, 241 insertions(+), 185 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index ca37a52906..1713eff3a8 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -120,7 +120,7 @@ }, "SwipeLeftToStage1-7": { "algorithm": "OcrDetect", - "action": "swipeToTheLeft", + "action": "SlowlySwipeToTheLeft", "text": [ "1-8", "TR-10", @@ -143,7 +143,7 @@ }, "SwipeRightToStage1-7": { "algorithm": "OcrDetect", - "action": "swipeToTheRight", + "action": "SlowlySwipeToTheRight", "text": [ "1-1", "1-2", @@ -2705,6 +2705,29 @@ 300 ] }, + "ProcessTaskSlowlySwipeRightRect": { + "algorithm": "justReturn", + "action": "clickRect", + "specificRect": [ + 1080, + 200, + 100, + 300 + ], + "preDelay": 1000, + "rearDelay": 300, + "Doc": "这里的preDelay作为滑动duration使用,rearDelay作为滑动额外延时使用" + }, + "ProcessTaskSlowlySwipeLeftRect": { + "algorithm": "justReturn", + "action": "clickRect", + "specificRect": [ + 700, + 200, + 100, + 300 + ] + }, "InfrastOperListSwipeToTheLeftBegin": { "algorithm": "justReturn", "action": "clickRect", diff --git a/src/MeoAssistant/AsstDef.h b/src/MeoAssistant/AsstDef.h index de26dced7e..55112a7806 100644 --- a/src/MeoAssistant/AsstDef.h +++ b/src/MeoAssistant/AsstDef.h @@ -200,8 +200,10 @@ namespace asst DoNothing = 0x200, // 什么都不做 Stop = 0x400, // 停止当前Task BasicSwipe = 0x1000, - SwipeToTheLeft = BasicSwipe | 1, // 往左划一下 - SwipeToTheRight = BasicSwipe | 2, // 往右划一下 + SwipeToTheLeft = BasicSwipe | 1, // 往左划一下 + SwipeToTheRight = BasicSwipe | 2, // 往右划一下 + SlowlySwipeToTheLeft = SwipeToTheLeft | 4, // 慢慢的往左划一下 + SlowlySwipeToTheRight = SwipeToTheRight | 8 // 慢慢的往右划一下 }; // 任务信息 diff --git a/src/MeoAssistant/ProcessTask.cpp b/src/MeoAssistant/ProcessTask.cpp index e66d695c00..1c5696c9bc 100644 --- a/src/MeoAssistant/ProcessTask.cpp +++ b/src/MeoAssistant/ProcessTask.cpp @@ -164,6 +164,10 @@ bool ProcessTask::_run() case ProcessTaskAction::SwipeToTheRight: exec_swipe_task(cur_task_ptr->action); break; + case ProcessTaskAction::SlowlySwipeToTheLeft: + case ProcessTaskAction::SlowlySwipeToTheRight: + exec_slowly_swipe_task(cur_task_ptr->action); + break; case ProcessTaskAction::DoNothing: break; case ProcessTaskAction::Stop: @@ -237,3 +241,23 @@ void asst::ProcessTask::exec_swipe_task(ProcessTaskAction action) break; } } + +void asst::ProcessTask::exec_slowly_swipe_task(ProcessTaskAction action) +{ + LogTraceFunction; + static Rect right_rect = Task.get("ProcessTaskSlowlySwipeRightRect")->specific_rect; + static Rect left_rect = Task.get("ProcessTaskSlowlySwipeLeftRect")->specific_rect; + static int duration = Task.get("ProcessTaskSlowlySwipeRightRect")->pre_delay; + static int extra_delay = Task.get("ProcessTaskSlowlySwipeRightRect")->rear_delay; + + switch (action) { + case asst::ProcessTaskAction::SlowlySwipeToTheLeft: + Ctrler.swipe(left_rect, right_rect, duration, true, extra_delay, true); + break; + case asst::ProcessTaskAction::SlowlySwipeToTheRight: + Ctrler.swipe(right_rect, left_rect, duration, true, extra_delay, true); + break; + default: // 走不到这里,TODO 报个错 + break; + } +} diff --git a/src/MeoAssistant/ProcessTask.h b/src/MeoAssistant/ProcessTask.h index facf6784ef..03a44be557 100644 --- a/src/MeoAssistant/ProcessTask.h +++ b/src/MeoAssistant/ProcessTask.h @@ -26,6 +26,7 @@ namespace asst void exec_click_task(const Rect& matched_rect); void exec_swipe_task(ProcessTaskAction action); + void exec_slowly_swipe_task(ProcessTaskAction action); std::vector m_raw_tasks_name; std::vector m_cur_tasks_name; diff --git a/src/MeoAssistant/TaskData.cpp b/src/MeoAssistant/TaskData.cpp index 27ed1cd47a..d81bf62f62 100644 --- a/src/MeoAssistant/TaskData.cpp +++ b/src/MeoAssistant/TaskData.cpp @@ -10,211 +10,217 @@ const std::shared_ptr asst::TaskData::get(const std::string& name) const noexcept { - if (auto iter = m_all_tasks_info.find(name); - iter != m_all_tasks_info.cend()) { - return iter->second; - } - else { - return nullptr; - } + if (auto iter = m_all_tasks_info.find(name); + iter != m_all_tasks_info.cend()) { + return iter->second; + } + else { + return nullptr; + } } const std::unordered_set& asst::TaskData::get_templ_required() const noexcept { - return m_templ_required; + return m_templ_required; } std::shared_ptr asst::TaskData::get(std::string name) { - return m_all_tasks_info[std::move(name)]; + return m_all_tasks_info[std::move(name)]; } void asst::TaskData::clear_cache() noexcept { - for (auto&& [name, ptr] : m_all_tasks_info) { - ptr->region_of_appeared = Rect(); - } + for (auto&& [name, ptr] : m_all_tasks_info) { + ptr->region_of_appeared = Rect(); + } } bool asst::TaskData::parse(const json::value& json) { - auto to_lower = [](char c) -> char { - return (c >= 'A' && c <= 'Z') ? (c - 'A' + 'a') : c; - }; - for (const auto& [name, task_json] : json.as_object()) { - std::string algorithm_str = task_json.get("algorithm", "matchtemplate"); - std::transform(algorithm_str.begin(), algorithm_str.end(), algorithm_str.begin(), to_lower); - AlgorithmType algorithm = AlgorithmType::Invalid; - if (algorithm_str == "matchtemplate") { - algorithm = AlgorithmType::MatchTemplate; - } - else if (algorithm_str == "justreturn") { - algorithm = AlgorithmType::JustReturn; - } - else if (algorithm_str == "ocrdetect") { - algorithm = AlgorithmType::OcrDetect; - } - else if (algorithm_str == "hash") { - algorithm = AlgorithmType::Hash; - } - else { - m_last_error = "algorithm error " + algorithm_str; - return false; - } + auto to_lower = [](char c) -> char { + return (c >= 'A' && c <= 'Z') ? (c - 'A' + 'a') : c; + }; + for (const auto& [name, task_json] : json.as_object()) { + std::string algorithm_str = task_json.get("algorithm", "matchtemplate"); + std::transform(algorithm_str.begin(), algorithm_str.end(), algorithm_str.begin(), to_lower); + AlgorithmType algorithm = AlgorithmType::Invalid; + if (algorithm_str == "matchtemplate") { + algorithm = AlgorithmType::MatchTemplate; + } + else if (algorithm_str == "justreturn") { + algorithm = AlgorithmType::JustReturn; + } + else if (algorithm_str == "ocrdetect") { + algorithm = AlgorithmType::OcrDetect; + } + else if (algorithm_str == "hash") { + algorithm = AlgorithmType::Hash; + } + else { + m_last_error = "algorithm error " + algorithm_str; + return false; + } - std::shared_ptr task_info_ptr = nullptr; - switch (algorithm) { - case AlgorithmType::JustReturn: - task_info_ptr = std::make_shared(); - break; - case AlgorithmType::MatchTemplate: { - auto match_task_info_ptr = std::make_shared(); - match_task_info_ptr->templ_name = task_json.get("template", name + ".png"); - m_templ_required.emplace(match_task_info_ptr->templ_name); + std::shared_ptr task_info_ptr = nullptr; + switch (algorithm) { + case AlgorithmType::JustReturn: + task_info_ptr = std::make_shared(); + break; + case AlgorithmType::MatchTemplate: { + auto match_task_info_ptr = std::make_shared(); + match_task_info_ptr->templ_name = task_json.get("template", name + ".png"); + m_templ_required.emplace(match_task_info_ptr->templ_name); - match_task_info_ptr->templ_threshold = task_json.get( - "templThreshold", TemplThresholdDefault); - match_task_info_ptr->special_threshold = task_json.get( - "specialThreshold", 0); - if (task_json.contains("maskRange")) { - match_task_info_ptr->mask_range = std::make_pair( - task_json.at("maskRange")[0].as_integer(), - task_json.at("maskRange")[1].as_integer()); - } + match_task_info_ptr->templ_threshold = task_json.get( + "templThreshold", TemplThresholdDefault); + match_task_info_ptr->special_threshold = task_json.get( + "specialThreshold", 0); + if (task_json.contains("maskRange")) { + match_task_info_ptr->mask_range = std::make_pair( + task_json.at("maskRange")[0].as_integer(), + task_json.at("maskRange")[1].as_integer()); + } - task_info_ptr = match_task_info_ptr; - } break; - case AlgorithmType::OcrDetect: { - auto ocr_task_info_ptr = std::make_shared(); - for (const json::value& text : task_json.at("text").as_array()) { - ocr_task_info_ptr->text.emplace_back(text.as_string()); - } - ocr_task_info_ptr->need_full_match = task_json.get("need_match", false); - if (task_json.contains("ocrReplace")) { - for (const json::value& rep : task_json.at("ocrReplace").as_array()) { - ocr_task_info_ptr->replace_map.emplace(rep.as_array()[0].as_string(), rep.as_array()[1].as_string()); - } - } - task_info_ptr = ocr_task_info_ptr; - } break; - case AlgorithmType::Hash: - { - auto hash_task_info_ptr = std::make_shared(); - for (const json::value& hash : task_json.at("hash").as_array()) { - hash_task_info_ptr->hashs.emplace_back(hash.as_string()); - } - hash_task_info_ptr->dist_threshold = task_json.get("threshold", 0); - if (task_json.contains("maskRange")) { - hash_task_info_ptr->mask_range = std::make_pair( - task_json.at("maskRange")[0].as_integer(), - task_json.at("maskRange")[1].as_integer()); - } - hash_task_info_ptr->bound = task_json.get("bound", true); + task_info_ptr = match_task_info_ptr; + } break; + case AlgorithmType::OcrDetect: { + auto ocr_task_info_ptr = std::make_shared(); + for (const json::value& text : task_json.at("text").as_array()) { + ocr_task_info_ptr->text.emplace_back(text.as_string()); + } + ocr_task_info_ptr->need_full_match = task_json.get("need_match", false); + if (task_json.contains("ocrReplace")) { + for (const json::value& rep : task_json.at("ocrReplace").as_array()) { + ocr_task_info_ptr->replace_map.emplace(rep.as_array()[0].as_string(), rep.as_array()[1].as_string()); + } + } + task_info_ptr = ocr_task_info_ptr; + } break; + case AlgorithmType::Hash: + { + auto hash_task_info_ptr = std::make_shared(); + for (const json::value& hash : task_json.at("hash").as_array()) { + hash_task_info_ptr->hashs.emplace_back(hash.as_string()); + } + hash_task_info_ptr->dist_threshold = task_json.get("threshold", 0); + if (task_json.contains("maskRange")) { + hash_task_info_ptr->mask_range = std::make_pair( + task_json.at("maskRange")[0].as_integer(), + task_json.at("maskRange")[1].as_integer()); + } + hash_task_info_ptr->bound = task_json.get("bound", true); - task_info_ptr = hash_task_info_ptr; - } break; - } - task_info_ptr->cache = task_json.get("cache", true); - task_info_ptr->algorithm = algorithm; - task_info_ptr->name = name; - std::string action = task_json.get("action", std::string()); - std::transform(action.begin(), action.end(), action.begin(), to_lower); - if (action == "clickself") { - task_info_ptr->action = ProcessTaskAction::ClickSelf; - } - else if (action == "clickrand") { - task_info_ptr->action = ProcessTaskAction::ClickRand; - } - else if (action == "donothing" || action.empty()) { - task_info_ptr->action = ProcessTaskAction::DoNothing; - } - else if (action == "stop") { - task_info_ptr->action = ProcessTaskAction::Stop; - } - else if (action == "clickrect") { - task_info_ptr->action = ProcessTaskAction::ClickRect; - const json::value& rect_json = task_json.at("specificRect"); - task_info_ptr->specific_rect = Rect( - rect_json[0].as_integer(), - rect_json[1].as_integer(), - rect_json[2].as_integer(), - rect_json[3].as_integer()); - } - else if (action == "swipetotheleft") { - task_info_ptr->action = ProcessTaskAction::SwipeToTheLeft; - } - else if (action == "swipetotheright") { - task_info_ptr->action = ProcessTaskAction::SwipeToTheRight; - } - else { - m_last_error = "Task: " + name + " error: " + action; - return false; - } + task_info_ptr = hash_task_info_ptr; + } break; + } + task_info_ptr->cache = task_json.get("cache", true); + task_info_ptr->algorithm = algorithm; + task_info_ptr->name = name; + std::string action = task_json.get("action", std::string()); + std::transform(action.begin(), action.end(), action.begin(), to_lower); + if (action == "clickself") { + task_info_ptr->action = ProcessTaskAction::ClickSelf; + } + else if (action == "clickrand") { + task_info_ptr->action = ProcessTaskAction::ClickRand; + } + else if (action == "donothing" || action.empty()) { + task_info_ptr->action = ProcessTaskAction::DoNothing; + } + else if (action == "stop") { + task_info_ptr->action = ProcessTaskAction::Stop; + } + else if (action == "clickrect") { + task_info_ptr->action = ProcessTaskAction::ClickRect; + const json::value& rect_json = task_json.at("specificRect"); + task_info_ptr->specific_rect = Rect( + rect_json[0].as_integer(), + rect_json[1].as_integer(), + rect_json[2].as_integer(), + rect_json[3].as_integer()); + } + else if (action == "swipetotheleft") { + task_info_ptr->action = ProcessTaskAction::SwipeToTheLeft; + } + else if (action == "swipetotheright") { + task_info_ptr->action = ProcessTaskAction::SwipeToTheRight; + } + else if (action == "slowlyswipetotheleft") { + task_info_ptr->action = ProcessTaskAction::SlowlySwipeToTheLeft; + } + else if (action == "slowlyswipetotheright") { + task_info_ptr->action = ProcessTaskAction::SlowlySwipeToTheRight; + } + else { + m_last_error = "Task: " + name + " error: " + action; + return false; + } - task_info_ptr->max_times = task_json.get("maxTimes", INT_MAX); - if (task_json.contains("exceededNext")) { - const json::array& excceed_next_arr = task_json.at("exceededNext").as_array(); - for (const json::value& excceed_next : excceed_next_arr) { - task_info_ptr->exceeded_next.emplace_back(excceed_next.as_string()); - } - } - else { - task_info_ptr->exceeded_next.emplace_back("Stop"); - } - task_info_ptr->pre_delay = task_json.get("preDelay", 0); - task_info_ptr->rear_delay = task_json.get("rearDelay", 0); - if (task_json.contains("reduceOtherTimes")) { - const json::array& reduce_arr = task_json.at("reduceOtherTimes").as_array(); - for (const json::value& reduce : reduce_arr) { - task_info_ptr->reduce_other_times.emplace_back(reduce.as_string()); - } - } - if (task_json.contains("roi")) { - const json::array& area_arr = task_json.at("roi").as_array(); - int x = area_arr[0].as_integer(); - int y = area_arr[1].as_integer(); - int width = area_arr[2].as_integer(); - int height = area_arr[3].as_integer(); + task_info_ptr->max_times = task_json.get("maxTimes", INT_MAX); + if (task_json.contains("exceededNext")) { + const json::array& excceed_next_arr = task_json.at("exceededNext").as_array(); + for (const json::value& excceed_next : excceed_next_arr) { + task_info_ptr->exceeded_next.emplace_back(excceed_next.as_string()); + } + } + else { + task_info_ptr->exceeded_next.emplace_back("Stop"); + } + task_info_ptr->pre_delay = task_json.get("preDelay", 0); + task_info_ptr->rear_delay = task_json.get("rearDelay", 0); + if (task_json.contains("reduceOtherTimes")) { + const json::array& reduce_arr = task_json.at("reduceOtherTimes").as_array(); + for (const json::value& reduce : reduce_arr) { + task_info_ptr->reduce_other_times.emplace_back(reduce.as_string()); + } + } + if (task_json.contains("roi")) { + const json::array& area_arr = task_json.at("roi").as_array(); + int x = area_arr[0].as_integer(); + int y = area_arr[1].as_integer(); + int width = area_arr[2].as_integer(); + int height = area_arr[3].as_integer(); #ifdef ASST_DEBUG - if (x + width > WindowWidthDefault || y + height > WindowHeightDefault) { - m_last_error = name + " roi is out of bounds"; - return false; - } + if (x + width > WindowWidthDefault || y + height > WindowHeightDefault) { + m_last_error = name + " roi is out of bounds"; + return false; + } #endif - task_info_ptr->roi = Rect(x, y, width, height); - } - else { - task_info_ptr->roi = Rect(); - } + task_info_ptr->roi = Rect(x, y, width, height); + } + else { + task_info_ptr->roi = Rect(); + } - if (task_json.contains("next")) { - for (const json::value& next : task_json.at("next").as_array()) { - task_info_ptr->next.emplace_back(next.as_string()); - } - } - if (task_json.contains("rectMove")) { - const json::array& move_arr = task_json.at("rectMove").as_array(); - task_info_ptr->rect_move = Rect( - move_arr[0].as_integer(), - move_arr[1].as_integer(), - move_arr[2].as_integer(), - move_arr[3].as_integer()); - } - else { - task_info_ptr->rect_move = Rect(); - } + if (task_json.contains("next")) { + for (const json::value& next : task_json.at("next").as_array()) { + task_info_ptr->next.emplace_back(next.as_string()); + } + } + if (task_json.contains("rectMove")) { + const json::array& move_arr = task_json.at("rectMove").as_array(); + task_info_ptr->rect_move = Rect( + move_arr[0].as_integer(), + move_arr[1].as_integer(), + move_arr[2].as_integer(), + move_arr[3].as_integer()); + } + else { + task_info_ptr->rect_move = Rect(); + } - m_all_tasks_info.emplace(name, task_info_ptr); - } + m_all_tasks_info.emplace(name, task_info_ptr); + } #ifdef ASST_DEBUG - for (const auto& [name, task] : m_all_tasks_info) { - for (const auto& next : task->next) { - if (m_all_tasks_info.find(next) == m_all_tasks_info.cend()) { - m_last_error = name + "'s next " + next + " is null"; - return false; - } - } - } + for (const auto& [name, task] : m_all_tasks_info) { + for (const auto& next : task->next) { + if (m_all_tasks_info.find(next) == m_all_tasks_info.cend()) { + m_last_error = name + "'s next " + next + " is null"; + return false; + } + } + } #endif - return true; -} \ No newline at end of file + return true; +} From 45e2d41cfe507bee6d1ffbf398ce8648143bfe25 Mon Sep 17 00:00:00 2001 From: MistEO Date: Tue, 3 May 2022 23:48:59 +0800 Subject: [PATCH 25/70] =?UTF-8?q?fix.=E5=B0=9D=E8=AF=95=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=82=89=E9=B8=BD=E5=BE=AA=E7=8E=AF=E6=8A=95=E8=B5=84=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MaaAssistantArknights/MaaAssistantArknights/issues/422 --- resource/tasks.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/tasks.json b/resource/tasks.json index 377ef85645..e769dbc771 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -5199,7 +5199,7 @@ 700 ], "preDelay": 500, - "templThreshold": 0.99, + "templThreshold": 0.97, "next": [ "Roguelike1StageEncounterLeaveConfirm" ] From a594cb7d0e4dc785204a414826ad07c829a72e83 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 4 May 2022 00:05:51 +0800 Subject: [PATCH 26/70] =?UTF-8?q?fix.=E5=B0=9D=E8=AF=95=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=9F=BA=E5=BB=BA=E4=B8=8D=E4=BD=BF=E7=94=A8=E6=97=A0=E4=BA=BA?= =?UTF-8?q?=E6=9C=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/tasks.json | 28 +++++++++++++++++++++------- resource/template/DroneConfirm.png | Bin 62601 -> 23599 bytes 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/resource/tasks.json b/resource/tasks.json index e769dbc771..111d4ab8c0 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -2500,7 +2500,8 @@ "Doc": "不同于贸易站,制造站的无人机是一次性全用掉的,所以只执行一次就够了", "next": [ "DroneMax", - "DroneConfirm" + "DroneConfirm", + "DroneCancel" ] }, "DroneAssistTrade": { @@ -2514,7 +2515,8 @@ ], "next": [ "DroneMax", - "DroneConfirm" + "DroneConfirm", + "DroneCancel" ] }, "DroneMax": { @@ -2526,17 +2528,19 @@ 80 ], "next": [ - "DroneConfirm" + "DroneConfirm", + "DroneCancel" ] }, "DroneConfirm": { "action": "clickSelf", "rearDelay": 3500, + "cache": false, "roi": [ - 630, - 500, - 650, - 150 + 778, + 501, + 377, + 165 ], "next": [ "DroneConfirmLoading", @@ -2545,6 +2549,16 @@ "DroneAssistMfg" ] }, + "DroneCancel": { + "action": "ClickSelf", + "cache": false, + "roi": [ + 85, + 498, + 452, + 162 + ] + }, "DroneConfirmLoading": { "algorithm": "OcrDetect", "action": "doNothing", diff --git a/resource/template/DroneConfirm.png b/resource/template/DroneConfirm.png index 36ba8df86262d16f76e77e494a5db8395e11d829..92374d9c6a46b3b58a9ba1e0842ed55dbf3c0799 100644 GIT binary patch literal 23599 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