[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