diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-04 04:42:16 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-04 04:42:16 +1000 |
commit | c343a7dfafb0b2e5e063ec83fd87cd05d5387b13 (patch) | |
tree | d525d784492eadc66963fb4af20b8d2b9f6ec48b /source | |
parent | 081dd693ca57ef624342e729c5b27b2e5da98410 (diff) |
Add toggle for debug HUD
Diffstat (limited to 'source')
-rw-r--r-- | source/frontend/StarClientCommandProcessor.cpp | 18 | ||||
-rw-r--r-- | source/frontend/StarClientCommandProcessor.hpp | 4 | ||||
-rw-r--r-- | source/frontend/StarMainInterface.cpp | 74 |
3 files changed, 55 insertions, 41 deletions
diff --git a/source/frontend/StarClientCommandProcessor.cpp b/source/frontend/StarClientCommandProcessor.cpp index b6ab53c..0f78ea0 100644 --- a/source/frontend/StarClientCommandProcessor.cpp +++ b/source/frontend/StarClientCommandProcessor.cpp @@ -21,7 +21,7 @@ ClientCommandProcessor::ClientCommandProcessor(UniverseClientPtr universeClient, {"reload", bind(&ClientCommandProcessor::reload, this)}, {"whoami", bind(&ClientCommandProcessor::whoami, this)}, {"gravity", bind(&ClientCommandProcessor::gravity, this)}, - {"debug", bind(&ClientCommandProcessor::debug, this)}, + {"debug", bind(&ClientCommandProcessor::debug, this, _1)}, {"boxes", bind(&ClientCommandProcessor::boxes, this)}, {"fullbright", bind(&ClientCommandProcessor::fullbright, this)}, {"asyncLighting", bind(&ClientCommandProcessor::asyncLighting, this)}, @@ -105,6 +105,10 @@ bool ClientCommandProcessor::debugDisplayEnabled() const { return m_debugDisplayEnabled; } +bool ClientCommandProcessor::debugHudEnabled() const { + return m_debugHudEnabled; +} + bool ClientCommandProcessor::fixedCameraEnabled() const { return m_fixedCameraEnabled; } @@ -126,12 +130,18 @@ String ClientCommandProcessor::gravity() { return strf("{}", m_universeClient->worldClient()->gravity(m_universeClient->mainPlayer()->position())); } -String ClientCommandProcessor::debug() { +String ClientCommandProcessor::debug(StringList const& arguments) { if (!adminCommandAllowed()) return "You must be an admin to use this command."; - m_debugDisplayEnabled = !m_debugDisplayEnabled; - return strf("Debug display {}", m_debugDisplayEnabled ? "enabled" : "disabled"); + if (!arguments.empty() && arguments.at(0).equalsIgnoreCase("hud")) { + m_debugHudEnabled = !m_debugHudEnabled; + return strf("Debug HUD {}", m_debugHudEnabled ? "enabled" : "disabled"); + } + else { + m_debugDisplayEnabled = !m_debugDisplayEnabled; + return strf("Debug display {}", m_debugDisplayEnabled ? "enabled" : "disabled"); + } } String ClientCommandProcessor::boxes() { diff --git a/source/frontend/StarClientCommandProcessor.hpp b/source/frontend/StarClientCommandProcessor.hpp index 3093450..41809ed 100644 --- a/source/frontend/StarClientCommandProcessor.hpp +++ b/source/frontend/StarClientCommandProcessor.hpp @@ -19,6 +19,7 @@ public: StringList handleCommand(String const& commandLine); bool debugDisplayEnabled() const; + bool debugHudEnabled() const; bool fixedCameraEnabled() const; private: @@ -28,7 +29,7 @@ private: String reload(); String whoami(); String gravity(); - String debug(); + String debug(StringList const& arguments); String boxes(); String fullbright(); String asyncLighting(); @@ -66,6 +67,7 @@ private: ShellParser m_parser; LuaBaseComponent m_scriptComponent; bool m_debugDisplayEnabled = false; + bool m_debugHudEnabled = true; bool m_fixedCameraEnabled = false; }; diff --git a/source/frontend/StarMainInterface.cpp b/source/frontend/StarMainInterface.cpp index fb28e84..0475663 100644 --- a/source/frontend/StarMainInterface.cpp +++ b/source/frontend/StarMainInterface.cpp @@ -1257,50 +1257,52 @@ void MainInterface::renderDebug() { LogMap::clear(); return; } + + if (m_clientCommandProcessor->debugHudEnabled()) { + auto assets = Root::singleton().assets(); + m_guiContext->setFontSize(m_config->debugFontSize); + m_guiContext->setFont(m_config->debugFont); + m_guiContext->setLineSpacing(0.5f); + m_guiContext->setFontProcessingDirectives(m_config->debugFontDirectives); + m_guiContext->setFontColor(Color::White.toRgba()); + m_guiContext->setFontMode(FontMode::Normal); - auto assets = Root::singleton().assets(); - m_guiContext->setFontSize(m_config->debugFontSize); - m_guiContext->setFont(m_config->debugFont); - m_guiContext->setLineSpacing(0.5f); - m_guiContext->setFontProcessingDirectives(m_config->debugFontDirectives); - m_guiContext->setFontColor(Color::White.toRgba()); - m_guiContext->setFontMode(FontMode::Normal); - - bool clearMap = m_debugMapClearTimer.wrapTick(); - auto logMapValues = LogMap::getValues(); - if (clearMap) - LogMap::clear(); + bool clearMap = m_debugMapClearTimer.wrapTick(); + auto logMapValues = LogMap::getValues(); + if (clearMap) + LogMap::clear(); - List<String> formatted; - formatted.reserve(logMapValues.size()); + List<String> formatted; + formatted.reserve(logMapValues.size()); - int counter = 0; - for (auto const& pair : logMapValues) { - TextPositioning positioning = {Vec2F(m_config->debugOffset[0], windowHeight() - m_config->debugOffset[1] - m_config->fontSize * interfaceScale() * counter++)}; - String& text = formatted.emplace_back(strf("{}^lightgray;:^green,set; {}", pair.first, pair.second)); - m_debugTextRect.combine(m_guiContext->determineTextSize(text, positioning).padded(m_config->debugBackgroundPad)); - } + int counter = 0; + for (auto const& pair : logMapValues) { + TextPositioning positioning = { Vec2F(m_config->debugOffset[0], windowHeight() - m_config->debugOffset[1] - m_config->fontSize * interfaceScale() * counter++) }; + String& text = formatted.emplace_back(strf("{}^lightgray;:^green,set; {}", pair.first, pair.second)); + m_debugTextRect.combine(m_guiContext->determineTextSize(text, positioning).padded(m_config->debugBackgroundPad)); + } - if (!m_debugTextRect.isNull()) { - RenderQuad& quad = m_guiContext->renderer()->immediatePrimitives() - .emplace_back(std::in_place_type_t<RenderQuad>(), m_debugTextRect, m_config->debugBackgroundColor.toRgba(), 0.0f).get<RenderQuad>(); + if (!m_debugTextRect.isNull()) { + RenderQuad& quad = m_guiContext->renderer()->immediatePrimitives() + .emplace_back(std::in_place_type_t<RenderQuad>(), m_debugTextRect, m_config->debugBackgroundColor.toRgba(), 0.0f).get<RenderQuad>(); - quad.b.color[3] = quad.c.color[3] = 0; - }; + quad.b.color[3] = quad.c.color[3] = 0; + }; - m_debugTextRect = RectF::null(); + m_debugTextRect = RectF::null(); - counter = 0; - for (auto const& pair : logMapValues) { - TextPositioning positioning = {Vec2F(m_config->debugOffset[0], windowHeight() - m_config->debugOffset[1] - m_config->fontSize * interfaceScale() * counter)}; - m_guiContext->renderText(formatted[counter], positioning); - ++counter; + counter = 0; + for (auto const& pair : logMapValues) { + TextPositioning positioning = { Vec2F(m_config->debugOffset[0], windowHeight() - m_config->debugOffset[1] - m_config->fontSize * interfaceScale() * counter) }; + m_guiContext->renderText(formatted[counter], positioning); + ++counter; + } + m_guiContext->setFontSize(8); + m_guiContext->setDefaultFont(); + m_guiContext->setDefaultLineSpacing(); + m_guiContext->setFontColor(Vec4B::filled(255)); + m_guiContext->setFontProcessingDirectives(""); } - m_guiContext->setFontSize(8); - m_guiContext->setDefaultFont(); - m_guiContext->setDefaultLineSpacing(); - m_guiContext->setFontColor(Vec4B::filled(255)); - m_guiContext->setFontProcessingDirectives(""); auto const& camera = m_worldPainter->camera(); |