aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorMax Horn2006-09-16 16:58:27 +0000
committerMax Horn2006-09-16 16:58:27 +0000
commit919092e5fcd0389b4cbd862e9e8cceab202e6741 (patch)
tree7d9c8f643191812bb1eb24f2e7cc2e67586149d5 /engines/scumm
parent1add07becae0179e026a90924b419b74ffb1078f (diff)
downloadscummvm-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.cpp96
-rw-r--r--engines/scumm/debugger.h10
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);