aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2016-05-12 20:51:32 -0400
committerPaul Gilbert2016-07-10 16:39:25 -0400
commit06876335cd027529b3719cdfc6d255b00a592b02 (patch)
treec9c65b9d8f385f86bd37f0e0d4e756debff2124f /engines
parentae5cd8d8dda5b66a82d33b4164c06b3313522e10 (diff)
downloadscummvm-rg350-06876335cd027529b3719cdfc6d255b00a592b02.tar.gz
scummvm-rg350-06876335cd027529b3719cdfc6d255b00a592b02.tar.bz2
scummvm-rg350-06876335cd027529b3719cdfc6d255b00a592b02.zip
TITANIC: Implement TTword copy
Diffstat (limited to 'engines')
-rw-r--r--engines/titanic/true_talk/tt_word.cpp34
-rw-r--r--engines/titanic/true_talk/tt_word.h5
2 files changed, 38 insertions, 1 deletions
diff --git a/engines/titanic/true_talk/tt_word.cpp b/engines/titanic/true_talk/tt_word.cpp
index 55de72b3d6..4d4f968efd 100644
--- a/engines/titanic/true_talk/tt_word.cpp
+++ b/engines/titanic/true_talk/tt_word.cpp
@@ -33,7 +33,39 @@ TTword::TTword(TTString &str, int mode, int val2) : _string(str),
}
TTword::TTword(TTword *src) {
- // TODO
+ if (src->getStatus() != SS_VALID) {
+ _status = SS_5;
+ return;
+ }
+
+ _string = src->_string;
+ _wordMode = src->_wordMode;
+ _field1C = src->_field1C;
+ _field20 = src->_field20;
+ _synP = nullptr;
+
+ TTsynonym *priorSyn = nullptr;
+ for (TTsynonym *synP = _synP; synP && !_status;) {
+ TTsynonym *newSyn = new TTsynonym(synP);
+ if (!newSyn) {
+ _status = SS_7;
+ } else {
+ newSyn->_pPrior = priorSyn;
+ newSyn->_pNext = nullptr;
+
+ if (priorSyn) {
+ priorSyn->_pNext = newSyn;
+ } else {
+ _synP = newSyn;
+ }
+
+ priorSyn = newSyn;
+ }
+ }
+
+ _pNext = src->_pNext;
+ _field24 = src->_field24;
+ _field28 = src->_field28;
}
void TTword::deleteSiblings() {
diff --git a/engines/titanic/true_talk/tt_word.h b/engines/titanic/true_talk/tt_word.h
index 9bdb810ae6..d9127514bb 100644
--- a/engines/titanic/true_talk/tt_word.h
+++ b/engines/titanic/true_talk/tt_word.h
@@ -79,6 +79,11 @@ public:
operator const char *() const { return c_str(); }
/**
+ * Return the status of the word
+ */
+ TTStringStatus getStatus() const { return _status; }
+
+ /**
* Creates a copy of the word
*/
virtual TTword *copy();