[Scummvm-cvs-logs] scummvm master -> 72a9f06f93c06aca4572c8a257cdee806e04efb2

bgK bastien.bouclet at gmail.com
Sun Aug 14 09:22:07 CEST 2011


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
df381055c4 MOHAWK: Implement remaining Myst demo menu opcodes
ef1f5d48fa MOHAWK: Implement remaining Myst demo sneak preview opcodes
72a9f06f93 MOHAWK: Add a return to menu button to the dialog for the demo


Commit: df381055c44452baf02a7384d50429d8717c432f
    https://github.com/scummvm/scummvm/commit/df381055c44452baf02a7384d50429d8717c432f
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-14T00:18:20-07:00

Commit Message:
MOHAWK: Implement remaining Myst demo menu opcodes

Changed paths:
    engines/mohawk/myst_stacks/demo.cpp
    engines/mohawk/myst_stacks/demo.h
    engines/mohawk/myst_stacks/slides.cpp



diff --git a/engines/mohawk/myst_stacks/demo.cpp b/engines/mohawk/myst_stacks/demo.cpp
index 5788f4b..c9e8066 100644
--- a/engines/mohawk/myst_stacks/demo.cpp
+++ b/engines/mohawk/myst_stacks/demo.cpp
@@ -20,16 +20,20 @@
  *
  */
 
+#include "mohawk/cursors.h"
+#include "mohawk/graphics.h"
 #include "mohawk/myst.h"
 #include "mohawk/myst_stacks/demo.h"
 
