From 4ccc3cf9acc645964dc64aafd6ca3cf889f3bc02 Mon Sep 17 00:00:00 2001 From: MistEO Date: Wed, 16 Mar 2022 22:10:22 +0800 Subject: [PATCH] =?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 --- docs/集成文档.md | 1 + resource/tasks.json | 21 +++++++++++++++ resource/template/ReplenishToMax.png | Bin 0 -> 1711 bytes resource/template/ReplenishToMaxConfirm.png | Bin 0 -> 2098 bytes src/MeoAssistant/InfrastTask.cpp | 6 +++++ src/MeoAssistant/InfrastTask.h | 2 ++ src/MeoAssistant/MeoAssistant.vcxproj | 2 ++ src/MeoAssistant/MeoAssistant.vcxproj.filters | 6 +++++ .../ReplenishOriginiumShardTaskPlugin.cpp | 25 ++++++++++++++++++ .../ReplenishOriginiumShardTaskPlugin.h | 18 +++++++++++++ src/MeoAssistant/StageDropsTaskPlugin.cpp | 2 -- 11 files changed, 81 insertions(+), 2 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/docs/集成文档.md b/docs/集成文档.md index 11c57caafe..1e9feee8c9 100644 --- a/docs/集成文档.md +++ b/docs/集成文档.md @@ -88,6 +88,7 @@ TaskId ASSTAPI AsstAppendTask(AsstHandle handle, const char* type, const char* p "drones": string, // 无人机用途,可选项,默认 _NotUse // "_NotUse"、"Money"、"SyntheticJade"、"CombatRecord"、"PureGold"、"OriginStone"、"Chip" "threshold": float, // 宿舍进驻心情阈值,可选,取值范围 [0, 1.0],默认 0.3 + "replenish": bool, // 贸易站“源石碎片”是否自动补货,可选,默认 false } ``` diff --git a/resource/tasks.json b/resource/tasks.json index 233f883e4a..17a8582530 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -1930,6 +1930,27 @@ "template": "DroneAssistTrade.png", "action": "Stop" }, + "ReplenishToMax": { + "action": "ClickSelf", + "roi": [ + 882, + 128, + 165, + 149 + ], + "next": [ + "ReplenishToMaxConfirm" + ] + }, + "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>#_J0set_tasks({ "InfrastBegin" }); m_trade_task_ptr->regiseter_plugin(); + m_replenish_task_ptr = m_mfg_task_ptr->regiseter_plugin(); + m_subtasks.emplace_back(m_infrast_begin_task_ptr); } @@ -97,5 +100,8 @@ bool asst::InfrastTask::set_params(const json::value& params) m_office_task_ptr->set_mood_threshold(threshold); m_dorm_task_ptr->set_mood_threshold(threshold); + bool replenish = params.get("replenish", false); + m_replenish_task_ptr->set_enable(replenish); + return true; } diff --git a/src/MeoAssistant/InfrastTask.h b/src/MeoAssistant/InfrastTask.h index a088310de9..8cf047d01a 100644 --- a/src/MeoAssistant/InfrastTask.h +++ b/src/MeoAssistant/InfrastTask.h @@ -12,6 +12,7 @@ namespace asst class InfrastReceptionTask; class InfrastOfficeTask; class InfrastDormTask; + class ReplenishOriginiumShardTaskPlugin; class InfrastTask final : public PackageTask { @@ -34,5 +35,6 @@ namespace asst std::shared_ptr m_reception_task_ptr = nullptr; std::shared_ptr m_office_task_ptr = nullptr; std::shared_ptr m_dorm_task_ptr = nullptr; + std::shared_ptr m_replenish_task_ptr = nullptr; }; } diff --git a/src/MeoAssistant/MeoAssistant.vcxproj b/src/MeoAssistant/MeoAssistant.vcxproj index dea8a1dd86..2f8415a125 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj +++ b/src/MeoAssistant/MeoAssistant.vcxproj @@ -33,6 +33,7 @@ + @@ -101,6 +102,7 @@ + diff --git a/src/MeoAssistant/MeoAssistant.vcxproj.filters b/src/MeoAssistant/MeoAssistant.vcxproj.filters index d981ddbcb7..ad73595838 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj.filters +++ b/src/MeoAssistant/MeoAssistant.vcxproj.filters @@ -303,6 +303,9 @@ 头文件\ImageAnalyzer\Final + + 头文件\Task\Plugin + @@ -503,6 +506,9 @@ 源文件\ImageAnalyzer\Final + + 源文件\Task\Plugin + 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 c6b7859710..734164e173 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.cpp +++ b/src/MeoAssistant/StageDropsTaskPlugin.cpp @@ -73,8 +73,6 @@ bool asst::StageDropsTaskPlugin::_run() } drop_info_callback(); - auto& opt = Resrc.cfg().get_options(); - if (m_enable_penguid) { auto upload_future = std::async( std::launch::async,