diff options
| -rw-r--r-- | engines/titanic/true_talk/tt_concept.cpp | 29 | ||||
| -rw-r--r-- | engines/titanic/true_talk/tt_concept.h | 9 | 
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  	 */ | 
