From 09d234796d8400cef1b2ca0e16f05a3fd667ae87 Mon Sep 17 00:00:00 2001 From: lhhxxxxx Date: Sat, 4 Jun 2022 16:27:22 +0800 Subject: [PATCH] feat. robot notification --- src/MeoAssistant/AutoRecruitTask.cpp | 2 +- src/MeoAssistant/RecruitCalcTask.cpp | 14 ++++++++++++-- src/MeoAssistant/RecruitCalcTask.h | 3 ++- src/MeoAsstGui/Helper/AsstProxy.cs | 20 ++++++++++++++++++++ src/MeoAsstGui/Helper/ToastNotification.cs | 17 +++++++++++++++++ 5 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/MeoAssistant/AutoRecruitTask.cpp b/src/MeoAssistant/AutoRecruitTask.cpp index 3ee1233399..98d263d92c 100644 --- a/src/MeoAssistant/AutoRecruitTask.cpp +++ b/src/MeoAssistant/AutoRecruitTask.cpp @@ -122,7 +122,7 @@ bool asst::AutoRecruitTask::calc_and_recruit() { LogTraceFunction; RecruitCalcTask recruit_task(m_callback, m_callback_arg, m_task_chain); - recruit_task.set_param(m_select_level, true) + recruit_task.set_param(m_select_level, true, m_skip_robot) .set_retry_times(m_retry_times) .set_exit_flag(m_exit_flag) .set_ctrler(m_ctrler) diff --git a/src/MeoAssistant/RecruitCalcTask.cpp b/src/MeoAssistant/RecruitCalcTask.cpp index 1a86f165f8..1118f147a6 100644 --- a/src/MeoAssistant/RecruitCalcTask.cpp +++ b/src/MeoAssistant/RecruitCalcTask.cpp @@ -63,9 +63,17 @@ bool RecruitCalcTask::_run() m_has_special_tag = true; } - static const std::string Robot = "支援机械"; + static const std::string Robot = "狙击干员"; auto robot_iter = all_tags_name.find(Robot); if (robot_iter != all_tags_name.end()) { + if (m_skip_robot) + { + info["what"] = "RecruitRobotTag"; + info["details"] = json::object{ + { "tag", Robot } + }; + callback(AsstMsg::SubTaskExtraInfo, info); + } m_has_robot_tag = true; } @@ -169,6 +177,7 @@ bool RecruitCalcTask::_run() json::value results_json; results_json["result"] = json::array(); results_json["level"] = m_maybe_level; + results_json["robot"] = m_skip_robot && m_has_robot_tag; std::vector result_json_vector; for (const auto& comb : result_vec) { @@ -218,9 +227,10 @@ bool RecruitCalcTask::_run() return true; } -RecruitCalcTask& RecruitCalcTask::set_param(std::vector select_level, bool set_time) noexcept +RecruitCalcTask& RecruitCalcTask::set_param(std::vector select_level, bool set_time, bool skip_robot) noexcept { m_select_level = std::move(select_level); m_set_time = set_time; + m_skip_robot = skip_robot; return *this; } diff --git a/src/MeoAssistant/RecruitCalcTask.h b/src/MeoAssistant/RecruitCalcTask.h index 561f3ca0f0..840e021e4f 100644 --- a/src/MeoAssistant/RecruitCalcTask.h +++ b/src/MeoAssistant/RecruitCalcTask.h @@ -12,7 +12,7 @@ namespace asst using AbstractTask::AbstractTask; virtual ~RecruitCalcTask() = default; - RecruitCalcTask& set_param(std::vector select_level, bool set_time = true) noexcept; + RecruitCalcTask& set_param(std::vector select_level, bool set_time = true, bool skip_robot = true) noexcept; bool get_has_special_tag() const noexcept { @@ -43,5 +43,6 @@ namespace asst bool m_has_special_tag = false; bool m_has_robot_tag = false; bool m_has_refresh = false; + bool m_skip_robot = true; }; } diff --git a/src/MeoAsstGui/Helper/AsstProxy.cs b/src/MeoAsstGui/Helper/AsstProxy.cs index d8ab552425..ed556661c5 100644 --- a/src/MeoAsstGui/Helper/AsstProxy.cs +++ b/src/MeoAsstGui/Helper/AsstProxy.cs @@ -445,6 +445,16 @@ namespace MeoAsstGui } } break; + + case "RecruitRobotTag": + { + string special = subTaskDetails["tag"].ToString(); + using (var toast = new ToastNotification("公招提示")) + { + toast.AppendContentText(special).ShowRecruitRobot(); + } + } + break; case "RecruitResult": { @@ -461,6 +471,16 @@ namespace MeoAsstGui { mainModel.AddLog(level + " 星 Tags", "darkcyan"); } + + bool robot = (bool)subTaskDetails["robot"]; + if (robot) + { + using (var toast = new ToastNotification($"公招出小车了哦!")) + { + toast.AppendContentText(new string('★', 1)).ShowRecruitRobot(row: 2); + } + mainModel.AddLog(1 + " 星 Tag", "gainsboro", "Bold"); + } } break; diff --git a/src/MeoAsstGui/Helper/ToastNotification.cs b/src/MeoAsstGui/Helper/ToastNotification.cs index 944bdf7964..03f8cbebdf 100644 --- a/src/MeoAsstGui/Helper/ToastNotification.cs +++ b/src/MeoAsstGui/Helper/ToastNotification.cs @@ -362,6 +362,23 @@ namespace MeoAsstGui notificationContent: content); } + /// + /// 显示公招小车标签通知 + /// + /// 内容显示行数,比如第 2 行用来放星星 + public void ShowRecruitRobot(uint row = 1) + { + var content = BaseContent(); + + // 给通知染上小车相似的颜色 + content.Background = (SolidColorBrush)new BrushConverter().ConvertFrom("#DCDCDC04"); + content.Foreground = (SolidColorBrush)new BrushConverter().ConvertFrom("#B0B0B000"); + + Show(row: row, + sound: NotificationSounds.Notification, + notificationContent: content); + } + /// /// 显示更新版本的通知 ///