From 40c1b01f4dff0ee0e7a01e79724ff253650b11bd Mon Sep 17 00:00:00 2001 From: Peter Repukat Date: Thu, 22 Sep 2022 22:10:37 +0200 Subject: [PATCH] Don't show "popup" log window anymore if no warnings or worse present (20s after launch) --- GlosSITarget/Overlay.cpp | 12 +++++++++--- GlosSITarget/Overlay.h | 2 ++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/GlosSITarget/Overlay.cpp b/GlosSITarget/Overlay.cpp index f7c6538..b1cadcd 100644 --- a/GlosSITarget/Overlay.cpp +++ b/GlosSITarget/Overlay.cpp @@ -208,14 +208,16 @@ void Overlay::showLogs() if (!enabled_ && !log_expanded_) { return; } + bool logs_contain_warn_or_worse = false; if (enabled_) { logs = LOG_MSGS_; } else { std::ranges::copy_if(LOG_MSGS_, std::back_inserter(logs), - [](const auto& log) { - return ( + [&logs_contain_warn_or_worse](const auto& log) { + + const auto res = ( log.time.time_since_epoch() + std::chrono::seconds( LOG_RETENTION_TIME_) > std::chrono::system_clock::now().time_since_epoch()) @@ -223,9 +225,13 @@ void Overlay::showLogs() && (log.level > spdlog::level::debug) #endif ; + if (res && log.level > spdlog::level::warn) { + logs_contain_warn_or_worse = true; + } + return res; }); } - if (logs.empty()) + if (logs.empty() || ( !enabled_ && !logs_contain_warn_or_worse && time_since_start_clock_.getElapsedTime().asSeconds() > HIDE_NORMAL_LOGS_AFTER_S)) return; ImGui::SetNextWindowSizeConstraints({150, 150}, {1000, window_.getSize().y - 250.f}); if (!enabled_) { diff --git a/GlosSITarget/Overlay.h b/GlosSITarget/Overlay.h index 0e97ffa..b971bfa 100644 --- a/GlosSITarget/Overlay.h +++ b/GlosSITarget/Overlay.h @@ -53,6 +53,7 @@ class Overlay { void saveSettingsButton() const; bool force_enable_ = false; bool log_expanded_ = true; + sf::Clock time_since_start_clock_; struct Log { std::chrono::system_clock::time_point time; @@ -61,6 +62,7 @@ class Overlay { }; static inline std::vector LOG_MSGS_; static constexpr int LOG_RETENTION_TIME_ = 5; + static constexpr int HIDE_NORMAL_LOGS_AFTER_S = 20; static inline int overlay_element_id_ = 0; static inline std::map> OVERLAY_ELEMS_;