[Scummvm-cvs-logs] scummvm master -> e5ecd500cfbf1c91da31dab0a5a71ff43ed82033

bluegr bluegr at gmail.com
Sun Dec 21 22:35:03 CET 2014


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:
965dafe31b ZVISION: Implement the "dumpallscripts" console command again
e5ecd500cf ZVISION: Document some controls that are only used in Zork: Nemesis


Commit: 965dafe31b1c1f7c4684c0d2cbdb3461e3fddac8
    https://github.com/scummvm/scummvm/commit/965dafe31b1c1f7c4684c0d2cbdb3461e3fddac8
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2014-12-21T23:33:01+02:00

Commit Message:
ZVISION: Implement the "dumpallscripts" console command again

Changed paths:
    engines/zvision/core/console.cpp
    engines/zvision/core/console.h
    engines/zvision/file/search_manager.cpp
    engines/zvision/file/search_manager.h



diff --git a/engines/zvision/core/console.cpp b/engines/zvision/core/console.cpp
index 4dd10d6..0789f8d 100644
--- a/engines/zvision/core/console.cpp
+++ b/engines/zvision/core/console.cpp
@@ -52,6 +52,7 @@ Console::Console(ZVision *engine) : GUI::Debugger(), _engine(engine) {
 	registerCmd("setpanoramascale", WRAP_METHOD(Console, cmdSetPanoramaScale));
 	registerCmd("location", WRAP_METHOD(Console, cmdLocation));
 	registerCmd("dumpfile", WRAP_METHOD(Console, cmdDumpFile));
+	registerCmd("dumpallscripts", WRAP_METHOD(Console, cmdDumpAllScripts));
 }
 
 bool Console::cmdLoadVideo(int argc, const char **argv) {
@@ -205,6 +206,20 @@ bool Console::cmdLocation(int argc, const char **argv) {
 	return true;
 }
 
+void dumpFile(Common::SeekableReadStream *s, const char *outName) {
+	byte *buffer = new byte[s->size()];
+	s->read(buffer, s->size());
+
+	Common::DumpFile dumpFile;
+	dumpFile.open(outName);
+
+	dumpFile.write(buffer, s->size());
+	dumpFile.flush();
+	dumpFile.close();
+
+	delete[] buffer;
+}
+
 bool Console::cmdDumpFile(int argc, const char **argv) {
 	if (argc != 2) {
 		debugPrintf("Use %s <fileName> to dump a file\n", argv[0]);
@@ -217,17 +232,26 @@ bool Console::cmdDumpFile(int argc, const char **argv) {
 		return true;
 	}
 
-	byte *buffer = new byte[f.size()];
-	f.read(buffer, f.size());
+	dumpFile(&f, argv[1]);
 
-	Common::DumpFile dumpFile;
-	dumpFile.open(argv[1]);
+	return true;
+}
 
-	dumpFile.write(buffer, f.size());
-	dumpFile.flush();
-	dumpFile.close();
+bool Console::cmdDumpAllScripts(int argc, const char **argv) {
+	Common::String fileName;
+	Common::SeekableReadStream *in;
 
-	delete[] buffer;
+	SearchManager::MatchList fileList;
+	_engine->getSearchManager()->listMembersWithExtension(fileList, "scr");
+
+	for (SearchManager::MatchList::iterator iter = fileList.begin(); iter != fileList.end(); ++iter) {
+		fileName = iter->_value.name;
+		debugPrintf("Dumping %s\n", fileName.c_str());
+
+		in = iter->_value.arch->createReadStreamForMember(iter->_value.name);
+		dumpFile(in, fileName.c_str());
+		delete in;
+	}
 
 	return true;
 }
diff --git a/engines/zvision/core/console.h b/engines/zvision/core/console.h
index 299bd61..7e27fe8 100644
--- a/engines/zvision/core/console.h
+++ b/engines/zvision/core/console.h
@@ -46,6 +46,7 @@ private:
 	bool cmdSetPanoramaScale(int argc, const char **argv);
 	bool cmdLocation(int argc, const char **argv);
 	bool cmdDumpFile(int argc, const char **argv);
+	bool cmdDumpAllScripts(int argc, const char **argv);
 };
 
 } // End of namespace ZVision
diff --git a/engines/zvision/file/search_manager.cpp b/engines/zvision/file/search_manager.cpp
index d0d4e43..7a907df 100644
--- a/engines/zvision/file/search_manager.cpp
+++ b/engines/zvision/file/search_manager.cpp
@@ -275,4 +275,11 @@ void SearchManager::listDirRecursive(Common::List<Common::String> &_list, const
 	}
 }
 
+void SearchManager::listMembersWithExtension(MatchList &fileList, Common::String extension) {
+	for (SearchManager::MatchList::iterator it = _files.begin(); it != _files.end(); ++it) {
+		if (it->_key.hasSuffix(extension))
+			fileList[it->_key] = it->_value;
+	}
+}
+
 } // End of namespace ZVision
diff --git a/engines/zvision/file/search_manager.h b/engines/zvision/file/search_manager.h
index fdd70fd..b9ed02e 100644
--- a/engines/zvision/file/search_manager.h
+++ b/engines/zvision/file/search_manager.h
@@ -47,25 +47,23 @@ public:
 
 	void loadZix(const Common::String &name);
 
