fix: 修复肉鸽技能误识别后卡住的问题

This commit is contained in:
MistEO
2022-12-26 19:18:54 +08:00
parent 98b3cc70c1
commit 55229afce1
2 changed files with 22 additions and 13 deletions

View File

@@ -356,7 +356,7 @@ bool asst::BattleHelper::retreat_oper(const Point& loc, bool manually)
return true;
}
bool asst::BattleHelper::use_skill(const std::string& name)
bool asst::BattleHelper::use_skill(const std::string& name, bool keep_waiting)
{
LogTraceFunction;
@@ -366,14 +366,14 @@ bool asst::BattleHelper::use_skill(const std::string& name)
return false;
}
return use_skill(oper_iter->second);
return use_skill(oper_iter->second, keep_waiting);
}
bool asst::BattleHelper::use_skill(const Point& loc)
bool asst::BattleHelper::use_skill(const Point& loc, bool keep_waiting)
{
LogTraceFunction;
return click_oper_on_battlefiled(loc) && click_skill();
return click_oper_on_battlefiled(loc) && click_skill(keep_waiting);
}
bool asst::BattleHelper::check_pause_button()
@@ -452,7 +452,7 @@ bool asst::BattleHelper::check_and_use_skill(const Point& loc, const cv::Mat& re
return false;
}
return use_skill(loc);
return use_skill(loc, false);
}
void asst::BattleHelper::save_map(const cv::Mat& image)
@@ -533,14 +533,23 @@ bool asst::BattleHelper::click_retreat()
return ProcessTask(this_task(), { "BattleOperRetreatJustClick" }).run();
}
bool asst::BattleHelper::click_skill()
bool asst::BattleHelper::click_skill(bool keep_waiting)
{
LogTraceFunction;
return ProcessTask(this_task(), { "BattleSkillReadyOnClick", "BattleSkillStopOnClick" })
.set_task_delay(0)
.set_retry_times(1000)
.run();
ProcessTask skill_task(this_task(), { "BattleSkillReadyOnClick", "BattleSkillStopOnClick" });
skill_task.set_task_delay(0);
if (keep_waiting) {
return skill_task.set_retry_times(1000).run();
}
else {
bool ret = skill_task.set_retry_times(5).run();
if (!ret) {
cancel_oper_selection();
}
return ret;
}
}
bool asst::BattleHelper::cancel_oper_selection()

View File

@@ -41,8 +41,8 @@ namespace asst
bool deploy_oper(const std::string& name, const Point& loc, battle::DeployDirection direction);
bool retreat_oper(const std::string& name);
bool retreat_oper(const Point& loc, bool manually = true);
bool use_skill(const std::string& name);
bool use_skill(const Point& loc);
bool use_skill(const std::string& name, bool keep_waiting = true);
bool use_skill(const Point& loc, bool keep_waiting = true);
bool check_pause_button();
bool wait_for_start();
bool wait_for_end();
@@ -56,7 +56,7 @@ namespace asst
bool click_oper_on_battlefiled(const std::string& name);
bool click_oper_on_battlefiled(const Point& loc);
bool click_retreat(); // 这个是不带识别的,直接点
bool click_skill(); // 这个是带识别的,转好了才点
bool click_skill(bool keep_waiting = true); // 这个是带识别的,转好了才点
bool cancel_oper_selection();
bool is_name_invaild(const std::string& name);