[Scummvm-cvs-logs] SF.net SVN: scummvm:[47699] scummvm/trunk/engines/sci/engine/kgraphics.cpp

mthreepwood at users.sourceforge.net mthreepwood at users.sourceforge.net
Sat Jan 30 04:57:58 CET 2010


Revision: 47699
          http://scummvm.svn.sourceforge.net/scummvm/?rev=47699&view=rev
Author:   mthreepwood
Date:     2010-01-30 03:57:58 +0000 (Sat, 30 Jan 2010)

Log Message:
-----------
Add the SCI2.1 variant of kShowMovie; KQ7 now shows the opening video.

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kgraphics.cpp

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-01-30 03:37:26 UTC (rev 47698)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-01-30 03:57:58 UTC (rev 47699)
@@ -1167,8 +1167,7 @@
 	// The Windows and DOS versions use different video format as well
 	// as a different argument set.
 	if (argv[0].toUint16() == 0) {
-		// Windows
-
+		// Windows (SCI1.1/SCI2)
 		Common::String filename = s->_segMan->getString(argv[1]);
 
 		Graphics::AviDecoder *aviDecoder = new Graphics::AviDecoder(g_system->getMixer());
@@ -1182,9 +1181,34 @@
 		aviDecoder->closeFile();
 		delete player;
 		delete aviDecoder;
+#ifdef ENABLE_SCI32
+	} else if (argv[0].toUint16() == 1) {
+		// Windows (SCI2.1)
+		
+		// TODO: This appears to be some sort of subop. case 0 contains the string
+		// for the video, so we'll just play it from there for now.
+		switch (argv[1].toUint16()) {
+		case 0: {
+			Common::String filename = s->_segMan->getString(argv[2]);
+			Graphics::AviDecoder *aviDecoder = new Graphics::AviDecoder(g_system->getMixer());
+			Graphics::VideoPlayer *player = new Graphics::VideoPlayer(aviDecoder);
+			if (aviDecoder->loadFile(filename.c_str())) {
+				player->playVideo();
+				playedVideo = true;
+			} else {
+				warning("Failed to open movie file %s", filename.c_str());
+			}
+			aviDecoder->closeFile();
+			delete player;
+			delete aviDecoder;
+			break;
+		}
+		default:
+			warning("Unhandled SCI2.1 kShowMovie subop %d", argv[1].toUint16());
+		}
+#endif
 	} else {
 		// DOS
-
 		Common::String filename = s->_segMan->getString(argv[0]);
 		int delay = argv[1].toUint16(); // Time between frames in ticks
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list