diff --git a/src/MeoAssistance/AsstMsg.h b/src/MeoAssistance/AsstMsg.h index f774c2f741..58b163554a 100644 --- a/src/MeoAssistance/AsstMsg.h +++ b/src/MeoAssistance/AsstMsg.h @@ -42,6 +42,7 @@ namespace asst RecruitTagsDetected = 3000, // 公招识别到了Tags RecruitSpecialTag, // 公招识别到了特殊的Tag RecruitResult, // 公开招募结果 + RecruitSelected, // 选择了Tags /* Infrast Msg */ InfrastSkillsDetected = 4000, // 识别到了基建技能(当前页面) InfrastSkillsResult, // 识别到的所有可用技能 @@ -55,6 +56,7 @@ namespace asst static const std::unordered_map _type_name = { { AsstMsg::PtrIsNull, "PtrIsNull" }, { AsstMsg::ImageIsEmpty, "ImageIsEmpty" }, + { AsstMsg::RecruitSelected, "RecruitSelected" }, { AsstMsg::WindowMinimized, "WindowMinimized" }, { AsstMsg::InitFaild, "InitFaild" }, { AsstMsg::TaskStart, "TaskStart" }, diff --git a/src/MeoAssistance/RecruitTask.cpp b/src/MeoAssistance/RecruitTask.cpp index 89fa30c48a..eed18dd96e 100644 --- a/src/MeoAssistance/RecruitTask.cpp +++ b/src/MeoAssistance/RecruitTask.cpp @@ -60,11 +60,15 @@ bool RecruitTask::_run() m_callback(AsstMsg::RecruitTagsDetected, all_tags_json, m_callback_arg); - /* 针对一星小车的额外回调消息 */ + /* 针对特殊Tag的额外回调消息 */ + static const std::string SeniorOper = "高级资深干员"; static const std::string SupportMachine = "支援机械"; - if (std::find(all_tags_name.cbegin(), all_tags_name.cend(), SupportMachine) != all_tags_name.cend()) { + const std::vector SpecialTags = { SeniorOper, SupportMachine }; + + auto special_iter = std::find_first_of(SpecialTags.cbegin(), SpecialTags.cend(), all_tags_name.cbegin(), all_tags_name.cend()); + if (special_iter != SpecialTags.cend()) { json::value special_tag_json; - special_tag_json["tag"] = SupportMachine; + special_tag_json["tag"] = *special_iter; m_callback(AsstMsg::RecruitSpecialTag, special_tag_json, m_callback_arg); m_has_special_tag = true; } @@ -110,7 +114,6 @@ bool RecruitTask::_run() if (cur_oper.level == 6) { // 高资tag和六星强绑定,如果没有高资tag,即使其他tag匹配上了也不可能出六星 - static const std::string SeniorOper = "高级资深干员"; if (std::find(comb.cbegin(), comb.cend(), SeniorOper) == comb.cend()) { continue; } @@ -170,6 +173,7 @@ bool RecruitTask::_run() /* 整理识别结果Json */ json::value results_json; results_json["result"] = json::array(); + results_json["maybe_level"] = m_maybe_level; std::vector result_json_vector; for (const auto& comb : result_vec) { @@ -205,6 +209,10 @@ bool RecruitTask::_run() ctrler.click(text_area.rect, true); } } + + json::value selected_json; + selected_json["tags"] = json::array(final_tags_name); + m_callback(AsstMsg::RecruitSelected, selected_json, m_callback_arg); } } diff --git a/src/MeoAsstGui/Helper/AsstProxy.cs b/src/MeoAsstGui/Helper/AsstProxy.cs index a7c4c084ba..1608478952 100644 --- a/src/MeoAsstGui/Helper/AsstProxy.cs +++ b/src/MeoAsstGui/Helper/AsstProxy.cs @@ -6,6 +6,7 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Stylet; using StyletIoC; +using Microsoft.Toolkit.Uwp.Notifications; namespace MeoAsstGui { @@ -110,6 +111,10 @@ namespace MeoAsstGui { tvm.AddLog("已碎石 " + (int)detail["exec_times"] + " 颗"); } + else if (taskName == "RecruitRefresh") + { + tvm.AddLog("已刷新标签"); + } } break; @@ -160,7 +165,8 @@ namespace MeoAsstGui case AsstMsg.RecruitTagsDetected: case AsstMsg.OcrResultError: case AsstMsg.RecruitSpecialTag: - case AsstMsg.RecruitResult: + case AsstMsg.RecruitResult: + case AsstMsg.RecruitSelected: recruit_proc_msg(msg, detail); break; /* Infrast Msg */ @@ -211,40 +217,45 @@ namespace MeoAsstGui private void recruit_proc_msg(AsstMsg msg, JObject detail) { var rvm = _container.Get(); + var tvm = _container.Get(); switch (msg) { case AsstMsg.TextDetected: break; case AsstMsg.RecruitTagsDetected: - JArray tags = (JArray)detail["tags"]; + JArray tags = (JArray)detail["tags"]; + string log_content = ""; string info_content = "识别结果: "; foreach (var tag_name in tags) - { - info_content += tag_name.ToString() + " "; + { + string tag_str = tag_name.ToString(); + info_content += tag_str + " "; + log_content += tag_str + "\n"; } - rvm.RecruitInfo = info_content; + rvm.RecruitInfo = info_content; + + log_content = log_content.EndsWith("\n") ? log_content.TrimEnd('\n') : "错误"; + tvm.AddLog("公招识别结果:\n" + log_content); + break; case AsstMsg.OcrResultError: rvm.RecruitInfo = "识别错误!"; break; - case AsstMsg.RecruitSpecialTag: - _windowManager.ShowMessageBox("检测到特殊Tag:" + detail["tag"].ToString(), "提示"); + case AsstMsg.RecruitSpecialTag: + string special = detail["tag"].ToString(); + new ToastContentBuilder().AddText("公招特殊Tag:" + special).Show(); break; case AsstMsg.RecruitResult: string resultContent = ""; JArray result_array = (JArray)detail["result"]; - int combs_level = 0; + int combs_level = (int)detail["maybe_level"]; foreach (var combs in result_array) { int tag_level = (int)combs["tag_level"]; - if (tag_level > combs_level) - { - combs_level = tag_level; - } resultContent += tag_level + "星Tags: "; foreach (var tag in (JArray)combs["tags"]) { @@ -259,9 +270,27 @@ namespace MeoAsstGui } rvm.RecruitResult = resultContent; if (combs_level >= 5) - { - _windowManager.ShowMessageBox("出 " + combs_level + " 星了哦!", "提示"); - } + { + new ToastContentBuilder().AddText("公招出 " + combs_level + " 星了哦!").Show(); ; + tvm.AddLog(combs_level + " 星Tags", "OrangeRed"); + } + else + { + tvm.AddLog(combs_level + " 星Tags"); + } + + break; + + case AsstMsg.RecruitSelected: + JArray selected = (JArray)detail["tags"]; + string selected_log = ""; + foreach (var tag in selected) + { + selected_log += tag.ToString() + "\n"; + } + selected_log = selected_log.EndsWith("\n") ? selected_log.TrimEnd('\n') : "无"; + + tvm.AddLog("选择Tags:\n" + selected_log); break; } } @@ -366,6 +395,7 @@ namespace MeoAsstGui RecruitTagsDetected = 3000, // 公招识别到了Tags RecruitSpecialTag, // 公招识别到了特殊的Tag RecruitResult, // 公开招募结果 + RecruitSelected, // 选择了Tags /* Infrast Msg */ InfrastSkillsDetected = 4000, // 识别到了基建技能(当前页面) InfrastSkillsResult, // 识别到的所有可用技能