From 6d599a5e19f8aadd1c66237a88464dc1ccc8e24f Mon Sep 17 00:00:00 2001 From: camila314 <47485054+camila314@users.noreply.github.com> Date: Fri, 8 Sep 2023 12:44:26 -0500 Subject: [PATCH] allow logging to be disabled per-mod --- loader/include/Geode/loader/Mod.hpp | 3 +++ loader/src/loader/Log.cpp | 10 ++++++---- loader/src/loader/Mod.cpp | 8 ++++++++ loader/src/loader/ModImpl.cpp | 8 ++++++++ loader/src/loader/ModImpl.hpp | 9 ++++++++- 5 files changed, 33 insertions(+), 5 deletions(-) diff --git a/loader/include/Geode/loader/Mod.hpp b/loader/include/Geode/loader/Mod.hpp index 27f8eb44..4df6f9c2 100644 --- a/loader/include/Geode/loader/Mod.hpp +++ b/loader/include/Geode/loader/Mod.hpp @@ -394,6 +394,9 @@ namespace geode { */ ModJson getRuntimeInfo() const; + bool isLoggingEnabled() const; + void setLoggingEnabled(bool enabled); + friend class ModImpl; }; } diff --git a/loader/src/loader/Log.cpp b/loader/src/loader/Log.cpp index ec69eed7..915f7e41 100644 --- a/loader/src/loader/Log.cpp +++ b/loader/src/loader/Log.cpp @@ -222,12 +222,14 @@ void Logger::setup() { } void Logger::push(Log&& log) { - std::string logStr = log.toString(true, nestLevel()); + if (log.getSender()->isLoggingEnabled()) { + std::string logStr = log.toString(true, nestLevel()); - LoaderImpl::get()->logConsoleMessageWithSeverity(logStr, log.getSeverity()); - logStream() << logStr << std::endl; + LoaderImpl::get()->logConsoleMessageWithSeverity(logStr, log.getSeverity()); + logStream() << logStr << std::endl; - logs().emplace_back(std::forward(log)); + logs().emplace_back(std::forward(log)); + } } void Logger::pop(Log* log) { diff --git a/loader/src/loader/Mod.cpp b/loader/src/loader/Mod.cpp index 392d91c4..100e39ee 100644 --- a/loader/src/loader/Mod.cpp +++ b/loader/src/loader/Mod.cpp @@ -231,6 +231,14 @@ ModJson Mod::getRuntimeInfo() const { return m_impl->getRuntimeInfo(); } +bool Mod::isLoggingEnabled() const { + return m_impl->isLoggingEnabled(); +} + +void Mod::setLoggingEnabled(bool enabled) { + m_impl->setLoggingEnabled(enabled); +} + bool Mod::hasSavedValue(std::string const& key) { return this->getSaveContainer().contains(key); } diff --git a/loader/src/loader/ModImpl.cpp b/loader/src/loader/ModImpl.cpp index dc1c838a..f932af84 100644 --- a/loader/src/loader/ModImpl.cpp +++ b/loader/src/loader/ModImpl.cpp @@ -622,6 +622,14 @@ ModJson Mod::Impl::getRuntimeInfo() const { return json; } +bool Mod::Impl::isLoggingEnabled() const { + return m_loggingEnabled; +} + +void Mod::Impl::setLoggingEnabled(bool enabled) { + m_loggingEnabled = enabled; +} + static Result getModImplInfo() { std::string err; json::Value json; diff --git a/loader/src/loader/ModImpl.hpp b/loader/src/loader/ModImpl.hpp index 9048036d..e79dc8ae 100644 --- a/loader/src/loader/ModImpl.hpp +++ b/loader/src/loader/ModImpl.hpp @@ -56,11 +56,15 @@ namespace geode { * Settings save data. Stored for efficient loading of custom settings */ json::Value m_savedSettingsData = json::Object(); - /** * Whether the mod resources are loaded or not */ bool m_resourcesLoaded = false; + /** + * Whether logging is enabled for this mod + */ + bool m_loggingEnabled = true; + ModRequestedAction m_requestedAction = ModRequestedAction::None; @@ -139,6 +143,9 @@ namespace geode { char const* expandSpriteName(char const* name); ModJson getRuntimeInfo() const; + + bool isLoggingEnabled() const; + void setLoggingEnabled(bool enabled); }; class ModImpl : public Mod::Impl {