diff options
author | Paul Gilbert | 2016-10-22 12:33:07 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-10-22 12:33:07 -0400 |
commit | 41e6a5d2a64bbecd37d47a1dc87b4135c2149f4a (patch) | |
tree | ee2df9d5686729d6278f6a1a2422b942235a4354 | |
parent | 2bf087d2b9246a5a9383aa789465b35a2b4159c4 (diff) | |
download | scummvm-rg350-41e6a5d2a64bbecd37d47a1dc87b4135c2149f4a.tar.gz scummvm-rg350-41e6a5d2a64bbecd37d47a1dc87b4135c2149f4a.tar.bz2 scummvm-rg350-41e6a5d2a64bbecd37d47a1dc87b4135c2149f4a.zip |
TITANIC: Fix looping in CTrueTalkManager::triggerNPC
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.cpp | 23 | ||||
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.h | 2 |
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: /** |