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 0000000000..912f2ff9be Binary files /dev/null and b/resource/template/ReplenishToMax.png differ diff --git a/resource/template/ReplenishToMaxConfirm.png b/resource/template/ReplenishToMaxConfirm.png new file mode 100644 index 0000000000..4fb6b71871 Binary files /dev/null and b/resource/template/ReplenishToMaxConfirm.png differ diff --git a/src/MeoAssistant/InfrastTask.cpp b/src/MeoAssistant/InfrastTask.cpp index 108096829c..8ac482852b 100644 --- a/src/MeoAssistant/InfrastTask.cpp +++ b/src/MeoAssistant/InfrastTask.cpp @@ -12,6 +12,7 @@ #include "InfrastOfficeTask.h" #include "InfrastDormTask.h" #include "DronesForShamareTaskPlugin.h" +#include "ReplenishOriginiumShardTaskPlugin.h" asst::InfrastTask::InfrastTask(AsstCallback callback, void* callback_arg) : PackageTask(callback, callback_arg, TaskType), @@ -27,6 +28,8 @@ asst::InfrastTask::InfrastTask(AsstCallback callback, void* callback_arg) { m_infrast_begin_task_ptr->set_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,