summaryrefslogtreecommitdiff
path: root/src/gui/widgets/tabs/mapdebugtab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets/tabs/mapdebugtab.cpp')
-rw-r--r--src/gui/widgets/tabs/mapdebugtab.cpp289
1 files changed, 289 insertions, 0 deletions
diff --git a/src/gui/widgets/tabs/mapdebugtab.cpp b/src/gui/widgets/tabs/mapdebugtab.cpp
new file mode 100644
index 000000000..14dd4184e
--- /dev/null
+++ b/src/gui/widgets/tabs/mapdebugtab.cpp
@@ -0,0 +1,289 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2004-2009 The Mana World Development Team
+ * Copyright (C) 2009-2010 The Mana Developers
+ * Copyright (C) 2011-2018 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "gui/widgets/tabs/mapdebugtab.h"
+
+#include "game.h"
+
+#include "being/localplayer.h"
+
+#include "particle/particleengine.h"
+
+#include "gui/viewport.h"
+
+#include "gui/widgets/containerplacer.h"
+#include "gui/widgets/label.h"
+#include "gui/widgets/layouthelper.h"
+
+#ifdef USE_OPENGL
+#include "resources/imagehelper.h"
+#endif // USE_OPENGL
+
+#include "resources/map/map.h"
+
+#include "utils/gettext.h"
+#include "utils/stringutils.h"
+#include "utils/timer.h"
+
+#include "debug.h"
+
+MapDebugTab::MapDebugTab(const Widget2 *const widget) :
+ DebugTab(widget),
+ // TRANSLATORS: debug window label
+ mMusicFileLabel(new Label(this, _("Music:"))),
+ // TRANSLATORS: debug window label
+ mMapLabel(new Label(this, _("Map:"))),
+ // TRANSLATORS: debug window label
+ mMapNameLabel(new Label(this, _("Map name:"))),
+ // TRANSLATORS: debug window label
+ mMinimapLabel(new Label(this, _("Minimap:"))),
+ mTileMouseLabel(new Label(this, strprintf("%s (%d, %d)",
+ // TRANSLATORS: debug window label
+ _("Cursor:"), 0, 0))),
+ mParticleCountLabel(new Label(this, strprintf("%s %d",
+ // TRANSLATORS: debug window label
+ _("Particle count:"), 88888))),
+ mMapActorCountLabel(new Label(this, strprintf("%s %d",
+ // TRANSLATORS: debug window label
+ _("Map actors count:"), 88888))),
+#ifdef USE_OPENGL
+ mMapAtlasCountLabel(new Label(this, strprintf("%s %d",
+ // TRANSLATORS: debug window label
+ _("Map atlas count:"), 88888))),
+#endif // USE_OPENGL
+ // TRANSLATORS: debug window label
+ mXYLabel(new Label(this, strprintf("%s (?,?)", _("Player Position:")))),
+ mTexturesLabel(nullptr),
+ mUpdateTime(0),
+#ifdef DEBUG_DRAW_CALLS
+ mDrawCallsLabel(new Label(this, strprintf("%s %s",
+ // TRANSLATORS: debug window label
+ _("Draw calls:"), "?"))),
+#endif // DEBUG_DRAW_CALLS
+#ifdef DEBUG_BIND_TEXTURE
+ mBindsLabel(new Label(this, strprintf("%s %s",
+ // TRANSLATORS: debug window label
+ _("Texture binds:"), "?"))),
+#endif // DEBUG_BIND_TEXTURE
+ // TRANSLATORS: debug window label, frames per second
+ mFPSLabel(new Label(this, strprintf(_("%d FPS"), 0))),
+ // TRANSLATORS: debug window label, logic per second
+ mLPSLabel(new Label(this, strprintf(_("%d LPS"), 0))),
+ mFPSText()
+{
+ LayoutHelper h(this);
+ ContainerPlacer place = h.getPlacer(0, 0);
+
+#ifdef USE_OPENGL
+ switch (imageHelper->useOpenGL())
+ {
+ case RENDER_SOFTWARE:
+ // TRANSLATORS: debug window label
+ mFPSText = _("%d FPS (Software)");
+ break;
+ case RENDER_NORMAL_OPENGL:
+ case RENDER_NULL:
+ case RENDER_LAST:
+ default:
+ // TRANSLATORS: debug window label
+ mFPSText = _("%d FPS (normal OpenGL)");
+ break;
+ case RENDER_SAFE_OPENGL:
+ // TRANSLATORS: debug window label
+ mFPSText = _("%d FPS (safe OpenGL)");
+ break;
+ case RENDER_GLES_OPENGL:
+ // TRANSLATORS: debug window label
+ mFPSText = _("%d FPS (mobile OpenGL ES)");
+ break;
+ case RENDER_GLES2_OPENGL:
+ // TRANSLATORS: debug window label
+ mFPSText = _("%d FPS (mobile OpenGL ES 2)");
+ break;
+ case RENDER_MODERN_OPENGL:
+ // TRANSLATORS: debug window label
+ mFPSText = _("%d FPS (modern OpenGL)");
+ break;
+ case RENDER_SDL2_DEFAULT:
+ // TRANSLATORS: debug window label
+ mFPSText = _("%d FPS (SDL2 default)");
+ break;
+ };
+#else // USE_OPENGL
+
+ // TRANSLATORS: debug window label
+ mFPSText = _("%d FPS (Software)");
+#endif // USE_OPENGL
+
+ place(0, 0, mFPSLabel, 2, 1);
+ place(0, 1, mLPSLabel, 2, 1);
+ place(0, 2, mMusicFileLabel, 2, 1);
+ place(0, 3, mMapLabel, 2, 1);
+ place(0, 4, mMapNameLabel, 2, 1);
+ place(0, 5, mMinimapLabel, 2, 1);
+ place(0, 6, mXYLabel, 2, 1);
+ place(0, 7, mTileMouseLabel, 2, 1);
+ place(0, 8, mParticleCountLabel, 2, 1);
+ place(0, 9, mMapActorCountLabel, 2, 1);
+#ifdef USE_OPENGL
+ place(0, 10, mMapAtlasCountLabel, 2, 1);
+#if defined (DEBUG_OPENGL_LEAKS) || defined(DEBUG_DRAW_CALLS) \
+ || defined(DEBUG_BIND_TEXTURE)
+ int n = 11;
+#endif // defined (DEBUG_OPENGL_LEAKS) || defined(DEBUG_DRAW_CALLS)
+ // || defined(DEBUG_BIND_TEXTURE)
+#ifdef DEBUG_OPENGL_LEAKS
+ mTexturesLabel = new Label(this, strprintf("%s %s",
+ // TRANSLATORS: debug window label
+ _("Textures count:"), "?"));
+ place(0, n, mTexturesLabel, 2, 1);
+ n ++;
+#endif // DEBUG_OPENGL_LEAKS
+#ifdef DEBUG_DRAW_CALLS
+ place(0, n, mDrawCallsLabel, 2, 1);
+ n ++;
+#endif // DEBUG_DRAW_CALLS
+#ifdef DEBUG_BIND_TEXTURE
+ place(0, n, mBindsLabel, 2, 1);
+#endif // DEBUG_BIND_TEXTURE
+#endif // USE_OPENGL
+
+ place.getCell().matchColWidth(0, 0);
+ place = h.getPlacer(0, 1);
+ setDimension(Rect(0, 0, 600, 300));
+}
+
+void MapDebugTab::logic()
+{
+ BLOCK_START("MapDebugTab::logic")
+ if (localPlayer != nullptr)
+ {
+ // TRANSLATORS: debug window label
+ mXYLabel->setCaption(strprintf("%s (%d, %d)", _("Player Position:"),
+ localPlayer->getTileX(), localPlayer->getTileY()));
+ }
+ else
+ {
+ // TRANSLATORS: debug window label
+ mXYLabel->setCaption(strprintf("%s (?, ?)", _("Player Position:")));
+ }
+
+ Game *const game = Game::instance();
+ const Map *const map = game != nullptr ? game->getCurrentMap() : nullptr;
+ if (map != nullptr &&
+ viewport != nullptr)
+ {
+ // Get the current mouse position
+ const int mouseTileX = (viewport->mMouseX + viewport->getCameraX())
+ / map->getTileWidth();
+ const int mouseTileY = (viewport->mMouseY + viewport->getCameraY())
+ / map->getTileHeight();
+ mTileMouseLabel->setCaption(strprintf("%s (%d, %d)",
+ // TRANSLATORS: debug window label
+ _("Cursor:"), mouseTileX, mouseTileY));
+
+ // TRANSLATORS: debug window label
+ mMusicFileLabel->setCaption(strprintf("%s %s", _("Music:"),
+ map->getProperty("music", std::string()).c_str()));
+ // TRANSLATORS: debug window label
+ mMinimapLabel->setCaption(strprintf("%s %s", _("Minimap:"),
+ map->getProperty("minimap", std::string()).c_str()));
+ // TRANSLATORS: debug window label
+ mMapLabel->setCaption(strprintf("%s %s", _("Map:"),
+ map->getProperty("_realfilename", std::string()).c_str()));
+ // TRANSLATORS: debug window label
+ mMapNameLabel->setCaption(strprintf("%s %s", _("Map name:"),
+ map->getProperty("name", std::string()).c_str()));
+
+ if (mUpdateTime != cur_time)
+ {
+ mUpdateTime = cur_time;
+ // TRANSLATORS: debug window label
+ mParticleCountLabel->setCaption(strprintf(_("Particle count: %d"),
+ ParticleEngine::particleCount));
+
+ mMapActorCountLabel->setCaption(
+ // TRANSLATORS: debug window label
+ strprintf("%s %d", _("Map actors count:"),
+ map->getActorsCount()));
+#ifdef USE_OPENGL
+ mMapAtlasCountLabel->setCaption(
+ // TRANSLATORS: debug window label
+ strprintf("%s %d", _("Map atlas count:"),
+ map->getAtlasCount()));
+#ifdef DEBUG_OPENGL_LEAKS
+ mTexturesLabel->setCaption(strprintf("%s %d",
+ // TRANSLATORS: debug window label
+ _("Textures count:"), textures_count));
+#endif // DEBUG_OPENGL_LEAKS
+#ifdef DEBUG_DRAW_CALLS
+ if (mainGraphics)
+ {
+ mDrawCallsLabel->setCaption(strprintf("%s %d",
+ // TRANSLATORS: debug window label
+ _("Draw calls:"), mainGraphics->getDrawCalls()));
+ }
+#endif // DEBUG_DRAW_CALLS
+#ifdef DEBUG_BIND_TEXTURE
+ if (mainGraphics)
+ {
+ mBindsLabel->setCaption(strprintf("%s %d",
+ // TRANSLATORS: debug window label
+ _("Texture binds:"), mainGraphics->getBinds()));
+ }
+#endif // DEBUG_BIND_TEXTURE
+#endif // USE_OPENGL
+ }
+ }
+ else
+ {
+ // TRANSLATORS: debug window label
+ mTileMouseLabel->setCaption(strprintf("%s (?, ?)", _("Cursor:")));
+ // TRANSLATORS: debug window label
+ mMusicFileLabel->setCaption(strprintf("%s ?", _("Music:")));
+ // TRANSLATORS: debug window label
+ mMinimapLabel->setCaption(strprintf("%s ?", _("Minimap:")));
+ // TRANSLATORS: debug window label
+ mMapLabel->setCaption(strprintf("%s ?", _("Map:")));
+ // TRANSLATORS: debug window label
+ mMapNameLabel->setCaption(strprintf("%s ?", _("Map name:")));
+ mMapActorCountLabel->setCaption(
+ // TRANSLATORS: debug window label
+ strprintf("%s ?", _("Map actors count:")));
+#ifdef USE_OPENGL
+ mMapAtlasCountLabel->setCaption(
+ // TRANSLATORS: debug window label
+ strprintf("%s ?", _("Map atlas count:")));
+#endif // USE_OPENGL
+ }
+
+ mMapActorCountLabel->adjustSize();
+ mParticleCountLabel->adjustSize();
+#ifdef USE_OPENGL
+ mMapAtlasCountLabel->adjustSize();
+#endif // USE_OPENGL
+
+ mFPSLabel->setCaption(strprintf(mFPSText.c_str(), fps));
+ // TRANSLATORS: debug window label, logic per second
+ mLPSLabel->setCaption(strprintf(_("%d LPS"), lps));
+ BLOCK_END("MapDebugTab::logic")
+}