fix: 修复公招的几个问题 (#12056)

* fix: 修复不自动招募4星干员时,执行空招募的问题

* chore: Auto update by pre-commit hooks [skip changelog]

* fix: 修改is_calc_only_task()的判断条件,避免正常招募流程的一种情形(所有星级都不执行招募)被错判为仅公招计算。从公招计算启动招募时,加入-1作为标识。
fix: 在正常招募流程中,自动招募1星时,将1星也加入comfirm_level

* chore: Auto update by pre-commit hooks [skip changelog]

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Roland125
2025-02-27 21:27:55 +08:00
committed by GitHub
parent b252ecd863
commit b2d2b007b0
3 changed files with 10 additions and 3 deletions

View File

@@ -40,7 +40,10 @@ protected:
virtual bool _run() override;
virtual void click_return_button() override;
bool is_calc_only_task() { return m_max_times <= 0 && m_confirm_level.empty(); }
bool is_calc_only_task()
{
return (std::find(m_confirm_level.begin(), m_confirm_level.end(), (-1)) != m_confirm_level.end());
}
std::optional<Rect> try_get_start_button(const cv::Mat&);
bool recruit_one(const Rect&);

View File

@@ -2591,7 +2591,7 @@ namespace MaaWpfGui.Main
{
["refresh"] = false,
["select"] = new JArray(selectLevel),
["confirm"] = new JArray(),
["confirm"] = new JArray(-1), // 仅公招识别时将-1加入comfirm_level
["times"] = 0,
["set_time"] = setTime,
["expedite"] = false,

View File

@@ -374,7 +374,7 @@ public class RecruitSettingsUserControlModel : TaskViewModel
/// <param name="maxTimes">加急次数,仅在 <paramref name="useExpedited"/> 为 <see langword="true"/> 时有效。</param>
/// <param name="firstTags">首选 Tags仅在 Tag 等级为 3 时有效。</param>
/// <param name="selectLevel">会去点击标签的 Tag 等级。</param>
/// <param name="confirmLevel">会去点击确认的 Tag 等级。若仅公招计算,可设置为空数组。</param>
/// <param name="confirmLevel">会去点击确认的 Tag 等级。若仅公招计算,将-1加入数组。</param>
/// <param name="needRefresh">是否刷新三星 Tags。</param>
/// <param name="needForceRefresh">无招募许可时是否继续尝试刷新 Tags。</param>
/// <param name="useExpedited">是否使用加急许可。</param>
@@ -404,6 +404,10 @@ public class RecruitSettingsUserControlModel : TaskViewModel
{
var reqList = new List<int>();
var cfmList = new List<int>();
if (!NotChooseLevel1)
{
cfmList.Add(1);
}
if (ChooseLevel3)
{