-private:
-
-	void listDirRecursive(Common::List<Common::String> &dirList, const Common::FSNode &fsNode, int depth);
-
 	struct Node {
 		Common::String name;
 		Common::Archive *arch;
 	};
 
-	Common::List<Common::String> _dirList;
-
 	typedef Common::HashMap<Common::String, Node, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> MatchList;
 
-	Common::List<Common::Archive *> _archList;
-	MatchList _files;
-
-	Common::String _root;
+	void listMembersWithExtension(MatchList &fileList, Common::String extension);
 
 private:
+
+	void listDirRecursive(Common::List<Common::String> &dirList, const Common::FSNode &fsNode, int depth);
+
+	Common::List<Common::String> _dirList;
+	Common::List<Common::Archive *> _archList;
+	Common::String _root;
+	MatchList _files;
 };
 
 }


Commit: e5ecd500cfbf1c91da31dab0a5a71ff43ed82033
    https://github.com/scummvm/scummvm/commit/e5ecd500cfbf1c91da31dab0a5a71ff43ed82033
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2014-12-21T23:33:48+02:00

Commit Message:
ZVISION: Document some controls that are only used in Zork: Nemesis

Changed paths:
    engines/zvision/scripting/controls/fist_control.h
    engines/zvision/scripting/controls/hotmov_control.h
    engines/zvision/scripting/controls/paint_control.h
    engines/zvision/scripting/controls/titler_control.h
    engines/zvision/scripting/scr_file_handling.cpp



diff --git a/engines/zvision/scripting/controls/fist_control.h b/engines/zvision/scripting/controls/fist_control.h
index 0a6b977..bad2daa 100644
--- a/engines/zvision/scripting/controls/fist_control.h
+++ b/engines/zvision/scripting/controls/fist_control.h
@@ -34,6 +34,7 @@ namespace Video {
 
 namespace ZVision {
 
+// Only used in Zork Nemesis, it handles the door lock puzzle with the skeletal fingers (td60, td90, td9e)
 class FistControl : public Control {
 public:
 	FistControl(ZVision *engine, uint32 key, Common::SeekableReadStream &stream);
diff --git a/engines/zvision/scripting/controls/hotmov_control.h b/engines/zvision/scripting/controls/hotmov_control.h
index b18d44c..640fab0 100644
--- a/engines/zvision/scripting/controls/hotmov_control.h
+++ b/engines/zvision/scripting/controls/hotmov_control.h
@@ -34,6 +34,7 @@ namespace Video {
 
 namespace ZVision {
 
+// Only used in Zork Nemesis, it handles movies where the player needs to click on something (mj7g, vw3g)
 class HotMovControl : public Control {
 public:
 	HotMovControl(ZVision *engine, uint32 key, Common::SeekableReadStream &stream);
diff --git a/engines/zvision/scripting/controls/paint_control.h b/engines/zvision/scripting/controls/paint_control.h
index 8097290..0e5b59b 100644
--- a/engines/zvision/scripting/controls/paint_control.h
+++ b/engines/zvision/scripting/controls/paint_control.h
@@ -32,6 +32,7 @@
 
 namespace ZVision {
 
+// Only used in Zork Nemesis, it's the painting puzzle screen in Lucien's room in Irondune (ch4g)
 class PaintControl : public Control {
 public:
 	PaintControl(ZVision *engine, uint32 key, Common::SeekableReadStream &stream);
diff --git a/engines/zvision/scripting/controls/titler_control.h b/engines/zvision/scripting/controls/titler_control.h
index 075e47c..86bb398 100644
--- a/engines/zvision/scripting/controls/titler_control.h
+++ b/engines/zvision/scripting/controls/titler_control.h
@@ -32,6 +32,7 @@
 
 namespace ZVision {
 
+// Only used in Zork Nemesis - it's the death screen with the Restore/Exit buttons
 class TitlerControl : public Control {
 public:
 	TitlerControl(ZVision *engine, uint32 key, Common::SeekableReadStream &stream);
diff --git a/engines/zvision/scripting/scr_file_handling.cpp b/engines/zvision/scripting/scr_file_handling.cpp
index c117da5..47b8b0a 100644
--- a/engines/zvision/scripting/scr_file_handling.cpp
+++ b/engines/zvision/scripting/scr_file_handling.cpp
@@ -358,12 +358,16 @@ Control *ScriptManager::parseControl(Common::String &line, Common::SeekableReadS
 	} else if (controlType.equalsIgnoreCase("safe")) {
 		return new SafeControl(_engine, key, stream);
 	} else if (controlType.equalsIgnoreCase("hotmovie")) {
+		// Only used in Zork Nemesis, it handles movies where the player needs to click on something (mj7g, vw3g)
 		return new HotMovControl(_engine, key, stream);
 	} else if (controlType.equalsIgnoreCase("fist")) {
+		// Only used in Zork Nemesis, it handles the door lock puzzle with the skeletal fingers (td60, td90, td9e)
 		return new FistControl(_engine, key, stream);
 	} else if (controlType.equalsIgnoreCase("paint")) {
+		// Only used in Zork Nemesis, it's the painting puzzle screen in Lucien's room in Irondune (ch4g)
 		return new PaintControl(_engine, key, stream);
 	} else if (controlType.equalsIgnoreCase("titler")) {
+		// Only used in Zork Nemesis - it's the death screen with the Restore/Exit buttons (cjde)
 		return new TitlerControl(_engine, key, stream);
 	}
 	return NULL;






More information about the Scummvm-git-logs mailing list