[Scummvm-git-logs] scummvm master -> a1236d57820e53b07180adcf78ba7af844ca51b1
waltervn
walter at vanniftrik-it.nl
Thu Dec 22 16:53:20 CET 2016
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
d658f0c0b6 ADL: Add region support to script dumper
a1236d5782 ADL: Add 'region' debug command
Commit: d658f0c0b636e1253ee6d66661c332b43a020cbf
https://github.com/scummvm/scummvm/commit/d658f0c0b636e1253ee6d66661c332b43a020cbf
Author: Walter van Niftrik (walter at scummvm.org)
Date: 2016-12-22T16:42:04+01:00
Commit Message:
ADL: Add region support to script dumper
Changed paths:
engines/adl/adl.h
engines/adl/adl_v4.h
engines/adl/console.cpp
engines/adl/console.h
diff --git a/engines/adl/adl.h b/engines/adl/adl.h
index 87e99a5..67d9a73 100644
--- a/engines/adl/adl.h
+++ b/engines/adl/adl.h
@@ -393,6 +393,7 @@ private:
virtual void drawItem(Item &item, const Common::Point &pos) = 0;
virtual void loadRoom(byte roomNr) = 0;
virtual void showRoom() = 0;
+ virtual void switchRegion(byte region) { }
// Engine
Common::Error run();
diff --git a/engines/adl/adl_v4.h b/engines/adl/adl_v4.h
index 1bc7664..0ddd1b9 100644
--- a/engines/adl/adl_v4.h
+++ b/engines/adl/adl_v4.h
@@ -51,6 +51,7 @@ protected:
// AdlEngine
virtual Common::String loadMessage(uint idx) const;
virtual Common::String getItemDescription(const Item &item) const;
+ virtual void switchRegion(byte region);
// AdlEngine_v2
virtual void adjustDataBlockPtr(byte &track, byte §or, byte &offset, byte &size) const;
@@ -67,7 +68,6 @@ protected:
void restoreRoomState(byte room);
void backupVars();
void restoreVars();
- void switchRegion(byte region);
int o4_isItemInRoom(ScriptEnv &e);
int o4_isVarGT(ScriptEnv &e);
diff --git a/engines/adl/console.cpp b/engines/adl/console.cpp
index c35e8b0..0ac3cb8 100644
--- a/engines/adl/console.cpp
+++ b/engines/adl/console.cpp
@@ -112,35 +112,55 @@ bool Console::Cmd_ValidCommands(int argc, const char **argv) {
return true;
}
-bool Console::Cmd_DumpScripts(int argc, const char **argv) {
- if (argc != 1) {
- debugPrintf("Usage: %s\n", argv[0]);
- return true;
- }
-
- bool oldFlag = DebugMan.isDebugChannelEnabled(kDebugChannelScript);
-
- DebugMan.enableDebugChannel("Script");
-
- _engine->_dumpFile = new Common::DumpFile();
-
+void Console::dumpScripts(const Common::String &prefix) {
for (byte roomNr = 1; roomNr <= _engine->_state.rooms.size(); ++roomNr) {
_engine->loadRoom(roomNr);
if (_engine->_roomData.commands.size() != 0) {
- _engine->_dumpFile->open(Common::String::format("%03d.ADL", roomNr).c_str());
+ _engine->_dumpFile->open(prefix + Common::String::format("%03d.ADL", roomNr).c_str());
_engine->doAllCommands(_engine->_roomData.commands, IDI_ANY, IDI_ANY);
_engine->_dumpFile->close();
}
}
_engine->loadRoom(_engine->_state.room);
- _engine->_dumpFile->open("GLOBAL.ADL");
+ _engine->_dumpFile->open(prefix + "GLOBAL.ADL");
_engine->doAllCommands(_engine->_globalCommands, IDI_ANY, IDI_ANY);
_engine->_dumpFile->close();
- _engine->_dumpFile->open("RESPONSE.ADL");
+ _engine->_dumpFile->open(prefix + "RESPONSE.ADL");
_engine->doAllCommands(_engine->_roomCommands, IDI_ANY, IDI_ANY);
_engine->_dumpFile->close();
+}
+
+bool Console::Cmd_DumpScripts(int argc, const char **argv) {
+ if (argc != 1) {
+ debugPrintf("Usage: %s\n", argv[0]);
+ return true;
+ }
+
+ bool oldFlag = DebugMan.isDebugChannelEnabled(kDebugChannelScript);
+
+ DebugMan.enableDebugChannel("Script");
+
+ _engine->_dumpFile = new Common::DumpFile();
+
+ if (_engine->_state.regions.empty()) {
+ dumpScripts();
+ } else {
+ const byte oldRegion = _engine->_state.region;
+ const byte oldPrevRegion = _engine->_state.prevRegion;
+ const byte oldRoom = _engine->_state.room;
+
+ for (byte regionNr = 1; regionNr <= _engine->_state.regions.size(); ++regionNr) {
+ _engine->switchRegion(regionNr);
+ dumpScripts(Common::String::format("%03d-", regionNr));
+ }
+
+ _engine->switchRegion(oldRegion);
+ _engine->_state.prevRegion = oldPrevRegion;
+ _engine->_state.room = oldRoom;
+ _engine->loadRoom(oldRoom);
+ }
delete _engine->_dumpFile;
_engine->_dumpFile = nullptr;
diff --git a/engines/adl/console.h b/engines/adl/console.h
index a8c6adc..8b3ab6b 100644
--- a/engines/adl/console.h
+++ b/engines/adl/console.h
@@ -56,6 +56,7 @@ private:
void printItem(const Item &item);
void printWordMap(const Common::HashMap<Common::String, uint> &wordMap);
+ void dumpScripts(const Common::String &prefix = Common::String());
AdlEngine *_engine;
};
Commit: a1236d57820e53b07180adcf78ba7af844ca51b1
https://github.com/scummvm/scummvm/commit/a1236d57820e53b07180adcf78ba7af844ca51b1
Author: Walter van Niftrik (walter at scummvm.org)
Date: 2016-12-22T16:42:04+01:00
Commit Message:
ADL: Add 'region' debug command
Changed paths:
engines/adl/console.cpp
engines/adl/console.h
diff --git a/engines/adl/console.cpp b/engines/adl/console.cpp
index 0ac3cb8..e761141 100644
--- a/engines/adl/console.cpp
+++ b/engines/adl/console.cpp
@@ -35,6 +35,7 @@ Console::Console(AdlEngine *engine) : GUI::Debugger() {
registerCmd("verbs", WRAP_METHOD(Console, Cmd_Verbs));
registerCmd("dump_scripts", WRAP_METHOD(Console, Cmd_DumpScripts));
registerCmd("valid_cmds", WRAP_METHOD(Console, Cmd_ValidCommands));
+ registerCmd("region", WRAP_METHOD(Console, Cmd_Region));
registerCmd("room", WRAP_METHOD(Console, Cmd_Room));
registerCmd("items", WRAP_METHOD(Console, Cmd_Items));
registerCmd("give_item", WRAP_METHOD(Console, Cmd_GiveItem));
@@ -171,6 +172,42 @@ bool Console::Cmd_DumpScripts(int argc, const char **argv) {
return true;
}
+void Console::prepareGame() {
+ _engine->clearScreen();
+ _engine->loadRoom(_engine->_state.room);
+ _engine->showRoom();
+ _engine->_display->updateTextScreen();
+ _engine->_display->updateHiResScreen();
+}
+
+bool Console::Cmd_Region(int argc, const char **argv) {
+ if (argc > 2) {
+ debugPrintf("Usage: %s [<new_region>]\n", argv[0]);
+ return true;
+ }
+
+ if (argc == 2) {
+ if (!_engine->_canRestoreNow) {
+ debugPrintf("Cannot change regions right now\n");
+ return true;
+ }
+
+ uint regionCount = _engine->_state.regions.size();
+ uint region = strtoul(argv[1], NULL, 0);
+ if (region < 1 || region > regionCount) {
+ debugPrintf("Region %u out of valid range [1, %u]\n", region, regionCount);
+ return true;
+ }
+
+ _engine->switchRegion(region);
+ prepareGame();
+ }
+
+ debugPrintf("Current region: %u\n", _engine->_state.region);
+
+ return true;
+}
+
bool Console::Cmd_Room(int argc, const char **argv) {
if (argc > 2) {
debugPrintf("Usage: %s [<new_room>]\n", argv[0]);
@@ -191,11 +228,7 @@ bool Console::Cmd_Room(int argc, const char **argv) {
}
_engine->_state.room = room;
- _engine->clearScreen();
- _engine->loadRoom(_engine->_state.room);
- _engine->showRoom();
- _engine->_display->updateTextScreen();
- _engine->_display->updateHiResScreen();
+ prepareGame();
}
debugPrintf("Current room: %u\n", _engine->_state.room);
diff --git a/engines/adl/console.h b/engines/adl/console.h
index 8b3ab6b..68787e1 100644
--- a/engines/adl/console.h
+++ b/engines/adl/console.h
@@ -48,6 +48,7 @@ private:
bool Cmd_Verbs(int argc, const char **argv);
bool Cmd_DumpScripts(int argc, const char **argv);
bool Cmd_ValidCommands(int argc, const char **argv);
+ bool Cmd_Region(int argc, const char **argv);
bool Cmd_Room(int argc, const char **argv);
bool Cmd_Items(int argc, const char **argv);
bool Cmd_GiveItem(int argc, const char **argv);
@@ -57,6 +58,7 @@ private:
void printItem(const Item &item);
void printWordMap(const Common::HashMap<Common::String, uint> &wordMap);
void dumpScripts(const Common::String &prefix = Common::String());
+ void prepareGame();
AdlEngine *_engine;
};
More information about the Scummvm-git-logs
mailing list