mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-17 18:01:26 +08:00
opt.界面上解耦自动公招与公招识别
This commit is contained in:
@@ -524,7 +524,7 @@ void Assistant::working_proc()
|
||||
task_callback(AsstMsg::TaskChainCompleted, task_json, this);
|
||||
}
|
||||
if (m_tasks_queue.empty()) {
|
||||
task_callback(AsstMsg::AllTasksCompleted, json::value(), this);
|
||||
task_callback(AsstMsg::AllTasksCompleted, task_json, this);
|
||||
}
|
||||
|
||||
//clear_cache();
|
||||
|
||||
@@ -50,6 +50,7 @@ bool RecruitTask::_run()
|
||||
}
|
||||
json::value all_tags_json;
|
||||
all_tags_json["tags"] = json::array(all_tags_json_vector);
|
||||
all_tags_json["task_chain"] = m_task_chain;
|
||||
|
||||
/* 过滤tags数量不足的情况(可能是识别漏了) */
|
||||
if (all_tags.size() != RecruitConfiger::CorrectNumberOfTags) {
|
||||
@@ -174,6 +175,7 @@ bool RecruitTask::_run()
|
||||
json::value results_json;
|
||||
results_json["result"] = json::array();
|
||||
results_json["maybe_level"] = m_maybe_level;
|
||||
results_json["task_chain"] = m_task_chain;
|
||||
|
||||
std::vector<json::value> result_json_vector;
|
||||
for (const auto& comb : result_vec) {
|
||||
@@ -223,4 +225,4 @@ void RecruitTask::set_param(std::vector<int> select_level, bool set_time) noexce
|
||||
{
|
||||
m_select_level = std::move(select_level);
|
||||
m_set_time = set_time;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,6 +105,10 @@ namespace MeoAsstGui
|
||||
case AsstMsg.TaskChainStart:
|
||||
{
|
||||
string taskChain = detail["task_chain"].ToString();
|
||||
if (taskChain == "RecruitCalc")
|
||||
{
|
||||
break;
|
||||
}
|
||||
tvm.AddLog("开始任务:" + taskChain);
|
||||
}
|
||||
break;
|
||||
@@ -138,15 +142,24 @@ namespace MeoAsstGui
|
||||
case AsstMsg.TaskChainCompleted:
|
||||
{
|
||||
string taskChain = detail["task_chain"].ToString();
|
||||
if (taskChain == "RecruitCalc")
|
||||
{
|
||||
break;
|
||||
}
|
||||
tvm.AddLog("完成任务:" + taskChain);
|
||||
}
|
||||
break;
|
||||
|
||||
case AsstMsg.AllTasksCompleted:
|
||||
{
|
||||
string taskChain = detail["task_chain"].ToString();
|
||||
if (taskChain == "RecruitCalc")
|
||||
{
|
||||
break;
|
||||
}
|
||||
tvm.Idle = true;
|
||||
tvm.AddLog("任务已全部完成");
|
||||
new ToastContentBuilder().AddText("任务已全部完成!").Show();
|
||||
new ToastContentBuilder().AddText("任务已全部完成!").Show();
|
||||
tvm.CheckAndShutdown();
|
||||
}
|
||||
break;
|
||||
@@ -198,7 +211,18 @@ namespace MeoAsstGui
|
||||
break;
|
||||
|
||||
case AsstMsg.TaskError:
|
||||
tvm.AddLog("任务出错:" + detail["task_chain"].ToString(), "darkred");
|
||||
{
|
||||
string taskChain = detail["task_chain"].ToString();
|
||||
if (taskChain == "RecruitCalc")
|
||||
{
|
||||
var rvm = _container.Get<RecruitViewModel>();
|
||||
rvm.RecruitInfo = "识别错误!";
|
||||
}
|
||||
else
|
||||
{
|
||||
tvm.AddLog("任务出错:" + detail["task_chain"].ToString(), "darkred");
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case AsstMsg.InitFaild:
|
||||
@@ -243,21 +267,28 @@ namespace MeoAsstGui
|
||||
case AsstMsg.TextDetected:
|
||||
break;
|
||||
|
||||
case AsstMsg.RecruitTagsDetected:
|
||||
JArray tags = (JArray)detail["tags"];
|
||||
string log_content = "";
|
||||
string info_content = "识别结果: ";
|
||||
foreach (var tag_name in tags)
|
||||
case AsstMsg.RecruitTagsDetected:
|
||||
{
|
||||
string tag_str = tag_name.ToString();
|
||||
info_content += tag_str + " ";
|
||||
log_content += tag_str + "\n";
|
||||
JArray tags = (JArray)detail["tags"];
|
||||
string log_content = "";
|
||||
string info_content = "识别结果: ";
|
||||
foreach (var tag_name in tags)
|
||||
{
|
||||
string tag_str = tag_name.ToString();
|
||||
info_content += tag_str + " ";
|
||||
log_content += tag_str + "\n";
|
||||
}
|
||||
string taskChain = detail["task_chain"].ToString();
|
||||
if (taskChain == "RecruitCalc")
|
||||
{
|
||||
rvm.RecruitInfo = info_content;
|
||||
}
|
||||
else
|
||||
{
|
||||
log_content = log_content.EndsWith("\n") ? log_content.TrimEnd('\n') : "错误";
|
||||
tvm.AddLog("公招识别结果:\n" + log_content);
|
||||
}
|
||||
}
|
||||
rvm.RecruitInfo = info_content;
|
||||
|
||||
log_content = log_content.EndsWith("\n") ? log_content.TrimEnd('\n') : "错误";
|
||||
tvm.AddLog("公招识别结果:\n" + log_content);
|
||||
|
||||
break;
|
||||
|
||||
case AsstMsg.OcrResultError:
|
||||
@@ -269,34 +300,46 @@ namespace MeoAsstGui
|
||||
new ToastContentBuilder().AddText("公招提示:" + special).Show();
|
||||
break;
|
||||
|
||||
case AsstMsg.RecruitResult:
|
||||
string resultContent = "";
|
||||
JArray result_array = (JArray)detail["result"];
|
||||
int combs_level = (int)detail["maybe_level"];
|
||||
foreach (var combs in result_array)
|
||||
{
|
||||
int tag_level = (int)combs["tag_level"];
|
||||
resultContent += tag_level + "星Tags: ";
|
||||
foreach (var tag in (JArray)combs["tags"])
|
||||
{
|
||||
resultContent += tag.ToString() + " ";
|
||||
}
|
||||
resultContent += "\n\t";
|
||||
foreach (var oper in (JArray)combs["opers"])
|
||||
{
|
||||
resultContent += oper["level"].ToString() + " - " + oper["name"].ToString() + " ";
|
||||
}
|
||||
resultContent += "\n\n";
|
||||
}
|
||||
rvm.RecruitResult = resultContent;
|
||||
if (combs_level >= 5)
|
||||
case AsstMsg.RecruitResult:
|
||||
{
|
||||
new ToastContentBuilder().AddText("公招出 " + combs_level + " 星了哦!").Show();
|
||||
tvm.AddLog(combs_level + " 星Tags", "darkorange", "Bold");
|
||||
}
|
||||
else
|
||||
{
|
||||
tvm.AddLog(combs_level + " 星Tags", "darkcyan");
|
||||
string resultContent = "";
|
||||
JArray result_array = (JArray)detail["result"];
|
||||
int combs_level = (int)detail["maybe_level"];
|
||||
foreach (var combs in result_array)
|
||||
{
|
||||
int tag_level = (int)combs["tag_level"];
|
||||
resultContent += tag_level + "星Tags: ";
|
||||
foreach (var tag in (JArray)combs["tags"])
|
||||
{
|
||||
resultContent += tag.ToString() + " ";
|
||||
}
|
||||
resultContent += "\n\t";
|
||||
foreach (var oper in (JArray)combs["opers"])
|
||||
{
|
||||
resultContent += oper["level"].ToString() + " - " + oper["name"].ToString() + " ";
|
||||
}
|
||||
resultContent += "\n\n";
|
||||
}
|
||||
string taskChain = detail["task_chain"].ToString();
|
||||
if (taskChain == "RecruitCalc")
|
||||
{
|
||||
rvm.RecruitResult = resultContent;
|
||||
}
|
||||
if (combs_level >= 5)
|
||||
{
|
||||
new ToastContentBuilder().AddText("公招出 " + combs_level + " 星了哦!").Show();
|
||||
if (taskChain != "RecruitCalc")
|
||||
{
|
||||
tvm.AddLog(combs_level + " 星Tags", "darkorange", "Bold");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (taskChain != "RecruitCalc")
|
||||
{
|
||||
tvm.AddLog(combs_level + " 星Tags", "darkcyan");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -109,17 +109,22 @@ namespace MeoAsstGui
|
||||
ViewStatusStorage.Set("Recruit.AutoSetTime", value.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private bool _catched = false;
|
||||
|
||||
public async void StartCalc()
|
||||
{
|
||||
RecruitInfo = "正在捕获模拟器窗口……";
|
||||
{
|
||||
var asstProxy = _container.Get<AsstProxy>();
|
||||
var task = Task.Run(() =>
|
||||
if (!_catched)
|
||||
{
|
||||
return asstProxy.AsstCatch();
|
||||
});
|
||||
bool catchd = await task;
|
||||
if (!catchd)
|
||||
RecruitInfo = "正在捕获模拟器窗口……";
|
||||
var task = Task.Run(() =>
|
||||
{
|
||||
return asstProxy.AsstCatch();
|
||||
});
|
||||
_catched = await task;
|
||||
}
|
||||
if (!_catched)
|
||||
{
|
||||
RecruitInfo = "捕获模拟器窗口失败,若是第一次运行,请尝试使用管理员权限";
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user