[Scummvm-cvs-logs] scummvm master -> 2b1f7d6ebc6b272b7f91c7f89149a19fbb22f143

dreammaster dreammaster at scummvm.org
Sat Jan 9 08:35:31 CET 2016


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

Summary:
2b1f7d6ebc MADS: Hook up calls to conversation update where necessary


Commit: 2b1f7d6ebc6b272b7f91c7f89149a19fbb22f143
    https://github.com/scummvm/scummvm/commit/2b1f7d6ebc6b272b7f91c7f89149a19fbb22f143
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-01-09T18:34:43+11:00

Commit Message:
MADS: Hook up calls to conversation update where necessary

Changed paths:
    engines/mads/conversations.cpp
    engines/mads/conversations.h
    engines/mads/scene.cpp



diff --git a/engines/mads/conversations.cpp b/engines/mads/conversations.cpp
index 5077abd..95c088a 100644
--- a/engines/mads/conversations.cpp
+++ b/engines/mads/conversations.cpp
@@ -277,7 +277,7 @@ void GameConversations::reset(int id) {
 	warning("TODO: GameConversations::reset");
 }
 
-void GameConversations::update(bool isRelease) {
+void GameConversations::update(bool flag) {
 	warning("TODO: GameConversations::update");
 }
 
diff --git a/engines/mads/conversations.h b/engines/mads/conversations.h
index b62f4fb..e3e958e 100644
--- a/engines/mads/conversations.h
+++ b/engines/mads/conversations.h
@@ -312,7 +312,7 @@ public:
 	/**
 	 * Handles updating the conversation display
 	 */
-	void update(bool isRelease);
+	void update(bool flag);
 
 	/**
 	 * Returns true if any conversation is currently atcive
@@ -328,6 +328,11 @@ public:
 	 * Returns _restoreRunning value
 	 */
 	int restoreRunning() const { return _restoreRunning; }
+
+	/**
+	 * Returns the current conversation mode
+	 */
+	ConversationMode currentMode() const { return _currentMode; }
 };
 
 } // End of namespace MADS
diff --git a/engines/mads/scene.cpp b/engines/mads/scene.cpp
index cbc15b9..83ab115 100644
--- a/engines/mads/scene.cpp
+++ b/engines/mads/scene.cpp
@@ -419,14 +419,24 @@ void Scene::doFrame() {
 	}
 
 	if (_currentSceneId != _nextSceneId) {
+		_vm->_gameConv->stop();
 		_freeAnimationFlag = true;
+		// TODO: Handle Phantom/Dragonsphere animation list free
 	} else {
 		doSceneStep();
 		checkKeyboard();
 
 		if (_currentSceneId != _nextSceneId) {
+			_vm->_gameConv->stop();
 			_freeAnimationFlag = true;
+			// TODO: Handle Phantom/Dragonsphere animation list free
 		} else {
+			// Handle conversation updates if one is active
+			if (!_vm->_game->_trigger && _vm->_gameConv->active() &&
+				!_vm->_game->_camX._activeFl && !_vm->_game->_camY._activeFl)
+				_vm->_gameConv->update(false);
+
+			// Update the player
 			player.nextFrame();
 
 			// Cursor update code
@@ -548,13 +558,20 @@ void Scene::doPreactions() {
 void Scene::doAction() {
 	bool flag = false;
 
+	// Don't allow the player to move if a conversation is active
+	if (_vm->_gameConv->active()) {
+		_vm->_game->_scene._action._savedFields._lookFlag = false;
+		if (_vm->_gameConv->currentMode() == CONVMODE_2 || _vm->_gameConv->currentMode() == CONVMODE_3)
+			_vm->_game->_player._stepEnabled = false;
+	}
+
 	_vm->_game->_triggerSetupMode = SEQUENCE_TRIGGER_PARSER;
 	if ((_action._inProgress || _vm->_game->_trigger) && !_action._savedFields._commandError) {
 		_sceneLogic->actions();
 		flag = !_action._inProgress;
 	}
 
-	if (_vm->_game->_screenObjects._inputMode == kInputConversation) {
+	if (_vm->_gameConv->active() || _vm->_game->_screenObjects._inputMode == kInputConversation) {
 		_action._inProgress = false;
 	} else {
 		if ((_action._inProgress || _vm->_game->_trigger) ||
@@ -587,6 +604,10 @@ void Scene::doAction() {
 	_action._inProgress = false;
 	if (_vm->_game->_triggerMode == SEQUENCE_TRIGGER_PARSER)
 		_vm->_game->_trigger = 0;
+
+	if (_vm->_gameConv->active() && (_vm->_gameConv->currentMode() == CONVMODE_1 ||
+			_vm->_gameConv->currentMode() == CONVMODE_2))
+		_vm->_gameConv->update(true);
 }
 
 void Scene::doSceneStep() {






More information about the Scummvm-git-logs mailing list