summaryrefslogtreecommitdiff
path: root/src/gui/debugwindow.cpp
diff options
context:
space:
mode:
authorStefan Dombrowski <stefan@uni-bonn.de>2011-05-20 17:26:29 +0200
committerStefan Dombrowski <stefan@uni-bonn.de>2011-05-20 17:26:29 +0200
commitf971e8903ae6e7f01adb7b2f252c6482fa258ebb (patch)
treedfafbd86d028515cdda0f77f77f11d14eeba6f1f /src/gui/debugwindow.cpp
parent108c31241aa8074dba1b1042677b3c87f60a9600 (diff)
downloadmana-f971e8903ae6e7f01adb7b2f252c6482fa258ebb.tar.gz
mana-f971e8903ae6e7f01adb7b2f252c6482fa258ebb.tar.bz2
mana-f971e8903ae6e7f01adb7b2f252c6482fa258ebb.tar.xz
mana-f971e8903ae6e7f01adb7b2f252c6482fa258ebb.zip
Removing KEY_PATHFIND and moving its function into the debug window
* The f-key is no longer used. That means new players are less likely to get into trouble by accidentally activating the debug mode. * The debug mode can now be activated in a new tab in the debug window. * The main advantage of using a gui is its extensibility. At the moment the debug mode does show too much information at once. In a follow-up patch the user should get more choices. Reviewed-by: Bjorn
Diffstat (limited to 'src/gui/debugwindow.cpp')
-rw-r--r--src/gui/debugwindow.cpp216
1 files changed, 149 insertions, 67 deletions
diff --git a/src/gui/debugwindow.cpp b/src/gui/debugwindow.cpp
index 2ad0ba4a..bd69437d 100644
--- a/src/gui/debugwindow.cpp
+++ b/src/gui/debugwindow.cpp
@@ -24,102 +24,184 @@
#include "client.h"
#include "game.h"
#include "particle.h"
-#include "main.h"
#include "map.h"
#include "gui/setup.h"
-#include "gui/setup_video.h"
#include "gui/viewport.h"
#include "gui/widgets/label.h"
#include "gui/widgets/layout.h"
+#include "gui/widgets/layouthelper.h"
+#include "gui/widgets/radiobutton.h"
+#include "gui/widgets/tab.h"
+#include "gui/widgets/tabbedarea.h"
#include "resources/image.h"
#include "utils/gettext.h"
#include "utils/stringutils.h"
-DebugWindow::DebugWindow():
- Window(_("Debug"))
-{
- setWindowName("Debug");
- setupWindow->registerWindowForReset(this);
-
- setResizable(true);
- setCloseButton(true);
- setSaveVisible(true);
- setDefaultSize(400, 100, ImageRect::CENTER);
+class DebugInfo : public Container
+{
+public:
+ DebugInfo()
+ {
#ifdef USE_OPENGL
- if (Image::getLoadAsOpenGL())
+ if (Image::getLoadAsOpenGL())
+ {
+ mFPSText = _("%d FPS (OpenGL)");
+ }
+ else
+#endif
+ {
+ mFPSText = _("%d FPS");
+ }
+
+ mFPSLabel = new Label("");
+ mMusicFileLabel = new Label("");
+ mMapLabel = new Label("");
+ mMinimapLabel = new Label("");
+ mTileMouseLabel = new Label("");
+ mParticleCountLabel = new Label("");
+
+ LayoutHelper h = (this);
+ ContainerPlacer place = h.getPlacer(0, 0);
+
+ place(0, 0, mFPSLabel, 1);
+ place(0, 1, mMusicFileLabel, 1);
+ place(0, 2, mMapLabel, 1);
+ place(0, 3, mMinimapLabel, 1);
+ place(0, 4, mTileMouseLabel, 1);
+ place(0, 5, mParticleCountLabel, 1);
+
+ h.reflowLayout(0, 0);
+ }
+
+ void logic()
{
- mFPSText = _("%d FPS (OpenGL)");
+ if (!isVisible())
+ return;
+
+ mFPSLabel->setCaption(strprintf(mFPSText.c_str(), fps));
+
+ if (const Map *map = Game::instance()->getCurrentMap())
+ {
+ // Get the current mouse position
+ const int mouseTileX = (viewport->getMouseX() +
+ viewport->getCameraX()) / map->getTileWidth();
+ const int mouseTileY = (viewport->getMouseY() +
+ viewport->getCameraY()) / map->getTileHeight();
+ mTileMouseLabel->setCaption(strprintf(_("Cursor: (%d, %d)"),
+ mouseTileX, mouseTileY));
+
+ mMusicFileLabel->setCaption(strprintf(
+ _("Music: %s"), map->getProperty("music").c_str()));
+ mMinimapLabel->setCaption(strprintf(_("Minimap: %s"),
+ map->getProperty("minimap").c_str()));
+ mMapLabel->setCaption(strprintf(_("Map: %s"),
+ map->getProperty("_filename").c_str()));
+ }
+
+ mParticleCountLabel->setCaption(strprintf(_("Particle count: %d"),
+ Particle::particleCount));
+
+ mFPSLabel->adjustSize();
+ mMusicFileLabel->adjustSize();
+ mMapLabel->adjustSize();
+ mMinimapLabel->adjustSize();
+ mTileMouseLabel->adjustSize();
+ mParticleCountLabel->adjustSize();
}
- else
-#endif
+
+private:
+ std::string mFPSText;
+ Label *mFPSLabel;
+ Label *mMusicFileLabel;
+ Label *mMapLabel;
+ Label *mMinimapLabel;
+ Label *mTileMouseLabel;
+ Label *mParticleCountLabel;
+};
+
+class DebugSwitches : public Container, public gcn::ActionListener
+{
+public:
+ DebugSwitches()
{
- mFPSText = _("%d FPS");
+ mapNormal = new RadioButton(_("Normal"), "mapdebug");
+ mapDebug = new RadioButton(_("Debug"), "mapdebug");
+ mapSpecial = new RadioButton(_("Special"), "mapdebug");
+ mapSpecial2 = new RadioButton(_("Special 2"), "mapdebug");
+ mapSpecial3 = new RadioButton(_("Special 3"), "mapdebug");
+
+ LayoutHelper h = (this);
+ ContainerPlacer place = h.getPlacer(0, 0);
+
+ place(0, 0, mapNormal, 1);
+ place(0, 1, mapDebug, 1);
+ place(0, 2, mapSpecial, 1);
+ place(0, 3, mapSpecial2, 1);
+ place(0, 4, mapSpecial3, 1);
+
+ h.reflowLayout(0, 0);
+
+ mapNormal->setSelected(true);
+
+ mapNormal->addActionListener(this);
+ mapDebug->addActionListener(this);
+ mapSpecial->addActionListener(this);
+ mapSpecial2->addActionListener(this);
+ mapSpecial3->addActionListener(this);
}
- mFPSLabel = new Label(strprintf(_("%d FPS"), 0));
- mMusicFileLabel = new Label(strprintf(_("Music: %s"), ""));
- mMapLabel = new Label(strprintf(_("Map: %s"), ""));
- mMinimapLabel = new Label(strprintf(_("Minimap: %s"), ""));
- mTileMouseLabel = new Label(strprintf(_("Cursor: (%d, %d)"), 0, 0));
- mParticleCountLabel = new Label(strprintf(_("Particle count: %d"), 88888));
- mParticleDetailLabel = new Label();
- mAmbientDetailLabel = new Label();
-
- place(0, 0, mFPSLabel, 3);
- place(3, 0, mTileMouseLabel);
- place(0, 1, mMusicFileLabel, 3);
- place(3, 1, mParticleCountLabel);
- place(0, 2, mMapLabel, 4);
- place(3, 2, mParticleDetailLabel);
- place(0, 3, mMinimapLabel, 4);
- place(3, 3, mAmbientDetailLabel);
+ void action(const gcn::ActionEvent &event)
+ {
+ if (mapNormal->isSelected())
+ viewport->setShowDebugPath(Map::MAP_NORMAL);
+ else if (mapDebug->isSelected())
+ viewport->setShowDebugPath(Map::MAP_DEBUG);
+ else if (mapSpecial->isSelected())
+ viewport->setShowDebugPath(Map::MAP_SPECIAL);
+ else if (mapSpecial2->isSelected())
+ viewport->setShowDebugPath(Map::MAP_SPECIAL2);
+ else if (mapSpecial3->isSelected())
+ viewport->setShowDebugPath(Map::MAP_SPECIAL3);
+ }
- loadWindowState();
-}
+private:
+ RadioButton *mapNormal;
+ RadioButton *mapDebug;
+ RadioButton *mapSpecial;
+ RadioButton *mapSpecial2;
+ RadioButton *mapSpecial3;
+};
-void DebugWindow::logic()
+DebugWindow::DebugWindow():
+ Window(_("Debug"))
{
- if (!isVisible())
- return;
+ setupWindow->registerWindowForReset(this);
- mFPSLabel->setCaption(strprintf(mFPSText.c_str(), fps));
+ setResizable(true);
+ setCloseButton(true);
- if (const Map *map = Game::instance()->getCurrentMap())
- {
- // Get the current mouse position
- int mouseTileX = (viewport->getMouseX() + viewport->getCameraX())
- / map->getTileWidth();
- int mouseTileY = (viewport->getMouseY() + viewport->getCameraY())
- / map->getTileHeight();
- mTileMouseLabel->setCaption(strprintf(_("Cursor: (%d, %d)"),
- mouseTileX,
- mouseTileY));
-
- mMusicFileLabel->setCaption(strprintf(
- _("Music: %s"), map->getProperty("music").c_str()));
- mMinimapLabel->setCaption(
- strprintf(_("Minimap: %s"), map->getProperty("minimap").c_str()));
- mMapLabel->setCaption(
- strprintf(_("Map: %s"), map->getProperty("_filename").c_str()));
- }
+ setMinWidth(100);
+ setMinHeight(100);
+ setDefaultSize(0, 120, 300, 180);
- mParticleCountLabel->setCaption(strprintf(_("Particle count: %d"),
- Particle::particleCount));
+ loadWindowState();
- mParticleCountLabel->adjustSize();
+ TabbedArea *mTabs = new TabbedArea;
- mParticleDetailLabel->setCaption(strprintf(_("Particle detail: %s"),
- Setup_Video::particleDetailToString()));
+ place(0, 0, mTabs, 2, 2);
- mParticleDetailLabel->adjustSize();
+ widgetResized(NULL);
- mAmbientDetailLabel->setCaption(strprintf(_("Ambient FX: %s"),
- Setup_Video::overlayDetailToString()));
+ Tab *tabInfo = new Tab();
+ tabInfo->setCaption("Info");
+ mTabs->addTab(tabInfo, new DebugInfo);
- mAmbientDetailLabel->adjustSize();
+ Tab *tabSwitches = new Tab();
+ tabSwitches->setCaption("Switches");
+ mTabs->addTab(tabSwitches, new DebugSwitches);
}