aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/true_talk
diff options
context:
space:
mode:
authorPaul Gilbert2016-09-02 18:17:00 -0400
committerPaul Gilbert2016-09-02 18:17:00 -0400
commitb1105a6686215a965e8580af84d16d7732ce5b49 (patch)
tree12f17c08916b4962a48ca067186abeb8ff820dea /engines/titanic/true_talk
parent6f9583a3b692e8e4af3e8938099f49d92dd62e63 (diff)
downloadscummvm-rg350-b1105a6686215a965e8580af84d16d7732ce5b49.tar.gz
scummvm-rg350-b1105a6686215a965e8580af84d16d7732ce5b49.tar.bz2
scummvm-rg350-b1105a6686215a965e8580af84d16d7732ce5b49.zip
TITANIC: Fixes to building NPC response chain
Diffstat (limited to 'engines/titanic/true_talk')
-rw-r--r--engines/titanic/true_talk/tt_script_base.cpp44
-rw-r--r--engines/titanic/true_talk/tt_script_base.h19
2 files changed, 37 insertions, 26 deletions
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);
}
/**