-#include "gui/message.h"
+#include "common/system.h"
 
 namespace Mohawk {
 namespace MystStacks {
 
 Demo::Demo(MohawkEngine_Myst *vm) : Intro(vm) {
 	setupOpcodes();
+
+	_returnToMenuStep = 0;
 }
 
 Demo::~Demo() {
@@ -47,15 +51,12 @@ Demo::~Demo() {
 
 void Demo::setupOpcodes() {
 	// "Stack-Specific" Opcodes
-	OVERRIDE_OPCODE(100, opcode_100);
-	OPCODE(101, opcode_101);
-	OPCODE(102, opcode_102);
+	OVERRIDE_OPCODE(100, o_stopIntro);
+	OPCODE(101, o_fadeFromBlack);
+	OPCODE(102, o_fadeToBlack);
 
 	// "Init" Opcodes
-	OVERRIDE_OPCODE(201, opcode_201);
-
-	// "Exit" Opcodes
-	OVERRIDE_OPCODE(300, opcode_300);
+	OVERRIDE_OPCODE(201, o_returnToMenu_init);
 }
 
 #undef OPCODE
@@ -64,61 +65,66 @@ void Demo::setupOpcodes() {
 void Demo::disablePersistentScripts() {
 	Intro::disablePersistentScripts();
 
-	_enabled201 = false;
+	_returnToMenuRunning = false;
 }
 
 void Demo::runPersistentScripts() {
 	Intro::runPersistentScripts();
 
-	if (_enabled201) {
-		// Used on Card 2001, 2002 and 2003
-
-		// TODO: Fill in Function...
+	if (_returnToMenuRunning) {
+		returnToMenu_run();
 	}
 }
 
-void Demo::opcode_100(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	// TODO: Fill in Function...
+void Demo::o_stopIntro(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Unk", op);
+	// The original also seems to stop the movies. Not needed with this engine.
+	_vm->_gfx->fadeToBlack();
 }
 
-void Demo::opcode_101(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	varUnusedCheck(op, var);
-
-	// Used on Card 2000, 2002 and 2003
-	// Triggered by Click
-	if (argc == 0) {
-		// TODO: Fill in Logic.. Fade in?
-	} else
-		unknown(op, var, argc, argv);
+void Demo::o_fadeFromBlack(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Fade from black", op);
+	_vm->_gfx->fadeFromBlack();
 }
 
-void Demo::opcode_102(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	varUnusedCheck(op, var);
-
-	// Used on Card 2002 and 2003
-	// Triggered by Click
-	if (argc == 0) {
-		// TODO: Fill in Logic.. Fade out?
-	} else
-		unknown(op, var, argc, argv);
+void Demo::o_fadeToBlack(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Fade to black", op);
+	_vm->_gfx->fadeToBlack();
 }
 
-void Demo::opcode_201(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	varUnusedCheck(op, var);
-
-	// Used on Card 2001, 2002 and 2003
-	if (argc == 0)
-		_enabled201 = true;
-	else
-		unknown(op, var, argc, argv);
+void Demo::returnToMenu_run() {
+	uint32 time = _vm->_system->getMillis();
+
+	if (time < _returnToMenuNextTime)
+		return;
+
+	switch (_returnToMenuStep){
+	case 0:
+		_vm->_gfx->fadeToBlack();
+		_vm->changeToCard(2003, true);
+		_vm->_gfx->fadeFromBlack();
+
+		_returnToMenuStep++;
+		break;
+	case 1:
+		_vm->_gfx->fadeToBlack();
+		_vm->changeToCard(2001, true);
+		_vm->_gfx->fadeFromBlack();
+		_vm->_cursor->showCursor();
+
+		_returnToMenuStep++;
+		break;
+	default:
+		break;
+	}
 }
 
+void Demo::o_returnToMenu_init(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Return to menu init", op);
 
-void Demo::opcode_300(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	// Used on Card 2000
-	varUnusedCheck(op, var);
-
-	// TODO: Fill in Function...
+	// Used on Card 2001, 2002 and 2003
+	_returnToMenuNextTime = _vm->_system->getMillis() + 5000;
+	_returnToMenuRunning = true;
 }
 
 } // End of namespace MystStacks
diff --git a/engines/mohawk/myst_stacks/demo.h b/engines/mohawk/myst_stacks/demo.h
index 4f8d687..c3e57cf 100644
--- a/engines/mohawk/myst_stacks/demo.h
+++ b/engines/mohawk/myst_stacks/demo.h
@@ -46,15 +46,19 @@ public:
 private:
 	void setupOpcodes();
 
-	DECLARE_OPCODE(opcode_100);
-	DECLARE_OPCODE(opcode_101);
-	DECLARE_OPCODE(opcode_102);
+	DECLARE_OPCODE(o_stopIntro);
+	DECLARE_OPCODE(o_fadeFromBlack);
+	DECLARE_OPCODE(o_fadeToBlack);
 
-	DECLARE_OPCODE(opcode_201);
+	DECLARE_OPCODE(o_returnToMenu_init);
 
 	DECLARE_OPCODE(opcode_300);
 
-	bool _enabled201;
+	bool _returnToMenuRunning;
+	uint16 _returnToMenuStep; // 42
+	uint32 _returnToMenuNextTime; // 6
+
+	void returnToMenu_run();
 };
 
 } // End of namespace MystStacks
diff --git a/engines/mohawk/myst_stacks/slides.cpp b/engines/mohawk/myst_stacks/slides.cpp
index e9bb91c..943cb90 100644
--- a/engines/mohawk/myst_stacks/slides.cpp
+++ b/engines/mohawk/myst_stacks/slides.cpp
@@ -61,18 +61,26 @@ void Slides::disablePersistentScripts() {
 void Slides::runPersistentScripts() {
 	if (_cardSwapEnabled) {
 		// Used on Cards...
-		if (_vm->_system->getMillis() > _nextCardTime)
+		if (_vm->_system->getMillis() > _nextCardTime) {
+			_vm->_gfx->fadeToBlack();
 			_vm->changeToCard(_nextCardID, true);
+			_vm->_gfx->fadeFromBlack();
+		}
 	}
 }
 
 void Slides::o_returnToMenu(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Return to menu", op);
+
 	// Go to the information screens of the menu
 	_vm->changeToStack(kDemoStack, 2002, 0, 0);
 }
 
 void Slides::o_setCardSwap(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
 	_nextCardID = argv[0];
+
+	debugC(kDebugScript, "Opcode %d: Set next card %d", op, _nextCardID);
+
 	_nextCardTime = _vm->_system->getMillis() + 5000;
 	_cardSwapEnabled = true;
 }


Commit: ef1f5d48fa028769be8911a8cb997f3add1add21
    https://github.com/scummvm/scummvm/commit/ef1f5d48fa028769be8911a8cb997f3add1add21
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-14T00:18:20-07:00

Commit Message:
MOHAWK: Implement remaining Myst demo sneak preview opcodes

Changed paths:
    engines/mohawk/myst_stacks/preview.cpp
    engines/mohawk/myst_stacks/preview.h



diff --git a/engines/mohawk/myst_stacks/preview.cpp b/engines/mohawk/myst_stacks/preview.cpp
index 0e720c6..1b72c85 100644
--- a/engines/mohawk/myst_stacks/preview.cpp
+++ b/engines/mohawk/myst_stacks/preview.cpp
@@ -54,10 +54,10 @@ Preview::~Preview() {
 
 void Preview::setupOpcodes() {
 	// "Stack-Specific" Opcodes
-	OVERRIDE_OPCODE(196, opcode_196);
-	OVERRIDE_OPCODE(197, opcode_197);
-	OVERRIDE_OPCODE(198, opcode_198);
-	OVERRIDE_OPCODE(199, opcode_199);
+	OVERRIDE_OPCODE(196, o_fadeToBlack);
+	OVERRIDE_OPCODE(197, o_fadeFromBlack);
+	OVERRIDE_OPCODE(198, o_stayHere);
+	OVERRIDE_OPCODE(199, o_speechStop);
 
 	// "Init" Opcodes
 	OPCODE(298, o_speech_init);
@@ -78,40 +78,29 @@ void Preview::runPersistentScripts() {
 		speech_run();
 }
 
-void Preview::opcode_196(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	varUnusedCheck(op, var);
-
-	// Used on Card ...
-	// TODO: Finish Implementation...
-	// Voice Over and Card Advance?
+void Preview::o_fadeToBlack(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Fade to black", op);
+	_vm->_gfx->fadeToBlack();
 }
 
-void Preview::opcode_197(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	varUnusedCheck(op, var);
-
-	// Used on Card ...
-	// TODO: Finish Implementation...
-	// Voice Over and Card Advance?
+void Preview::o_fadeFromBlack(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Fade from black", op);
+	_vm->_gfx->fadeFromBlack();
 }
 
-// TODO: Merge with Opcode 42?
-void Preview::opcode_198(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	varUnusedCheck(op, var);
+void Preview::o_stayHere(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Stay here dialog", op);
 
-	if (argc == 0) {
-		// Nuh-uh! No leaving the library in the demo!
-		GUI::MessageDialog dialog("You can't leave the library in the demo.");
-		dialog.runModal();
-	} else
-		unknown(op, var, argc, argv);
+	// Nuh-uh! No leaving the library in the demo!
+	GUI::MessageDialog dialog("You can't leave the library in the demo.");
+	dialog.runModal();
 }
 
-void Preview::opcode_199(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
-	varUnusedCheck(op, var);
+void Preview::o_speechStop(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
+	debugC(kDebugScript, "Opcode %d: Speech stop", op);
 
-	// Used on Card ...
-	// TODO: Finish Implementation...
-	// Voice Over and Card Advance?
+	_speechRunning = false;
+	_globals.currentAge = 2;
 }
 
 void Preview::speechUpdateCue() {
diff --git a/engines/mohawk/myst_stacks/preview.h b/engines/mohawk/myst_stacks/preview.h
index a884be8..1e4ff3e 100644
--- a/engines/mohawk/myst_stacks/preview.h
+++ b/engines/mohawk/myst_stacks/preview.h
@@ -46,10 +46,10 @@ public:
 private:
 	void setupOpcodes();
 
-	DECLARE_OPCODE(opcode_196);
-	DECLARE_OPCODE(opcode_197);
-	DECLARE_OPCODE(opcode_198);
-	DECLARE_OPCODE(opcode_199);
+	DECLARE_OPCODE(o_fadeToBlack);
+	DECLARE_OPCODE(o_fadeFromBlack);
+	DECLARE_OPCODE(o_stayHere);
+	DECLARE_OPCODE(o_speechStop);
 
 	DECLARE_OPCODE(o_speech_init);
 	DECLARE_OPCODE(o_library_init);


Commit: 72a9f06f93c06aca4572c8a257cdee806e04efb2
    https://github.com/scummvm/scummvm/commit/72a9f06f93c06aca4572c8a257cdee806e04efb2
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-14T00:18:21-07:00

Commit Message:
MOHAWK: Add a return to menu button to the dialog for the demo

Changed paths:
    engines/mohawk/dialogs.cpp
    engines/mohawk/dialogs.h
    engines/mohawk/myst.cpp
    engines/mohawk/myst.h



diff --git a/engines/mohawk/dialogs.cpp b/engines/mohawk/dialogs.cpp
index 11e050a..2d1cc3b 100644
--- a/engines/mohawk/dialogs.cpp
+++ b/engines/mohawk/dialogs.cpp
@@ -81,7 +81,8 @@ enum {
 	kTransCmd = 'TRAN',
 	kWaterCmd = 'WATR',
 	kDropCmd = 'DROP',
-	kMapCmd = 'SMAP'
+	kMapCmd = 'SMAP',
+	kMenuCmd = 'MENU'
 };
 
 #ifdef ENABLE_MYST
@@ -97,6 +98,12 @@ MystOptionsDialog::MystOptionsDialog(MohawkEngine_Myst* vm) : GUI::OptionsDialog
 	else
 		_showMapButton = 0;
 
+	// Myst demo only has a menu
+	if (_vm->getFeatures() & GF_DEMO)
+		_returnToMenuButton = new GUI::ButtonWidget(this, 15, 95, 100, 25, _("~M~ain Menu"), 0, kMenuCmd);
+	else
+		_returnToMenuButton = 0;
+
 	new GUI::ButtonWidget(this, 95, 160, 120, 25, _("~O~K"), 0, GUI::kOKCmd);
 	new GUI::ButtonWidget(this, 225, 160, 120, 25, _("~C~ancel"), 0, GUI::kCloseCmd);
 }
@@ -113,6 +120,11 @@ void MystOptionsDialog::open() {
 		_showMapButton->setEnabled(_vm->_scriptParser &&
 				_vm->_scriptParser->getMap());
 
+	// Return to menu button is not enabled on the menu
+	if (_returnToMenuButton)
+		_returnToMenuButton->setEnabled(_vm->_scriptParser &&
+				_vm->getCurStack() != kDemoStack);
+
 	// Zip mode is disabled in the demo
 	if (_vm->getFeatures() & GF_DEMO)
 		_zipModeCheckbox->setEnabled(false);
@@ -137,6 +149,10 @@ void MystOptionsDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, ui
 		_vm->_needsShowMap = true;
 		close();
 	break;
+	case kMenuCmd:
+		_vm->_needsShowDemoMenu = true;
+		close();
+	break;
 	case GUI::kCloseCmd:
 		close();
 		break;
diff --git a/engines/mohawk/dialogs.h b/engines/mohawk/dialogs.h
index 853ff30..844c01a 100644
--- a/engines/mohawk/dialogs.h
+++ b/engines/mohawk/dialogs.h
@@ -83,6 +83,7 @@ private:
 	GUI::CheckboxWidget *_transitionsCheckbox;
 	GUI::ButtonWidget *_dropPageButton;
 	GUI::ButtonWidget *_showMapButton;
+	GUI::ButtonWidget *_returnToMenuButton;
 };
 
 #endif
diff --git a/engines/mohawk/myst.cpp b/engines/mohawk/myst.cpp
index 342fa4e..eeb4594 100644
--- a/engines/mohawk/myst.cpp
+++ b/engines/mohawk/myst.cpp
@@ -343,6 +343,7 @@ Common::Error MohawkEngine_Myst::run() {
 				case Common::KEYCODE_F5:
 					_needsPageDrop = false;
 					_needsShowMap = false;
+					_needsShowDemoMenu = false;
 
 					runDialog(*_optionsDialog);
 
@@ -355,6 +356,11 @@ Common::Error MohawkEngine_Myst::run() {
 						_scriptParser->showMap();
 						_needsShowMap = false;
 					}
+
+					if (_needsShowDemoMenu) {
+						changeToStack(kDemoStack, 2002, 0, 0);
+						_needsShowDemoMenu = false;
+					}
 					break;
 				default:
 					break;
diff --git a/engines/mohawk/myst.h b/engines/mohawk/myst.h
index ebcc3b4..02f0a46 100644
--- a/engines/mohawk/myst.h
+++ b/engines/mohawk/myst.h
@@ -167,6 +167,7 @@ public:
 	bool _needsUpdate;
 	bool _needsPageDrop;
 	bool _needsShowMap;
+	bool _needsShowDemoMenu;
 
 	MystView _view;
 	MystGraphics *_gfx;






More information about the Scummvm-git-logs mailing list