diff options
| -rw-r--r-- | engines/adl/console.cpp | 35 | ||||
| -rw-r--r-- | engines/adl/console.h | 1 | 
2 files changed, 31 insertions, 5 deletions
diff --git a/engines/adl/console.cpp b/engines/adl/console.cpp index 94d0a73e84..c62d21c7ce 100644 --- a/engines/adl/console.cpp +++ b/engines/adl/console.cpp @@ -39,6 +39,7 @@ Console::Console(AdlEngine *engine) : GUI::Debugger() {  	registerCmd("items", WRAP_METHOD(Console, Cmd_Items));  	registerCmd("give_item", WRAP_METHOD(Console, Cmd_GiveItem));  	registerCmd("vars", WRAP_METHOD(Console, Cmd_Vars)); +	registerCmd("var", WRAP_METHOD(Console, Cmd_Var));  }  Common::String Console::toAscii(const Common::String &str) { @@ -162,10 +163,10 @@ bool Console::Cmd_Room(int argc, const char **argv) {  			return true;  		} -		int roomCount = _engine->_state.rooms.size(); -		int room = strtoul(argv[1], NULL, 0); +		uint roomCount = _engine->_state.rooms.size(); +		uint room = strtoul(argv[1], NULL, 0);  		if (room < 1 || room > roomCount) { -			debugPrintf("Room %i out of valid range [1, %d]\n", room, roomCount); +			debugPrintf("Room %u out of valid range [1, %u]\n", room, roomCount);  			return true;  		} @@ -177,7 +178,7 @@ bool Console::Cmd_Room(int argc, const char **argv) {  		_engine->_display->updateHiResScreen();  	} -	debugPrintf("Current room: %d\n", _engine->_state.room); +	debugPrintf("Current room: %u\n", _engine->_state.room);  	return true;  } @@ -205,7 +206,7 @@ bool Console::Cmd_GiveItem(int argc, const char **argv) {  	Common::List<Item>::iterator item;  	char *end; -	int id = strtoul(argv[1], &end, 0); +	uint id = strtoul(argv[1], &end, 0);  	if (*end != 0) {  		Common::Array<Item *> matches; @@ -268,6 +269,30 @@ bool Console::Cmd_Vars(int argc, const char **argv) {  	return true;  } +bool Console::Cmd_Var(int argc, const char **argv) { +	if (argc < 2 || argc > 3) { +		debugPrintf("Usage: %s <index> [<value>]\n", argv[0]); +		return true; +	} + +	uint varCount = _engine->_state.vars.size(); +	uint var = strtoul(argv[1], NULL, 0); + +	if (var >= varCount) { +		debugPrintf("Variable %u out of valid range [0, %u]\n", var, varCount - 1); +		return true; +	} + +	if (argc == 3) { +		uint value = strtoul(argv[2], NULL, 0); +		_engine->_state.vars[var] = value; +	} + +	debugPrintf("%3d: %3d\n", var, _engine->_state.vars[var]); + +	return true; +} +  void Console::printItem(const Item &item) {  	Common::String name, desc, state; diff --git a/engines/adl/console.h b/engines/adl/console.h index 13f55fc036..a8c6adc1cc 100644 --- a/engines/adl/console.h +++ b/engines/adl/console.h @@ -52,6 +52,7 @@ private:  	bool Cmd_Items(int argc, const char **argv);  	bool Cmd_GiveItem(int argc, const char **argv);  	bool Cmd_Vars(int argc, const char **argv); +	bool Cmd_Var(int argc, const char **argv);  	void printItem(const Item &item);  	void printWordMap(const Common::HashMap<Common::String, uint> &wordMap);  | 
