aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic')
-rw-r--r--engines/titanic/true_talk/tt_concept.cpp29
-rw-r--r--engines/titanic/true_talk/tt_concept.h9
2 files changed, 34 insertions, 4 deletions
diff --git a/engines/titanic/true_talk/tt_concept.cpp b/engines/titanic/true_talk/tt_concept.cpp
index 59d53a91ae..8ecaf89289 100644
--- a/engines/titanic/true_talk/tt_concept.cpp
+++ b/engines/titanic/true_talk/tt_concept.cpp
@@ -77,7 +77,7 @@ TTconcept::TTconcept(TTconcept &src) :
if (src._wordP) {
_status = initializeWordRef(src._wordP);
- copyFrom(src);
+ initialize(src);
}
}
}
@@ -150,7 +150,7 @@ bool TTconcept::compareTo(const char *str) const {
_wordP->compareTo(str);
}
-void TTconcept::copyFrom(TTconcept &src) {
+void TTconcept::initialize(TTconcept &src) {
_nextP = src._nextP;
_field14 = src._field14;
_scriptType = src._scriptType;
@@ -177,4 +177,29 @@ void TTconcept::copyFrom(TTconcept &src) {
_status = src._status;
}
+void TTconcept::copyFrom(TTconcept *src) {
+ if (this != src) {
+ if (src->getStatus()) {
+ _status = SS_5;
+ } else {
+ _string1 = src->_string1;
+ _string2 = src->_string2;
+
+ if (setStatus()) {
+ _scriptP = src->_scriptP;
+ if (src->_wordP) {
+ _status = initializeWordRef(src->_wordP);
+ initialize(*src);
+ } else {
+ _wordP = nullptr;
+ initialize(*src);
+ }
+ }
+ }
+ }
+
+ if (_status)
+ reset();
+}
+
} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/tt_concept.h b/engines/titanic/true_talk/tt_concept.h
index d28ac57575..ae956c14f1 100644
--- a/engines/titanic/true_talk/tt_concept.h
+++ b/engines/titanic/true_talk/tt_concept.h
@@ -69,9 +69,9 @@ private:
void reset();
/**
- * Copy auxiliary data from the specified source concept
+ * Initialize inner data for the concept from a given source concept
*/
- void copyFrom(TTconcept &src);
+ void initialize(TTconcept &src);
public:
TTconcept *_nextP;
public:
@@ -87,6 +87,11 @@ public:
void deleteSiblings();
/**
+ * Copies data from a source concept
+ */
+ void copyFrom(TTconcept *src);
+
+ /**
* Compares the name of the associated word, if any,
* to the passed string
*/