diff options
author | Paul Gilbert | 2016-09-02 18:17:00 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-09-02 18:17:00 -0400 |
commit | b1105a6686215a965e8580af84d16d7732ce5b49 (patch) | |
tree | 12f17c08916b4962a48ca067186abeb8ff820dea | |
parent | 6f9583a3b692e8e4af3e8938099f49d92dd62e63 (diff) | |
download | scummvm-rg350-b1105a6686215a965e8580af84d16d7732ce5b49.tar.gz scummvm-rg350-b1105a6686215a965e8580af84d16d7732ce5b49.tar.bz2 scummvm-rg350-b1105a6686215a965e8580af84d16d7732ce5b49.zip |
TITANIC: Fixes to building NPC response chain
-rw-r--r-- | engines/titanic/game/computer_screen.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_script_base.cpp | 44 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_script_base.h | 19 |
3 files changed, 38 insertions, 27 deletions
diff --git a/engines/titanic/game/computer_screen.cpp b/engines/titanic/game/computer_screen.cpp index 3e5172219d..0572258cef 100644 --- a/engines/titanic/game/computer_screen.cpp +++ b/engines/titanic/game/computer_screen.cpp @@ -111,7 +111,7 @@ bool CComputerScreen::TimerMsg(CTimerMsg *msg) { playSound("a#29.wav"); stopSound(handle); - playSound("y#662.wav"); + handle = playSound("y#662.wav"); setSoundVolume(handle, 10, 2); playClip(392, 450); startTalking("Doorbot", 0x3611A); diff --git a/engines/titanic/true_talk/tt_script_base.cpp b/engines/titanic/true_talk/tt_script_base.cpp index 4109134501..2f58ad1400 100644 --- a/engines/titanic/true_talk/tt_script_base.cpp +++ b/engines/titanic/true_talk/tt_script_base.cpp @@ -118,37 +118,41 @@ void TTscriptBase::applyResponse() { } void TTscriptBase::deleteResponses() { - while (_respTailP) { - _respHeadP = _respTailP; - _respTailP = _respHeadP->getLink(); - delete _respHeadP; + while (_respHeadP) { + _respTailP = _respHeadP; + _respHeadP = _respTailP->getLink(); + delete _respTailP; } } -void TTscriptBase::appendResponse(int val1, int *val2, int val3) { - if (!val2 || val1 <= *val2) { - if (_respHeadP) { - _respHeadP = new TTresponse(_respHeadP); +void TTscriptBase::appendResponse(int index, int *maxP, int id) { + if (id && (!maxP || index <= *maxP)) { + if (_respTailP) { + // Prior fragments already exist, so append to end of chain + _respTailP = new TTresponse(_respTailP); } else { - _respHeadP = new TTresponse(val3, 3); - if (_respTailP) - _respTailP->addLink(_respHeadP); + // Currently no tail + _respTailP = new TTresponse(id, 3); + if (_respHeadP) + _respHeadP->addLink(_respTailP); else - _respTailP = _respHeadP; + _respHeadP = _respTailP; } } } -void TTscriptBase::appendResponse(int val1, int *val2, const TTstring &str) { - if (!val2 || val1 <= *val2) { - if (_respHeadP) { - _respHeadP = new TTresponse(str); +void TTscriptBase::appendResponse(int index, int *maxP, const TTstring &str) { + if (!maxP || index <= *maxP) { + if (_respTailP) { + // Prior fragments already exist, so append to end of chain + _respTailP = new TTresponse(str); } else { - _respHeadP = new TTresponse(str); - if (_respTailP) - _respTailP->addLink(_respHeadP); + // Currently no tail + _respTailP = new TTresponse(str); + if (_respHeadP) + _respHeadP->addLink(_respTailP); else - _respTailP = _respHeadP; + _respHeadP = _respTailP; } } } diff --git a/engines/titanic/true_talk/tt_script_base.h b/engines/titanic/true_talk/tt_script_base.h index c489dcb0a7..869b0beb64 100644 --- a/engines/titanic/true_talk/tt_script_base.h +++ b/engines/titanic/true_talk/tt_script_base.h @@ -51,8 +51,8 @@ protected: int _state; TThist *_hist2P; int _field3C; - TTresponse *_respHeadP; TTresponse *_respTailP; + TTresponse *_respHeadP; TTresponse *_oldResponseP; int _status; protected: @@ -62,14 +62,21 @@ protected: void deleteResponses(); /** - * Creates and appends a new response to the script + * Creates and appends a new response fragment to the script specified by + * the given conversation Id */ - void appendResponse(int val1, int *val2, int val3); + void appendResponse(int index, int *maxP, int id); - void appendResponse(int val1, int *val2, const TTstring &str); + /** + * Creates and appends a new response fragment string to the script + */ + void appendResponse(int index, int *maxP, const TTstring &str); - void appendResponse2(int val1, int *val2, const TTstring &str) { - appendResponse(val1, val2, str); + /** + * Creates and appends a new response fragment string to the script + */ + void appendResponse2(int index, int *maxP, const TTstring &str) { + appendResponse(index, maxP, str); } /** |