Skip to content

Commit e55f8a2

Browse files
authored
fix: register And/Or sub-recognition results in runtime cache (#1281)
1 parent 7a8bf03 commit e55f8a2

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

source/MaaFramework/Task/Component/Recognizer.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,8 @@ RecoResult Recognizer::and_(const std::shared_ptr<MAA_RES_NS::Recognition::AndPa
394394
res = sub_recognizer.recognize(inline_sub.type, inline_sub.param, inline_sub.sub_name);
395395
}
396396

397+
register_sub_result_in_cache(res);
398+
397399
all_hit &= res.box.has_value();
398400
sub_results.emplace_back(std::move(res));
399401

@@ -477,6 +479,7 @@ RecoResult Recognizer::or_(const std::shared_ptr<MAA_RES_NS::Recognition::OrPara
477479
}
478480

479481
has_hit = res.box.has_value();
482+
register_sub_result_in_cache(res);
480483
sub_results.emplace_back(std::move(res));
481484

482485
if (has_hit) {
@@ -611,6 +614,20 @@ void Recognizer::save_draws(const std::string& node_name, const RecoResult& resu
611614
MAA_VISION_NS::VisionBase::save_draws(name, result.draws);
612615
}
613616

617+
void Recognizer::register_sub_result_in_cache(const RecoResult& res)
618+
{
619+
if (!res.box.has_value() || res.name.empty()) {
620+
return;
621+
}
622+
623+
auto& cache = tasker_->runtime_cache();
624+
auto sub_node_id = TaskBase::generate_node_id();
625+
cache.set_node_detail(
626+
sub_node_id,
627+
NodeDetail { .node_id = sub_node_id, .name = res.name, .reco_id = res.reco_id, .completed = true });
628+
cache.set_latest_node(res.name, sub_node_id);
629+
}
630+
614631
bool Recognizer::debug_mode() const
615632
{
616633
return MAA_GLOBAL_NS::OptionMgr::get_instance().debug_mode();

source/MaaFramework/Task/Component/Recognizer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class Recognizer
4747
std::vector<cv::Rect> get_rois(const MAA_VISION_NS::Target& roi, bool use_best = false);
4848
std::vector<cv::Rect> get_rois_from_pretask(const std::string& name, bool use_best);
4949
void save_draws(const std::string& node_name, const RecoResult& result) const;
50+
void register_sub_result_in_cache(const RecoResult& res);
5051

5152
private:
5253
bool debug_mode() const;

source/MaaFramework/Task/TaskBase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class TaskBase : public NonCopyable
3434
Tasker* tasker() const;
3535
MaaTaskId task_id() const;
3636
const std::string& entry() const;
37+
static MaaNodeId generate_node_id();
3738

3839
protected:
3940
MAA_RES_NS::ResourceMgr* resource();
@@ -46,7 +47,6 @@ class TaskBase : public NonCopyable
4647
std::shared_ptr<MAA_VISION_NS::OCRCache> ocr_cache = nullptr);
4748
ActionResult run_action(const RecoResult& reco, const PipelineData& data);
4849
cv::Mat screencap();
49-
MaaNodeId generate_node_id();
5050
void set_node_detail(MaaNodeId node_id, NodeDetail detail);
5151
void set_task_detail(TaskDetail detail);
5252

0 commit comments

Comments
 (0)