From 3a772e7ed6c02f91de57320b1694c7d11e1c7618 Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Wed, 3 Jan 2018 17:28:57 +0100 Subject: GameUI refactor (part 2/X): Move Game::guitext to GameUI + enhancements on StaticText Other enhancements: * C++ friendlyness for addStaticText() -> move to static StaticText::add() --- src/client/gameui.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) (limited to 'src/client/gameui.cpp') diff --git a/src/client/gameui.cpp b/src/client/gameui.cpp index 7307daf75..53d9f4a9c 100644 --- a/src/client/gameui.cpp +++ b/src/client/gameui.cpp @@ -19,7 +19,55 @@ with this program; if not, write to the Free Software Foundation, Inc., */ #include "gameui.h" -#include "settings.h" +#include +#include "gui/mainmenumanager.h" +#include "client.h" +#include "fontengine.h" +#include "clientmap.h" +#include "version.h" +#include "renderingengine.h" + +void GameUI::init() +{ + // First line of debug text + m_guitext = gui::StaticText::add(guienv, utf8_to_wide(PROJECT_NAME_C).c_str(), + core::rect(0, 0, 0, 0), false, false, guiroot); +} + +void GameUI::update(const RunStats &stats, Client *client, + const MapDrawControl *draw_control) +{ + if (m_flags.show_debug) { + static float drawtime_avg = 0; + drawtime_avg = drawtime_avg * 0.95 + stats.drawtime * 0.05; + u16 fps = 1.0 / stats.dtime_jitter.avg; + + std::ostringstream os(std::ios_base::binary); + os << std::fixed + << PROJECT_NAME_C " " << g_version_hash + << ", FPS: " << fps + << std::setprecision(0) + << ", drawtime: " << drawtime_avg << "ms" + << std::setprecision(1) + << ", dtime jitter: " + << (stats.dtime_jitter.max_fraction * 100.0) << "%" + << std::setprecision(1) + << ", view range: " + << (draw_control->range_all ? "All" : itos(draw_control->wanted_range)) + << std::setprecision(3) + << ", RTT: " << client->getRTT() << "s"; + setStaticText(m_guitext, utf8_to_wide(os.str()).c_str()); + m_guitext->setVisible(true); + } else { + m_guitext->setVisible(false); + } + + if (m_guitext->isVisible()) { + v2u32 screensize = RenderingEngine::get_instance()->getWindowSize(); + m_guitext->setRelativePosition(core::rect(5, 5, screensize.X, + 5 + g_fontengine->getTextHeight())); + } +} void GameUI::initFlags() { @@ -29,7 +77,7 @@ void GameUI::initFlags() m_flags.show_debug = g_settings->getBool("show_debug"); } -void GameUI::showMinimap(const bool show) +void GameUI::showMinimap(bool show) { m_flags.show_minimap = show; } -- cgit v1.2.3