diff options
-rw-r--r-- | engines/tsage/debugger.cpp | 171 | ||||
-rw-r--r-- | engines/tsage/debugger.h | 4 |
2 files changed, 174 insertions, 1 deletions
diff --git a/engines/tsage/debugger.cpp b/engines/tsage/debugger.cpp index 730a8f2db1..bebf463f49 100644 --- a/engines/tsage/debugger.cpp +++ b/engines/tsage/debugger.cpp @@ -40,6 +40,8 @@ Debugger::Debugger() : GUI::Debugger() { DCmd_Register("setflag", WRAP_METHOD(Debugger, Cmd_SetFlag)); DCmd_Register("getflag", WRAP_METHOD(Debugger, Cmd_GetFlag)); DCmd_Register("clearflag", WRAP_METHOD(Debugger, Cmd_ClearFlag)); + DCmd_Register("listobjects", WRAP_METHOD(Debugger, Cmd_ListObjects)); + DCmd_Register("moveobject", WRAP_METHOD(Debugger, Cmd_MoveObject)); DCmd_Register("item", WRAP_METHOD(Debugger, Cmd_Item)); } @@ -210,6 +212,175 @@ bool Debugger::Cmd_ClearFlag(int argc, const char **argv) { return true; } +/* + * This command lists the objects available, and their ID + */ +bool Debugger::Cmd_ListObjects(int argc, const char **argv) { + if (argc != 1) { + DebugPrintf("Usage: %s\n", argv[0]); + return true; + } + + DebugPrintf("Available objects for this game are:\n"); + DebugPrintf("0 - Stunner\n"); + DebugPrintf("1 - Scanner\n"); + DebugPrintf("2 - Stasis Box\n"); + DebugPrintf("3 - Info Disk\n"); + DebugPrintf("4 - Stasis Negator\n"); + DebugPrintf("5 - Key Device\n"); + DebugPrintf("6 - Medkit\n"); + DebugPrintf("7 - Ladder\n"); + DebugPrintf("8 - Rope\n"); + DebugPrintf("9 - Key\n"); + DebugPrintf("10 - Translator\n"); + DebugPrintf("11 - Ale\n"); + DebugPrintf("12 - Paper\n"); + DebugPrintf("13 - Waldos\n"); + DebugPrintf("14 - Stasis Box 2\n"); + DebugPrintf("15 - Ring\n"); + DebugPrintf("16 - Cloak\n"); + DebugPrintf("17 - Tunic\n"); + DebugPrintf("18 - Candle\n"); + DebugPrintf("19 - Straw\n"); + DebugPrintf("20 - Scimitar\n"); + DebugPrintf("21 - Sword\n"); + DebugPrintf("22 - Helmet\n"); + DebugPrintf("23 - Items\n"); + DebugPrintf("24 - Concentrator\n"); + DebugPrintf("25 - Nullifier\n"); + DebugPrintf("26 - Peg\n"); + DebugPrintf("27 - Vial\n"); + DebugPrintf("28 - Jacket\n"); + DebugPrintf("29 - Tunic 2\n"); + DebugPrintf("30 - Bone\n"); + DebugPrintf("31 - Empty Jar\n"); + DebugPrintf("32 - Jar\n"); + return true; +} + +/* + * This command gets an item, or move it to a room + */ +bool Debugger::Cmd_MoveObject(int argc, const char **argv) { + // Check for a flag to clear + if ((argc < 2) || (argc > 3)){ + DebugPrintf("Usage: %s <object number> [<scene number>]\n", argv[0]); + DebugPrintf("If no scene is specified, the object will be added to inventory\n", argv[0]); + return true; + } + + int objNum = strToInt(argv[1]); + int sceneNum = 1; + if (argc == 3) + sceneNum = strToInt(argv[2]); + + switch (objNum) { + case OBJECT_STUNNER: + _globals->_inventory._stunner._sceneNumber = sceneNum; + break; + case OBJECT_SCANNER: + _globals->_inventory._scanner._sceneNumber = sceneNum; + break; + case OBJECT_STASIS_BOX: + _globals->_inventory._stasisBox._sceneNumber = sceneNum; + break; + case OBJECT_INFODISK: + _globals->_inventory._infoDisk._sceneNumber = sceneNum; + break; + case OBJECT_STASIS_NEGATOR: + _globals->_inventory._stasisNegator._sceneNumber = sceneNum; + break; + case OBJECT_KEY_DEVICE: + _globals->_inventory._keyDevice._sceneNumber = sceneNum; + break; + case OBJECT_MEDKIT: + _globals->_inventory._medkit._sceneNumber = sceneNum; + break; + case OBJECT_LADDER: + _globals->_inventory._ladder._sceneNumber = sceneNum; + break; + case OBJECT_ROPE: + _globals->_inventory._rope._sceneNumber = sceneNum; + break; + case OBJECT_KEY: + _globals->_inventory._key._sceneNumber = sceneNum; + break; + case OBJECT_TRANSLATOR: + _globals->_inventory._translator._sceneNumber = sceneNum; + break; + case OBJECT_ALE: + _globals->_inventory._ale._sceneNumber = sceneNum; + break; + case OBJECT_PAPER: + _globals->_inventory._paper._sceneNumber = sceneNum; + break; + case OBJECT_WALDOS: + _globals->_inventory._waldos._sceneNumber = sceneNum; + break; + case OBJECT_STASIS_BOX2: + _globals->_inventory._stasisBox2._sceneNumber = sceneNum; + break; + case OBJECT_RING: + _globals->_inventory._ring._sceneNumber = sceneNum; + break; + case OBJECT_CLOAK: + _globals->_inventory._cloak._sceneNumber = sceneNum; + break; + case OBJECT_TUNIC: + _globals->_inventory._tunic._sceneNumber = sceneNum; + break; + case OBJECT_CANDLE: + _globals->_inventory._candle._sceneNumber = sceneNum; + break; + case OBJECT_STRAW: + _globals->_inventory._straw._sceneNumber = sceneNum; + break; + case OBJECT_SCIMITAR: + _globals->_inventory._scimitar._sceneNumber = sceneNum; + break; + case OBJECT_SWORD: + _globals->_inventory._sword._sceneNumber = sceneNum; + break; + case OBJECT_HELMET: + _globals->_inventory._helmet._sceneNumber = sceneNum; + break; + case OBJECT_ITEMS: + _globals->_inventory._items._sceneNumber = sceneNum; + break; + case OBJECT_CONCENTRATOR: + _globals->_inventory._concentrator._sceneNumber = sceneNum; + break; + case OBJECT_NULLIFIER: + _globals->_inventory._nullifier._sceneNumber = sceneNum; + break; + case OBJECT_PEG: + _globals->_inventory._peg._sceneNumber = sceneNum; + break; + case OBJECT_VIAL: + _globals->_inventory._vial._sceneNumber = sceneNum; + break; + case OBJECT_JACKET: + _globals->_inventory._jacket._sceneNumber = sceneNum; + break; + case OBJECT_TUNIC2: + _globals->_inventory._tunic2._sceneNumber = sceneNum; + break; + case OBJECT_BONE: + _globals->_inventory._bone._sceneNumber = sceneNum; + break; + case OBJECT_EMPTY_JAR: + _globals->_inventory._emptyJar._sceneNumber = sceneNum; + break; + case OBJECT_JAR: + _globals->_inventory._jar._sceneNumber = sceneNum; + break; + default: + DebugPrintf("Invlid object Id %s\n", argv[1]); + } + + return true; +} + /** * Give a specified item to the player */ diff --git a/engines/tsage/debugger.h b/engines/tsage/debugger.h index ee097e17bf..a34bb1ef0a 100644 --- a/engines/tsage/debugger.h +++ b/engines/tsage/debugger.h @@ -40,11 +40,13 @@ protected: bool Cmd_Scene(int argc, const char **argv); bool Cmd_WalkRegions(int argc, const char **argv); bool Cmd_PriorityRegions(int argc, const char **argv); - bool Cmd_Item(int argc, const char **argv); bool Cmd_SetFlag(int argc, const char **argv); bool Cmd_GetFlag(int argc, const char **argv); bool Cmd_ClearFlag(int argc, const char **argv); + bool Cmd_ListObjects(int argc, const char **argv); + bool Cmd_MoveObject(int argc, const char **argv); + bool Cmd_Item(int argc, const char **argv); }; } // End of namespace tSage |