From a9b00f77f32eabf7714a092db2dad667e1fa5c8f Mon Sep 17 00:00:00 2001 From: status102 Date: Tue, 14 Nov 2023 21:00:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?perf:=20=E8=BF=81=E7=A7=BB=E8=82=89?= =?UTF-8?q?=E9=B8=BD=E4=B8=BB=E9=A2=98=E3=80=81=E8=82=89=E9=B8=BD=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Common/AsstTypes.h | 3 --- src/MaaCore/Task/Interface/RoguelikeTask.cpp | 9 ++------- src/MaaCore/Task/Roguelike/RoguelikeConfig.h | 13 +++++++++++++ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/MaaCore/Common/AsstTypes.h b/src/MaaCore/Common/AsstTypes.h index 17db0c1eaa..17465ade2c 100644 --- a/src/MaaCore/Common/AsstTypes.h +++ b/src/MaaCore/Common/AsstTypes.h @@ -421,7 +421,4 @@ namespace asst }; inline static const std::string UploadDataSource = "MeoAssistant"; - inline static constexpr std::string_view RoguelikePhantomThemeName = "Phantom"; - inline static constexpr std::string_view RoguelikeMizukiThemeName = "Mizuki"; - inline static constexpr std::string_view RoguelikeSamiThemeName = "Sami"; } // namespace asst diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.cpp b/src/MaaCore/Task/Interface/RoguelikeTask.cpp index e2a1922be3..00bdc5dae1 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.cpp +++ b/src/MaaCore/Task/Interface/RoguelikeTask.cpp @@ -74,13 +74,8 @@ bool asst::RoguelikeTask::set_params(const json::value& params) { LogTraceFunction; - std::string theme = params.get("theme", std::string(RoguelikePhantomThemeName)); - static constexpr std::array all_themes = { - RoguelikePhantomThemeName, - RoguelikeMizukiThemeName, - RoguelikeSamiThemeName, - }; - if (ranges::find(all_themes, theme) == all_themes.end()) { + std::string theme = params.get("theme", std::string(RoguelikeTheme::Phantom)); + if (RoguelikeConfig::is_valid_theme(theme)) { m_roguelike_task_ptr->set_tasks({ "Stop" }); Log.error("Unknown roguelike theme", theme); return false; diff --git a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h index 4009820922..a75a2a8413 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h +++ b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h @@ -16,8 +16,21 @@ namespace asst Collectible = 4, }; + class RoguelikeTheme + { + public: + static constexpr std::string_view Phantom = "Phantom"; + static constexpr std::string_view Mizuki = "Mizuki"; + static constexpr std::string_view Sami = "Sami"; + }; + class RoguelikeConfig { + public: + static constexpr bool is_valid_theme(std::string_view theme) + { + return theme == RoguelikeTheme::Phantom || theme == RoguelikeTheme::Mizuki || theme == RoguelikeTheme::Sami; + } public: // 清理缓存的肉鸽数据 void clear(); From 921d303465b8de26b822d9317fa0869d87c69b57 Mon Sep 17 00:00:00 2001 From: status102 Date: Tue, 14 Nov 2023 21:00:39 +0800 Subject: [PATCH 2/3] =?UTF-8?q?perf:=20=E8=BF=81=E7=A7=BB=E8=82=89?= =?UTF-8?q?=E9=B8=BD=E6=A8=A1=E5=BC=8F=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaCore/Task/Interface/RoguelikeTask.cpp | 7 +------ src/MaaCore/Task/Roguelike/RoguelikeConfig.h | 6 ++++++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/MaaCore/Task/Interface/RoguelikeTask.cpp b/src/MaaCore/Task/Interface/RoguelikeTask.cpp index 00bdc5dae1..c51188ea07 100644 --- a/src/MaaCore/Task/Interface/RoguelikeTask.cpp +++ b/src/MaaCore/Task/Interface/RoguelikeTask.cpp @@ -88,12 +88,7 @@ bool asst::RoguelikeTask::set_params(const json::value& params) } auto mode = static_cast(params.get("mode", 0)); - static constexpr std::array all_modes = { - RoguelikeMode::Exp, - RoguelikeMode::Investment, - RoguelikeMode::Collectible, - }; - if (ranges::find(all_modes, mode) == all_modes.end()) { + if (RoguelikeConfig::is_valid_mode(mode)) { m_roguelike_task_ptr->set_tasks({ "Stop" }); Log.error(__FUNCTION__, "| Unknown mode", static_cast(mode)); return false; diff --git a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h index a75a2a8413..39e9688337 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeConfig.h +++ b/src/MaaCore/Task/Roguelike/RoguelikeConfig.h @@ -31,6 +31,12 @@ namespace asst { return theme == RoguelikeTheme::Phantom || theme == RoguelikeTheme::Mizuki || theme == RoguelikeTheme::Sami; } + static constexpr bool is_valid_mode(RoguelikeMode mode) + { + return mode == RoguelikeMode::Exp || mode == RoguelikeMode::Investment || + mode == RoguelikeMode::Collectible; + } + public: // 清理缓存的肉鸽数据 void clear(); From c89048818eb494112a00c007452ccfb1481ea911 Mon Sep 17 00:00:00 2001 From: status102 Date: Tue, 14 Nov 2023 21:51:07 +0800 Subject: [PATCH 3/3] =?UTF-8?q?perf:=20=E6=9B=BF=E6=8D=A2=E8=82=89?= =?UTF-8?q?=E9=B8=BD=E4=B8=BB=E9=A2=98=E5=AD=97=E7=AC=A6=E4=B8=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp | 2 +- .../Task/Roguelike/RoguelikeFoldartalGainTaskPlugin.cpp | 2 +- .../Task/Roguelike/RoguelikeFoldartalUseTaskPlugin.cpp | 2 +- src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp | 2 +- src/MaaCore/Task/Roguelike/RoguelikeShoppingTaskPlugin.cpp | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp index e65d550f3c..c6ca5be866 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeDifficultySelectionTaskPlugin.cpp @@ -37,7 +37,7 @@ bool asst::RoguelikeDifficultySelectionTaskPlugin::_run() // 当前难度 int difficulty = m_config->get_difficulty(); - if (m_config->get_theme() != "Phantom" && mode == RoguelikeMode::Collectible) { + if (m_config->get_theme() != RoguelikeTheme::Phantom && mode == RoguelikeMode::Collectible) { if (difficulty == INT_MAX) { ProcessTask(*this, { m_config->get_theme() + "@Roguelike@ChooseDifficulty_Hardest" }).run(); } diff --git a/src/MaaCore/Task/Roguelike/RoguelikeFoldartalGainTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeFoldartalGainTaskPlugin.cpp index 23600a420f..5cbc90b51a 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeFoldartalGainTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeFoldartalGainTaskPlugin.cpp @@ -15,7 +15,7 @@ bool asst::RoguelikeFoldartalGainTaskPlugin::verify(AsstMsg msg, const json::val Log.error("Roguelike name doesn't exist!"); return false; } - if (m_config->get_theme() != "Sami") { + if (m_config->get_theme() != RoguelikeTheme::Sami) { return false; } const std::string roguelike_name = m_config->get_theme() + "@"; diff --git a/src/MaaCore/Task/Roguelike/RoguelikeFoldartalUseTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeFoldartalUseTaskPlugin.cpp index e7d7cf2bbb..3cdf74556a 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeFoldartalUseTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeFoldartalUseTaskPlugin.cpp @@ -18,7 +18,7 @@ bool asst::RoguelikeFoldartalUseTaskPlugin::verify(AsstMsg msg, const json::valu Log.error("Roguelike name doesn't exist!"); return false; } - if (m_config->get_theme() != "Sami") { + if (m_config->get_theme() != RoguelikeTheme::Sami) { return false; } auto mode = m_config->get_mode(); diff --git a/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp index 496518ff09..5bdb551323 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeLastRewardTaskPlugin.cpp @@ -58,7 +58,7 @@ bool asst::RoguelikeLastRewardTaskPlugin::_run() // 需要开局凹直升 bool start_with_elite_two = m_config->get_start_with_elite_two(); - if (m_config->get_theme() != "Phantom" && mode == RoguelikeMode::Collectible) { + if (m_config->get_theme() != RoguelikeTheme::Phantom && mode == RoguelikeMode::Collectible) { if (m_is_next_hardest) { m_config->set_difficulty(INT_MAX); // 获得热水壶和演讲时停止肉鸽(凹直升则继续),获得其他奖励时重开 diff --git a/src/MaaCore/Task/Roguelike/RoguelikeShoppingTaskPlugin.cpp b/src/MaaCore/Task/Roguelike/RoguelikeShoppingTaskPlugin.cpp index 004defa1b7..68d1e69c3a 100644 --- a/src/MaaCore/Task/Roguelike/RoguelikeShoppingTaskPlugin.cpp +++ b/src/MaaCore/Task/Roguelike/RoguelikeShoppingTaskPlugin.cpp @@ -105,7 +105,7 @@ bool asst::RoguelikeShoppingTaskPlugin::_run() bool bought = false; auto& all_goods = RoguelikeShopping.get_goods(m_config->get_theme()); - std::vector all_foldartal = m_config->get_theme() == "Sami" + std::vector all_foldartal = m_config->get_theme() == RoguelikeTheme::Sami ? Task.get("Sami@Roguelike@FoldartalGainOcr")->text : std::vector(); for (const auto& goods : all_goods) { @@ -170,7 +170,7 @@ bool asst::RoguelikeShoppingTaskPlugin::_run() Log.info("Ready to buy", goods.name); ctrler()->click(find_it->rect); bought = true; - if (m_config->get_theme() == "Sami") { + if (m_config->get_theme() == RoguelikeTheme::Sami) { auto iter = std::find(all_foldartal.begin(), all_foldartal.end(), goods.name); if (iter != all_foldartal.end()) {