aboutsummaryrefslogtreecommitdiff
path: root/engines/lastexpress/debug.cpp
diff options
context:
space:
mode:
authorJulien Templier2010-10-22 22:00:27 +0000
committerJulien Templier2010-10-22 22:00:27 +0000
commit90974937a3a56cd2446101d7ee663e1bdbe82db2 (patch)
tree63430b05dd9cc0fb7660546c984645b9e7a45ef6 /engines/lastexpress/debug.cpp
parent610c5eb336f9e6561f44772845fbd525a0bb5eab (diff)
downloadscummvm-rg350-90974937a3a56cd2446101d7ee663e1bdbe82db2.tar.gz
scummvm-rg350-90974937a3a56cd2446101d7ee663e1bdbe82db2.tar.bz2
scummvm-rg350-90974937a3a56cd2446101d7ee663e1bdbe82db2.zip
LASTEXPRESS: Reorganize and enhance some debug commands
Add "time" command to convert between in-game and human-readable forms Rename "dump" command to "show" and use named parameters instead of index Add progress and flags options to show command svn-id: r53715
Diffstat (limited to 'engines/lastexpress/debug.cpp')
-rw-r--r--engines/lastexpress/debug.cpp88
1 files changed, 57 insertions, 31 deletions
diff --git a/engines/lastexpress/debug.cpp b/engines/lastexpress/debug.cpp
index 2f52508eca..f26fdf61b9 100644
--- a/engines/lastexpress/debug.cpp
+++ b/engines/lastexpress/debug.cpp
@@ -81,7 +81,8 @@ Debugger::Debugger(LastExpressEngine *engine) : _engine(engine), _command(NULL),
// Game
DCmd_Register("delta", WRAP_METHOD(Debugger, cmdTimeDelta));
- DCmd_Register("dump", WRAP_METHOD(Debugger, cmdDump));
+ DCmd_Register("time", WRAP_METHOD(Debugger, cmdTime));
+ DCmd_Register("show", WRAP_METHOD(Debugger, cmdShow));
DCmd_Register("entity", WRAP_METHOD(Debugger, cmdEntity));
// Misc
@@ -201,8 +202,8 @@ bool Debugger::cmdHelp(int, const char **) {
DebugPrintf(" beetle - start the beetle game\n");
DebugPrintf("\n");
DebugPrintf(" delta - Adjust the time delta\n");
- DebugPrintf(" dump - Dump game data\n");
- DebugPrintf(" entity - Dump entity data\n");
+ DebugPrintf(" show - show game data\n");
+ DebugPrintf(" entity - show entity data\n");
DebugPrintf("\n");
DebugPrintf(" loadgame - load a saved game\n");
DebugPrintf(" chapter - switch to a specific chapter\n");
@@ -894,7 +895,7 @@ bool Debugger::cmdBeetle(int argc, const char **argv) {
*/
bool Debugger::cmdTimeDelta(int argc, const char **argv) {
if (argc == 2) {
- int delta = getNumber(argv[1]);
+ int delta = getNumber(argv[1]);
if (delta <= 0 || delta > 500)
goto label_error;
@@ -909,14 +910,43 @@ label_error:
}
/**
- * Command: dumps game logic data
+ * Command: Convert between in-game time and human readable time
*
* @param argc The argument count.
* @param argv The values.
*
* @return true if it was handled, false otherwise
*/
-bool Debugger::cmdDump(int argc, const char **argv) {
+bool Debugger::cmdTime(int argc, const char **argv) {
+ if (argc == 2) {
+ int time = getNumber(argv[1]);
+
+ if (time < 0)
+ goto label_error;
+
+ // Convert to human-readable form
+ uint8 hours = 0;
+ uint8 minutes = 0;
+ State::getHourMinutes(time, &hours, &minutes);
+
+ DebugPrintf("%02d:%02d\n", hours, minutes);
+ } else {
+label_error:
+ DebugPrintf("Syntax: time <time to convert> (time=0-INT_MAX)\n");
+ }
+
+ return true;
+}
+
+/**
+ * Command: show game logic data
+ *
+ * @param argc The argument count.
+ * @param argv The values.
+ *
+ * @return true if it was handled, false otherwise
+ */
+bool Debugger::cmdShow(int argc, const char **argv) {
#define OUTPUT_DUMP(name, text) \
DebugPrintf(#name "\n"); \
DebugPrintf("--------------------------------------------------------------------\n\n"); \
@@ -924,41 +954,37 @@ bool Debugger::cmdDump(int argc, const char **argv) {
DebugPrintf("\n");
if (argc == 2) {
- switch (getNumber(argv[1])) {
- default:
- goto label_error;
- // GameState
- case 1:
- OUTPUT_DUMP("Game state", getState()->toString().c_str());
- break;
+ Common::String name(const_cast<char *>(argv[1]));
- // Inventory
- case 2:
+ if (name == "state" || name == "st") {
+ OUTPUT_DUMP("Game state", getState()->toString().c_str());
+ } else if (name == "progress" || name == "pr") {
+ OUTPUT_DUMP("Progress", getProgress().toString().c_str());
+ } else if (name == "flags" || name == "fl") {
+ OUTPUT_DUMP("Flags", getFlags()->toString().c_str());
+ } else if (name == "inventory" || name == "inv") {
OUTPUT_DUMP("Inventory", getInventory()->toString().c_str());
- break;
-
- // Objects
- case 3:
+ } else if (name == "objects" || name == "obj") {
OUTPUT_DUMP("Objects", getObjects()->toString().c_str());
- break;
-
- // SavePoints
- case 4:
+ } else if (name == "savepoints" || name == "pt") {
OUTPUT_DUMP("SavePoints", getSavePoints()->toString().c_str());
- break;
-
- case 5:
+ } else if (name == "scene" || name == "sc") {
OUTPUT_DUMP("Current scene", getScenes()->get(getState()->scene)->toString().c_str());
+ } else {
+ goto label_error;
}
+
} else {
label_error:
DebugPrintf("Syntax: state <option>\n");
- DebugPrintf(" 1 : Game state\n");
- DebugPrintf(" 2 : Inventory\n");
- DebugPrintf(" 3 : Objects\n");
- DebugPrintf(" 4 : SavePoints\n");
- DebugPrintf(" 5 : Current scene\n");
+ DebugPrintf(" state / st\n");
+ DebugPrintf(" progress / pr\n");
+ DebugPrintf(" flags / fl\n");
+ DebugPrintf(" inventory / inv\n");
+ DebugPrintf(" objects / obj\n");
+ DebugPrintf(" savepoints / pt\n");
+ DebugPrintf(" scene / sc\n");
}
return true;