aboutsummaryrefslogtreecommitdiff
path: root/engines/wage/script.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2017-08-29 19:21:20 +0200
committerEugene Sandulenko2017-08-29 19:21:20 +0200
commit5eaa48ec965f4c1701f4fb310c43fa3042845190 (patch)
tree98b749135e701f826078a8190896882402c82815 /engines/wage/script.cpp
parentb5c552b3bb7f6cd18c493dc23b678135c86a12e7 (diff)
downloadscummvm-rg350-5eaa48ec965f4c1701f4fb310c43fa3042845190.tar.gz
scummvm-rg350-5eaa48ec965f4c1701f4fb310c43fa3042845190.tar.bz2
scummvm-rg350-5eaa48ec965f4c1701f4fb310c43fa3042845190.zip
WAGE: Dump scripts by request
Diffstat (limited to 'engines/wage/script.cpp')
-rw-r--r--engines/wage/script.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/engines/wage/script.cpp b/engines/wage/script.cpp
index bff75d06bd..d2fbc6c9b7 100644
--- a/engines/wage/script.cpp
+++ b/engines/wage/script.cpp
@@ -50,6 +50,8 @@
#include "wage/script.h"
#include "wage/world.h"
+#include "common/config-manager.h"
+#include "common/file.h"
#include "common/stream.h"
namespace Wage {
@@ -74,7 +76,7 @@ Common::String Script::Operand::toString() {
}
}
-Script::Script(Common::SeekableReadStream *data) : _data(data) {
+Script::Script(Common::SeekableReadStream *data, int num) : _data(data) {
_engine = NULL;
_world = NULL;
@@ -85,6 +87,29 @@ Script::Script(Common::SeekableReadStream *data) : _data(data) {
_handled = false;
convertToText();
+
+ if (ConfMan.getBool("dump_scripts")) {
+ Common::DumpFile out;
+ Common::String name;
+
+ if (num == -1)
+ name = Common::String::format("./dumps/%s-global.txt", ConfMan.get("gameid").c_str());
+ else
+ name = Common::String::format("./dumps/%s-%d.txt", ConfMan.get("gameid").c_str(), num);
+
+ if (!out.open(name)) {
+ warning("Can not open dump file %s", name.c_str());
+ return;
+ }
+
+ for (uint i = 0; i < _scriptText.size(); i++) {
+ out.write(_scriptText[i]->line.c_str(), strlen(_scriptText[i]->line.c_str()));
+ out.writeByte('\n');
+ }
+
+ out.flush();
+ out.close();
+ }
}
Script::~Script() {