aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2016-10-22 12:33:07 -0400
committerPaul Gilbert2016-10-22 12:33:07 -0400
commit41e6a5d2a64bbecd37d47a1dc87b4135c2149f4a (patch)
treeee2df9d5686729d6278f6a1a2422b942235a4354 /engines
parent2bf087d2b9246a5a9383aa789465b35a2b4159c4 (diff)
downloadscummvm-rg350-41e6a5d2a64bbecd37d47a1dc87b4135c2149f4a.tar.gz
scummvm-rg350-41e6a5d2a64bbecd37d47a1dc87b4135c2149f4a.tar.bz2
scummvm-rg350-41e6a5d2a64bbecd37d47a1dc87b4135c2149f4a.zip
TITANIC: Fix looping in CTrueTalkManager::triggerNPC
Diffstat (limited to 'engines')
-rw-r--r--engines/titanic/true_talk/true_talk_manager.cpp23
-rw-r--r--engines/titanic/true_talk/true_talk_manager.h2
2 files changed, 11 insertions, 14 deletions
diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp
index ed45ab26a0..a3f9523fa2 100644
--- a/engines/titanic/true_talk/true_talk_manager.cpp
+++ b/engines/titanic/true_talk/true_talk_manager.cpp
@@ -423,22 +423,19 @@ void CTrueTalkManager::triggerNPC(CTrueTalkNPC *npc) {
}
} else {
CTrueTalkGetAnimSetMsg getAnimMsg;
- if (_speechDuration > 300) {
- do {
- getAnimMsg.execute(npc);
- if (!getAnimMsg._endFrame)
- break;
+ while (_speechDuration > 300) {
+ getAnimMsg.execute(npc);
+ if (!getAnimMsg._endFrame)
+ break;
- npc->playMovie(getAnimMsg._startFrame, getAnimMsg._endFrame, 0);
- getAnimMsg._endFrame = 0;
+ npc->playMovie(getAnimMsg._startFrame, getAnimMsg._endFrame, 0);
+ getAnimMsg._endFrame = 0;
- uint numFrames = getAnimMsg._endFrame - getAnimMsg._startFrame;
- int64 val = (numFrames * 1000) * 0x88888889;
- uint diff = (val >> (32 + 5)) - 500;
- _speechDuration += diff;
+ uint numFrames = getAnimMsg._endFrame - getAnimMsg._startFrame;
+ int diff = (numFrames * 1000) / 15 - 500;
+ _speechDuration += diff;
- getAnimMsg._index++;
- } while (_speechDuration > 0);
+ getAnimMsg._index++;
}
}
}
diff --git a/engines/titanic/true_talk/true_talk_manager.h b/engines/titanic/true_talk/true_talk_manager.h
index 3abf4c181c..f8096425a9 100644
--- a/engines/titanic/true_talk/true_talk_manager.h
+++ b/engines/titanic/true_talk/true_talk_manager.h
@@ -50,7 +50,7 @@ private:
int _currentCharId;
CDialogueFile *_dialogueFile;
int _dialogueId;
- uint _speechDuration;
+ int _speechDuration;
TTtalkerList _talkers;
private:
/**