[Scummvm-git-logs] scummvm master -> 65811506f8bc92f8fd3bbf5c3ce51ef74da11af6

dreammaster dreammaster at scummvm.org
Sun Sep 24 20:12:45 CEST 2017


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:
65811506f8 TITANIC: Don't launch further bot speeches when exiting game


Commit: 65811506f8bc92f8fd3bbf5c3ce51ef74da11af6
    https://github.com/scummvm/scummvm/commit/65811506f8bc92f8fd3bbf5c3ce51ef74da11af6
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-09-24T14:09:24-04:00

Commit Message:
TITANIC: Don't launch further bot speeches when exiting game

Previously, notifying bots to the end of a speech fragment was
done in ~TTtalker. Which caused problems when in progress talkers
were freed when exiting the game with a speech was in progress,
since it would try to start the next following speech fragment.

Changed paths:
    engines/titanic/true_talk/true_talk_manager.cpp
    engines/titanic/true_talk/tt_talker.cpp
    engines/titanic/true_talk/tt_talker.h


diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp
index a7766e8..f8ac185 100644
--- a/engines/titanic/true_talk/true_talk_manager.cpp
+++ b/engines/titanic/true_talk/true_talk_manager.cpp
@@ -212,6 +212,7 @@ void CTrueTalkManager::removeCompleted() {
 
 		if (talker->_done) {
 			i = _talkers.erase(i);
+			talker->speechEnded();
 			delete talker;
 		} else {
 			++i;
diff --git a/engines/titanic/true_talk/tt_talker.cpp b/engines/titanic/true_talk/tt_talker.cpp
index b296ec2..a2c5e4c 100644
--- a/engines/titanic/true_talk/tt_talker.cpp
+++ b/engines/titanic/true_talk/tt_talker.cpp
@@ -34,7 +34,12 @@ void TTtalker::speechStarted(const CString &dialogueStr, uint dialogueId, uint s
 	msg.execute(_npc, nullptr, MSGFLAG_BREAK_IF_HANDLED);
 }
 
-TTtalker::~TTtalker() {
+void TTtalker::endSpeech(int val) {
+	_done = true;
+	_talkEndState = val;
+}
+
+void TTtalker::speechEnded() {
 	CPetControl *petControl = _npc->getPetControl();
 	if (petControl)
 		// Add in final line
@@ -45,9 +50,4 @@ TTtalker::~TTtalker() {
 	endedMsg.execute(_npc, nullptr, MSGFLAG_BREAK_IF_HANDLED);
 }
 
-void TTtalker::endSpeech(int val) {
-	_done = true;
-	_talkEndState = val;
-}
-
 } // End of namespace Titanic
diff --git a/engines/titanic/true_talk/tt_talker.h b/engines/titanic/true_talk/tt_talker.h
index 60a2e56..4f0b59c 100644
--- a/engines/titanic/true_talk/tt_talker.h
+++ b/engines/titanic/true_talk/tt_talker.h
@@ -44,7 +44,6 @@ public:
 		_dialogueId(0), _talkEndState(0), _done(0) {}
 	TTtalker(CTrueTalkManager *owner, CTrueTalkNPC *npc) :
 		_owner(owner), _npc(npc), _dialogueId(0), _talkEndState(0), _done(0) {}
-	~TTtalker();
 
 	/**
 	 * Start a new speech
@@ -55,6 +54,12 @@ public:
 	 * End the speech
 	 */
 	void endSpeech(int val);
+	
+	/**
+	 * Called when a speech is finished, to signal to the associated character
+	 * that the speech is over
+	 */
+	void speechEnded();
 };
 
 class TTtalkerList : public List<TTtalker> {





More information about the Scummvm-git-logs mailing list