From 6e5e3f0eef5e47916e891f2fc0a504e979b096dd Mon Sep 17 00:00:00 2001 From: MistEO Date: Mon, 10 Jan 2022 15:03:51 +0800 Subject: [PATCH] =?UTF-8?q?feat.=E6=96=B0=E5=A2=9E`=E6=97=A0=E4=BA=BA?= =?UTF-8?q?=E6=9C=BA=20for=20=E5=B7=AB=E6=81=8B`=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=EF=BC=8C=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E8=B0=83=E7=94=A8=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/回调消息协议.md | 12 + resource/tasks.json | 42 + resource/template/ShamareThumbnail1.png | Bin 0 -> 18040 bytes resource/template/ShamareThumbnail2.png | Bin 0 -> 19274 bytes resource/template/ShamareThumbnail3.png | Bin 0 -> 17533 bytes src/MeoAssistant/AbstractTask.cpp | 43 +- src/MeoAssistant/AbstractTask.h | 6 +- src/MeoAssistant/Assistant.cpp | 18 +- .../DronesForShamareTaskPlugin.cpp | 44 + src/MeoAssistant/DronesForShamareTaskPlugin.h | 24 + src/MeoAssistant/InfrastAbstractTask.cpp | 23 +- src/MeoAssistant/InfrastAbstractTask.h | 3 +- src/MeoAssistant/InfrastMfgTask.h | 2 +- src/MeoAssistant/InfrastPowerTask.cpp | 2 +- src/MeoAssistant/InfrastPowerTask.h | 2 +- src/MeoAssistant/InfrastProductionTask.cpp | 8 +- src/MeoAssistant/InfrastProductionTask.h | 8 +- src/MeoAssistant/InfrastTradeTask.h | 2 +- src/MeoAssistant/MeoAssistant.vcxproj | 2 + src/MeoAssistant/MeoAssistant.vcxproj.filters | 776 +++++++++--------- src/MeoAssistant/StageDropsTaskPlugin.cpp | 2 +- src/MeoAssistant/StageDropsTaskPlugin.h | 2 +- 22 files changed, 577 insertions(+), 444 deletions(-) create mode 100644 resource/template/ShamareThumbnail1.png create mode 100644 resource/template/ShamareThumbnail2.png create mode 100644 resource/template/ShamareThumbnail3.png create mode 100644 src/MeoAssistant/DronesForShamareTaskPlugin.cpp create mode 100644 src/MeoAssistant/DronesForShamareTaskPlugin.h diff --git a/docs/回调消息协议.md b/docs/回调消息协议.md index ab87bb1fbc..453d83ee6b 100644 --- a/docs/回调消息协议.md +++ b/docs/回调消息协议.md @@ -346,3 +346,15 @@ Todo "index": 0 // 设施序号 } ``` + +- `ProductOfFacility` + 基建产物 + + ```jsonc + // 对应的 details 字段举例 + { + "product": "Money", // 产物名 + "facility": "Mfg", // 设施名 + "index": 0 // 设施序号 + } + ``` diff --git a/resource/tasks.json b/resource/tasks.json index 3497965336..f74df072b0 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -1854,6 +1854,48 @@ "template": "DroneAssistTrade.png", "action": "stop" }, + "ShamareThumbnail": { + "algorithm": "JustReturn", + "action": "doNothing", + "next": [ + "ShamareThumbnail1", + "ShamareThumbnail2", + "ShamareThumbnail3" + ] + }, + "ShamareThumbnail1": { + "action": "doNothing", + "templThreshold": 0.95, + "cache": false, + "roi": [ + 240, + 550, + 380, + 170 + ] + }, + "ShamareThumbnail2": { + "action": "doNothing", + "templThreshold": 0.95, + "cache": false, + "roi": [ + 240, + 550, + 380, + 170 + ] + }, + "ShamareThumbnail3": { + "action": "doNothing", + "templThreshold": 0.95, + "cache": false, + "roi": [ + 240, + 550, + 380, + 170 + ] + }, "InfrastSkillsUpper": { "algorithm": "justReturn", "roi": [ diff --git a/resource/template/ShamareThumbnail1.png b/resource/template/ShamareThumbnail1.png new file mode 100644 index 0000000000000000000000000000000000000000..27ba67b6c043860a31a339e0f143102b275d62f4 GIT binary patch literal 18040 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¾y4}w|NR7r2gW0Gqu;;o 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 Y1Eai-mG|wO-~a#s07*qoM6N<$f~%th{r~^~ literal 0 HcmV?d00001 diff --git a/src/MeoAssistant/AbstractTask.cpp b/src/MeoAssistant/AbstractTask.cpp index 2b1859a463..75155edbfa 100644 --- a/src/MeoAssistant/AbstractTask.cpp +++ b/src/MeoAssistant/AbstractTask.cpp @@ -65,27 +65,30 @@ void asst::AbstractTask::clear_plugin() noexcept json::value asst::AbstractTask::basic_info() const { - // typeid.name() 结果可能和编译器有关,所以这里使用正则尽可能保证结果正确。 - // 但还是不能完全保证,如果不行的话建议 override - static std::regex regex("[a-zA-Z]+Task"); - std::smatch match_obj; - std::string class_name = typeid(*this).name(); - std::string task_name; - if (std::regex_search(class_name, match_obj, regex)) { - task_name = match_obj[0].str(); - } - else { - task_name = class_name; - } + if (m_basic_info_cache.empty()) { + std::string class_name = typeid(*this).name(); + std::string task_name; + // typeid.name() 结果可能和编译器有关,所以这里使用正则尽可能保证结果正确。 + // 但还是不能完全保证,如果不行的话建议 override + std::regex regex("[a-zA-Z]+Task"); + std::smatch match_obj; + if (std::regex_search(class_name, match_obj, regex)) { + task_name = match_obj[0].str(); + } + else { + task_name = class_name; + } - return json::object{ - { "taskchain", m_task_chain }, - { "class", class_name }, - { "subtask", task_name }, - { "details", json::object() } - //{ "CurRetryTimes", m_cur_retry }, - //{ "MaxRetryTimes", m_retry_times } - }; + m_basic_info_cache = json::object{ + { "taskchain", m_task_chain }, + { "class", class_name }, + { "subtask", task_name }, + { "details", json::object() } + //{ "CurRetryTimes", m_cur_retry }, + //{ "MaxRetryTimes", m_retry_times } + }; + } + return m_basic_info_cache; } json::value asst::AbstractTask::basic_info_with_what(std::string what) const diff --git a/src/MeoAssistant/AbstractTask.h b/src/MeoAssistant/AbstractTask.h index 9150aabe7c..6ce9bc834b 100644 --- a/src/MeoAssistant/AbstractTask.h +++ b/src/MeoAssistant/AbstractTask.h @@ -3,6 +3,7 @@ #include #include #include +#include #include "AsstMsg.h" @@ -10,10 +11,6 @@ namespace cv { class Mat; } -namespace json -{ - class value; -} namespace asst { @@ -67,6 +64,7 @@ namespace asst int m_cur_retry = 0; int m_retry_times = RetryTimesDefault; + mutable json::value m_basic_info_cache; std::set m_plugins; }; } diff --git a/src/MeoAssistant/Assistant.cpp b/src/MeoAssistant/Assistant.cpp index 1855af07fe..5c6dc5a8bc 100644 --- a/src/MeoAssistant/Assistant.cpp +++ b/src/MeoAssistant/Assistant.cpp @@ -25,6 +25,7 @@ #include "InfrastControlTask.h" #include "RuntimeStatus.h" #include "StageDropsTaskPlugin.h" +#include "DronesForShamareTaskPlugin.h" using namespace asst; @@ -333,15 +334,15 @@ bool Assistant::append_debug() return false; } - std::unique_lock lock(m_mutex); + //std::unique_lock lock(m_mutex); - { - constexpr static const char* DebugTaskChain = "Debug"; - auto shift_task_ptr = std::make_shared(task_callback, (void*)this, DebugTaskChain); - shift_task_ptr->set_work_mode(infrast::WorkMode::Aggressive); - shift_task_ptr->set_product("MoodAddition"); - m_tasks_queue.emplace(shift_task_ptr); - } + //{ + // constexpr static const char* DebugTaskChain = "Debug"; + // auto shift_task_ptr = std::make_shared(task_callback, (void*)this, DebugTaskChain); + // shift_task_ptr->set_work_mode(infrast::WorkMode::Aggressive); + // shift_task_ptr->set_product("MoodAddition"); + // m_tasks_queue.emplace(shift_task_ptr); + //} return true; } @@ -399,6 +400,7 @@ bool asst::Assistant::append_infrast(infrast::WorkMode work_mode, const std::vec trade_task_ptr->set_uses_of_drone(uses_of_drones) .set_work_mode(work_mode) .set_mood_threshold(dorm_threshold); + 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/DronesForShamareTaskPlugin.cpp b/src/MeoAssistant/DronesForShamareTaskPlugin.cpp new file mode 100644 index 0000000000..019b572054 --- /dev/null +++ b/src/MeoAssistant/DronesForShamareTaskPlugin.cpp @@ -0,0 +1,44 @@ +#include "DronesForShamareTaskPlugin.h" + +#include "InfrastProductionTask.h" +#include "ProcessTask.h" + +bool asst::DronesForShamareTaskPlugin::verify(AsstMsg msg, const json::value& details) const +{ + if (msg != AsstMsg::SubTaskExtraInfo + || details.get("subtask", std::string()) != "InfrastTradeTask") { + return false; + } + + if (details.at("what").as_string() == "ProductOfFacility" + && details.at("details").at("product").as_string() == "Money") { + return true; + } + else { + return false; + } +} + +void asst::DronesForShamareTaskPlugin::set_task_ptr(AbstractTask* ptr) +{ + AbstractTaskPlugin::set_task_ptr(ptr); + + m_cast_ptr = dynamic_cast(ptr); +} + +bool asst::DronesForShamareTaskPlugin::_run() +{ + ProcessTask shamare_task(*this, { "ShamareThumbnail" }); + shamare_task.set_retry_times(1); + bool has_shamare = shamare_task.run(); + if (!has_shamare) { + return true; + } + + ProcessTask drone_task(*this, { "DroneAssistTrade" }); + bool drone_ret = drone_task.run(); + if (drone_ret) { + m_cast_ptr->set_uses_of_drone("_Used"); + } + return drone_ret; +} diff --git a/src/MeoAssistant/DronesForShamareTaskPlugin.h b/src/MeoAssistant/DronesForShamareTaskPlugin.h new file mode 100644 index 0000000000..411f683f1f --- /dev/null +++ b/src/MeoAssistant/DronesForShamareTaskPlugin.h @@ -0,0 +1,24 @@ +#pragma once + +#include "AbstractTaskPlugin.h" + +namespace asst +{ + class InfrastProductionTask; + + // 识别干员“巫恋”,并优先为其使用无人机 的任务插件 + class DronesForShamareTaskPlugin final : public AbstractTaskPlugin + { + public: + using AbstractTaskPlugin::AbstractTaskPlugin; + virtual ~DronesForShamareTaskPlugin() = default; + + virtual bool verify(AsstMsg msg, const json::value& details) const override; + virtual void set_task_ptr(AbstractTask* ptr) override; + + private: + virtual bool _run() override; + + InfrastProductionTask* m_cast_ptr = nullptr; + }; +} diff --git a/src/MeoAssistant/InfrastAbstractTask.cpp b/src/MeoAssistant/InfrastAbstractTask.cpp index 773b705d14..5aef8c1fc1 100644 --- a/src/MeoAssistant/InfrastAbstractTask.cpp +++ b/src/MeoAssistant/InfrastAbstractTask.cpp @@ -56,17 +56,20 @@ json::value asst::InfrastAbstractTask::basic_info() const std::string asst::InfrastAbstractTask::facility_name() const { - // typeid.name() 结果可能和编译器有关,所以这里使用正则尽可能保证结果正确。 - // 但还是不能完全保证,如果不行的话建议 override - static std::regex regex("Infrast(.*)Task"); - std::smatch match_obj; - std::string class_name = typeid(*this).name(); - if (std::regex_search(class_name, match_obj, regex)) { - return match_obj[1].str(); - } - else { - return class_name; + if (m_facility_name_cache.empty()) { + std::string class_name = typeid(*this).name(); + // typeid.name() 结果可能和编译器有关,所以这里使用正则尽可能保证结果正确。 + // 但还是不能完全保证,如果不行的话建议 override + std::regex regex("Infrast(.*)Task"); + std::smatch match_obj; + if (std::regex_search(class_name, match_obj, regex)) { + m_facility_name_cache = match_obj[1].str(); + } + else { + m_facility_name_cache = class_name; + } } + return m_facility_name_cache; } bool asst::InfrastAbstractTask::on_run_fails() diff --git a/src/MeoAssistant/InfrastAbstractTask.h b/src/MeoAssistant/InfrastAbstractTask.h index 9ece09ac0a..bec82ec8f5 100644 --- a/src/MeoAssistant/InfrastAbstractTask.h +++ b/src/MeoAssistant/InfrastAbstractTask.h @@ -17,7 +17,7 @@ namespace asst virtual json::value basic_info() const override; virtual std::string facility_name() const; - virtual size_t max_num_of_facility() const noexcept { return 1ULL; } + virtual size_t max_num_of_facilities() const noexcept { return 1ULL; } virtual size_t max_num_of_opers() const noexcept { return 1ULL; } constexpr static int OperSelectRetryTimes = 3; @@ -42,6 +42,7 @@ namespace asst infrast::WorkMode m_work_mode = infrast::WorkMode::Gentle; std::string m_work_mode_name = "Gentle"; double m_mood_threshold = 0; + mutable std::string m_facility_name_cache; int m_cur_facility_index = 0; int m_face_hash_thres = 0; diff --git a/src/MeoAssistant/InfrastMfgTask.h b/src/MeoAssistant/InfrastMfgTask.h index 45561978de..138f1a760c 100644 --- a/src/MeoAssistant/InfrastMfgTask.h +++ b/src/MeoAssistant/InfrastMfgTask.h @@ -9,7 +9,7 @@ namespace asst using InfrastProductionTask::InfrastProductionTask; virtual ~InfrastMfgTask() = default; - virtual size_t max_num_of_facility() const noexcept override { return 5ULL; } + virtual size_t max_num_of_facilities() const noexcept override { return 5ULL; } virtual size_t max_num_of_opers() const noexcept override { return 3ULL; } protected: diff --git a/src/MeoAssistant/InfrastPowerTask.cpp b/src/MeoAssistant/InfrastPowerTask.cpp index 1e65e7e871..ea6815e8dd 100644 --- a/src/MeoAssistant/InfrastPowerTask.cpp +++ b/src/MeoAssistant/InfrastPowerTask.cpp @@ -9,7 +9,7 @@ bool asst::InfrastPowerTask::_run() // 发电站只能造这一个 set_product("Drone"); - for (int i = 0; i != max_num_of_facility(); ++i) { + for (int i = 0; i != max_num_of_facilities(); ++i) { if (need_exit()) { return false; } diff --git a/src/MeoAssistant/InfrastPowerTask.h b/src/MeoAssistant/InfrastPowerTask.h index deeddbfde8..125112411b 100644 --- a/src/MeoAssistant/InfrastPowerTask.h +++ b/src/MeoAssistant/InfrastPowerTask.h @@ -9,7 +9,7 @@ namespace asst using InfrastProductionTask::InfrastProductionTask; virtual ~InfrastPowerTask() = default; - virtual size_t max_num_of_facility() const noexcept override { return 3ULL; } + virtual size_t max_num_of_facilities() const noexcept override { return 3ULL; } protected: virtual bool _run() override; diff --git a/src/MeoAssistant/InfrastProductionTask.cpp b/src/MeoAssistant/InfrastProductionTask.cpp index 7e942eb56b..ef048ff836 100644 --- a/src/MeoAssistant/InfrastProductionTask.cpp +++ b/src/MeoAssistant/InfrastProductionTask.cpp @@ -20,10 +20,13 @@ asst::InfrastProductionTask& asst::InfrastProductionTask::set_uses_of_drone(std: return *this; } -asst::InfrastProductionTask& asst::InfrastProductionTask::set_product(std::string product_name) noexcept +void asst::InfrastProductionTask::set_product(std::string product_name) noexcept { m_product = std::move(product_name); - return *this; + + json::value callback_info = basic_info_with_what("ProductOfFacility"); + callback_info["details"]["product"] = m_product; + callback(AsstMsg::SubTaskExtraInfo, callback_info); } bool asst::InfrastProductionTask::shift_facility_list() @@ -98,7 +101,6 @@ bool asst::InfrastProductionTask::shift_facility_list() } } set_product(cur_product); - Log.info("cur product", cur_product); locked_analyzer.set_image(image); if (locked_analyzer.analyze()) { diff --git a/src/MeoAssistant/InfrastProductionTask.h b/src/MeoAssistant/InfrastProductionTask.h index 8a3feb965c..34b4754bed 100644 --- a/src/MeoAssistant/InfrastProductionTask.h +++ b/src/MeoAssistant/InfrastProductionTask.h @@ -15,13 +15,6 @@ namespace asst InfrastProductionTask& set_uses_of_drone(std::string uses_of_drones) noexcept; -#ifdef ASST_DEBUG - public: -#else - // 为了方便调试,把这两个个接口拿到public来了 - protected: -#endif - InfrastProductionTask& set_product(std::string product_name) noexcept; protected: bool shift_facility_list(); @@ -31,6 +24,7 @@ namespace asst bool optimal_calc(); bool opers_choose(); bool use_drone(); + void set_product(std::string product_name) noexcept; infrast::SkillsComb efficient_regex_calc( std::unordered_set skills) const; diff --git a/src/MeoAssistant/InfrastTradeTask.h b/src/MeoAssistant/InfrastTradeTask.h index d6a4ea7a81..65e984b705 100644 --- a/src/MeoAssistant/InfrastTradeTask.h +++ b/src/MeoAssistant/InfrastTradeTask.h @@ -9,7 +9,7 @@ namespace asst using InfrastProductionTask::InfrastProductionTask; virtual ~InfrastTradeTask() = default; - virtual size_t max_num_of_facility() const noexcept override { return 5ULL; } + virtual size_t max_num_of_facilities() const noexcept override { return 5ULL; } virtual size_t max_num_of_opers() const noexcept override { return 3ULL; } protected: diff --git a/src/MeoAssistant/MeoAssistant.vcxproj b/src/MeoAssistant/MeoAssistant.vcxproj index 24236d8b67..fc407b934b 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj +++ b/src/MeoAssistant/MeoAssistant.vcxproj @@ -25,6 +25,7 @@ + @@ -74,6 +75,7 @@ + diff --git a/src/MeoAssistant/MeoAssistant.vcxproj.filters b/src/MeoAssistant/MeoAssistant.vcxproj.filters index c52107cf88..c1a5ac8653 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj.filters +++ b/src/MeoAssistant/MeoAssistant.vcxproj.filters @@ -1,386 +1,392 @@ - - - - - {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 - - - - - 源文件 - - - 源文件 - - - 源文件\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 - - - - - 资源文件 - - - 资源文件 - - - 资源文件 - - + + + + + {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 + + + + + 源文件 + + + 源文件 + + + 源文件\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 + + + + + 资源文件 + + + 资源文件 + + + 资源文件 + + \ No newline at end of file diff --git a/src/MeoAssistant/StageDropsTaskPlugin.cpp b/src/MeoAssistant/StageDropsTaskPlugin.cpp index 28a1dea331..c21f0fad75 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.cpp +++ b/src/MeoAssistant/StageDropsTaskPlugin.cpp @@ -15,7 +15,7 @@ bool asst::StageDropsTaskPlugin::verify(AsstMsg msg, const json::value& details) const { if (msg != AsstMsg::SubTaskCompleted - || details.get("class", std::string()) != "class asst::ProcessTask") { + || details.get("subtask", std::string()) != "ProcessTask") { return false; } diff --git a/src/MeoAssistant/StageDropsTaskPlugin.h b/src/MeoAssistant/StageDropsTaskPlugin.h index b4d56a2b4f..dd7d2be3b2 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.h +++ b/src/MeoAssistant/StageDropsTaskPlugin.h @@ -10,7 +10,7 @@ namespace asst { class ProcessTask; - class StageDropsTaskPlugin : public AbstractTaskPlugin + class StageDropsTaskPlugin final : public AbstractTaskPlugin { public: using AbstractTaskPlugin::AbstractTaskPlugin;