diff options
author | Max Horn | 2006-09-16 16:58:27 +0000 |
---|---|---|
committer | Max Horn | 2006-09-16 16:58:27 +0000 |
commit | 919092e5fcd0389b4cbd862e9e8cceab202e6741 (patch) | |
tree | 7d9c8f643191812bb1eb24f2e7cc2e67586149d5 /engines/scumm | |
parent | 1add07becae0179e026a90924b419b74ffb1078f (diff) | |
download | scummvm-rg350-919092e5fcd0389b4cbd862e9e8cceab202e6741.tar.gz scummvm-rg350-919092e5fcd0389b4cbd862e9e8cceab202e6741.tar.bz2 scummvm-rg350-919092e5fcd0389b4cbd862e9e8cceab202e6741.zip |
Overhaul of the debugger code
* Moved Common::Debuggger to GUI::Debugger (mainly to satisfy linker
restrictions)
* Change the base Debugger class to *not* be a template class anymore;
instead, a thin (template based) wrapper class is used to hook up
debugger commands
* Removed duplicate Cmd_Exit and Cmd_Help methods in favor of a single
version of each in GUI::Debugger
* New Cmd_Help doesn't word wrap after 39/78 chars, but rather queries
the console to determine when to wrap
* Debugger::preEnter and postEnter aren't pure virtual anymore
svn-id: r23890
Diffstat (limited to 'engines/scumm')
-rw-r--r-- | engines/scumm/debugger.cpp | 96 | ||||
-rw-r--r-- | engines/scumm/debugger.h | 10 |
2 files changed, 28 insertions, 78 deletions
diff --git a/engines/scumm/debugger.cpp b/engines/scumm/debugger.cpp index c064405b15..fe4f13ead7 100644 --- a/engines/scumm/debugger.cpp +++ b/engines/scumm/debugger.cpp @@ -36,8 +36,6 @@ #include "scumm/scumm.h" #include "scumm/sound.h" -#include "common/debugger.cpp" - namespace Scumm { // Debug channel lookup table for Debugger console @@ -71,7 +69,7 @@ void CDECL debugC(int channel, const char *s, ...) { } ScummDebugger::ScummDebugger(ScummEngine *s) - : Common::Debugger<ScummDebugger>() { + : GUI::Debugger() { _vm = s; // Register variables @@ -87,38 +85,35 @@ ScummDebugger::ScummDebugger(ScummEngine *s) DVar_Register("scumm_gameid", &_vm->_game.id, DVAR_BYTE, 0); // Register commands - DCmd_Register("continue", &ScummDebugger::Cmd_Exit); - DCmd_Register("exit", &ScummDebugger::Cmd_Exit); - DCmd_Register("quit", &ScummDebugger::Cmd_Exit); - DCmd_Register("restart", &ScummDebugger::Cmd_Restart); - - DCmd_Register("actor", &ScummDebugger::Cmd_Actor); - DCmd_Register("actors", &ScummDebugger::Cmd_PrintActor); - DCmd_Register("box", &ScummDebugger::Cmd_PrintBox); - DCmd_Register("matrix", &ScummDebugger::Cmd_PrintBoxMatrix); - DCmd_Register("camera", &ScummDebugger::Cmd_Camera); - DCmd_Register("room", &ScummDebugger::Cmd_Room); - DCmd_Register("objects", &ScummDebugger::Cmd_PrintObjects); - DCmd_Register("object", &ScummDebugger::Cmd_Object); - DCmd_Register("script", &ScummDebugger::Cmd_Script); - DCmd_Register("scr", &ScummDebugger::Cmd_Script); - DCmd_Register("scripts", &ScummDebugger::Cmd_PrintScript); - DCmd_Register("importres", &ScummDebugger::Cmd_ImportRes); + DCmd_Register("continue", WRAP_METHOD(ScummDebugger, Cmd_Exit)); + DCmd_Register("restart", WRAP_METHOD(ScummDebugger, Cmd_Restart)); + + DCmd_Register("actor", WRAP_METHOD(ScummDebugger, Cmd_Actor)); + DCmd_Register("actors", WRAP_METHOD(ScummDebugger, Cmd_PrintActor)); + DCmd_Register("box", WRAP_METHOD(ScummDebugger, Cmd_PrintBox)); + DCmd_Register("matrix", WRAP_METHOD(ScummDebugger, Cmd_PrintBoxMatrix)); + DCmd_Register("camera", WRAP_METHOD(ScummDebugger, Cmd_Camera)); + DCmd_Register("room", WRAP_METHOD(ScummDebugger, Cmd_Room)); + DCmd_Register("objects", WRAP_METHOD(ScummDebugger, Cmd_PrintObjects)); + DCmd_Register("object", WRAP_METHOD(ScummDebugger, Cmd_Object)); + DCmd_Register("script", WRAP_METHOD(ScummDebugger, Cmd_Script)); + DCmd_Register("scr", WRAP_METHOD(ScummDebugger, Cmd_Script)); + DCmd_Register("scripts", WRAP_METHOD(ScummDebugger, Cmd_PrintScript)); + DCmd_Register("importres", WRAP_METHOD(ScummDebugger, Cmd_ImportRes)); if (_vm->_game.id == GID_LOOM) - DCmd_Register("drafts", &ScummDebugger::Cmd_PrintDraft); + DCmd_Register("drafts", WRAP_METHOD(ScummDebugger, Cmd_PrintDraft)); - DCmd_Register("loadgame", &ScummDebugger::Cmd_LoadGame); - DCmd_Register("savegame", &ScummDebugger::Cmd_SaveGame); + DCmd_Register("loadgame", WRAP_METHOD(ScummDebugger, Cmd_LoadGame)); + DCmd_Register("savegame", WRAP_METHOD(ScummDebugger, Cmd_SaveGame)); - DCmd_Register("level", &ScummDebugger::Cmd_DebugLevel); - DCmd_Register("debug", &ScummDebugger::Cmd_Debug); - DCmd_Register("help", &ScummDebugger::Cmd_Help); + DCmd_Register("level", WRAP_METHOD(ScummDebugger, Cmd_DebugLevel)); + DCmd_Register("debug", WRAP_METHOD(ScummDebugger, Cmd_Debug)); - DCmd_Register("show", &ScummDebugger::Cmd_Show); - DCmd_Register("hide", &ScummDebugger::Cmd_Hide); + DCmd_Register("show", WRAP_METHOD(ScummDebugger, Cmd_Show)); + DCmd_Register("hide", WRAP_METHOD(ScummDebugger, Cmd_Hide)); - DCmd_Register("imuse", &ScummDebugger::Cmd_IMuse); + DCmd_Register("imuse", WRAP_METHOD(ScummDebugger, Cmd_IMuse)); } ScummDebugger::~ScummDebugger() {} // we need this here for __SYMBIAN32__ @@ -138,11 +133,6 @@ void ScummDebugger::postEnter() { // Now the fun stuff: // Commands -bool ScummDebugger::Cmd_Exit(int argc, const char **argv) { - _detach_now = true; - return false; -} - bool ScummDebugger::Cmd_Restart(int argc, const char **argv) { _vm->restart(); @@ -518,44 +508,6 @@ bool ScummDebugger::Cmd_Object(int argc, const char **argv) { return true; } -bool ScummDebugger::Cmd_Help(int argc, const char **argv) { - // console normally has 39 line width - // wrap around nicely - int width = 0, size, i; - - DebugPrintf("Commands are:\n"); - for (i = 0 ; i < _dcmd_count ; i++) { - size = strlen(_dcmds[i].name) + 1; - - if ((width + size) >= 39) { - DebugPrintf("\n"); - width = size; - } else - width += size; - - DebugPrintf("%s ", _dcmds[i].name); - } - - width = 0; - - DebugPrintf("\n\nVariables are:\n"); - for (i = 0 ; i < _dvar_count ; i++) { - size = strlen(_dvars[i].name) + 1; - - if ((width + size) >= 39) { - DebugPrintf("\n"); - width = size; - } else - width += size; - - DebugPrintf("%s ", _dvars[i].name); - } - - DebugPrintf("\n"); - - return true; -} - bool ScummDebugger::Cmd_Debug(int argc, const char **argv) { int numChannels = sizeof(debugChannels) / sizeof(dbgChannelDesc); diff --git a/engines/scumm/debugger.h b/engines/scumm/debugger.h index 664c28923d..d781b957de 100644 --- a/engines/scumm/debugger.h +++ b/engines/scumm/debugger.h @@ -19,16 +19,16 @@ * $Id$ */ -#ifndef DEBUGGER_H -#define DEBUGGER_H +#ifndef SCUMM_DEBUGGER_H +#define SCUMM_DEBUGGER_H -#include "common/debugger.h" +#include "gui/debugger.h" namespace Scumm { class ScummEngine; -class ScummDebugger : public Common::Debugger<ScummDebugger> { +class ScummDebugger : public GUI::Debugger { public: ScummDebugger(ScummEngine *s); virtual ~ScummDebugger(); // we need this here for __SYMBIAN32__ @@ -41,7 +41,6 @@ protected: virtual void postEnter(); // Commands - bool Cmd_Exit(int argc, const char **argv); bool Cmd_Room(int argc, const char **argv); bool Cmd_LoadGame(int argc, const char **argv); bool Cmd_SaveGame(int argc, const char **argv); @@ -62,7 +61,6 @@ protected: bool Cmd_Debug(int argc, const char **argv); bool Cmd_DebugLevel(int argc, const char **argv); - bool Cmd_Help(int argc, const char **argv); bool Cmd_Show(int argc, const char **argv); bool Cmd_Hide(int argc, const char **argv); |