diff options
Diffstat (limited to 'engines/titanic')
-rw-r--r-- | engines/titanic/true_talk/tt_concept.h | 5 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_concept_node.cpp | 26 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_concept_node.h | 13 |
3 files changed, 29 insertions, 15 deletions
diff --git a/engines/titanic/true_talk/tt_concept.h b/engines/titanic/true_talk/tt_concept.h index 112d864e19..8168d4ebe1 100644 --- a/engines/titanic/true_talk/tt_concept.h +++ b/engines/titanic/true_talk/tt_concept.h @@ -113,6 +113,11 @@ public: */ int getStatus() const { return _status; } + /** + * True true if the concept is valid + */ + bool isValid() const { return _status == SS_VALID; } + void setFlag(bool val) { _flag = val; } void set1C(int val) { _field1C = val; } diff --git a/engines/titanic/true_talk/tt_concept_node.cpp b/engines/titanic/true_talk/tt_concept_node.cpp index 9ad985746f..aca5718bca 100644 --- a/engines/titanic/true_talk/tt_concept_node.cpp +++ b/engines/titanic/true_talk/tt_concept_node.cpp @@ -26,20 +26,28 @@ namespace Titanic { -TTconceptNode::TTconceptNode() : _concept0P(nullptr), - _concept1P(nullptr), _concept2P(nullptr), _concept3P(nullptr), - _concept4P(nullptr), _concept5P(nullptr), _field18(0), - _field1C(0), _nextP(nullptr), _status(0) { +TTconceptNode::TTconceptNode() : _concept0P(_concepts[0]), _concept1P(_concepts[1]), + _concept2P(_concepts[2]), _concept3P(_concepts[3]), _concept4P(_concepts[4]), + _concept5P(_concepts[5]), _field18(0), _field1C(0), _nextP(nullptr), _status(0) { } -TTconceptNode::TTconceptNode(const TTconceptNode &src) : _concept0P(nullptr), - _concept1P(nullptr), _concept2P(nullptr), _concept3P(nullptr), - _concept4P(nullptr), _concept5P(nullptr), _field18(0), - _field1C(0), _nextP(nullptr), _status(0) { +TTconceptNode::TTconceptNode(const TTconceptNode &src) : _concept0P(_concepts[0]), _concept1P(_concepts[1]), + _concept2P(_concepts[2]), _concept3P(_concepts[3]), _concept4P(_concepts[4]), + _concept5P(_concepts[5]), _field18(0), _field1C(0), _nextP(nullptr), _status(0) { if (src._status) { _status = SS_5; } else { - // TODO + for (int idx = 0; idx < 6; ++idx) { + if (src._concepts[idx]) { + _concepts[idx] = new TTconcept(*src._concepts[idx]); + if (!_concepts[idx]->isValid()) + _status = SS_11; + } + } + + _field18 = src._field18; + _field1C = src._field1C; + _nextP = src._nextP; } } diff --git a/engines/titanic/true_talk/tt_concept_node.h b/engines/titanic/true_talk/tt_concept_node.h index 8fc1371f7b..af2fd42e7b 100644 --- a/engines/titanic/true_talk/tt_concept_node.h +++ b/engines/titanic/true_talk/tt_concept_node.h @@ -29,12 +29,13 @@ namespace Titanic { class TTconceptNode { public: - TTconcept *_concept0P; - TTconcept *_concept1P; - TTconcept *_concept2P; - TTconcept *_concept3P; - TTconcept *_concept4P; - TTconcept *_concept5P; + TTconcept *_concepts[6]; + TTconcept *&_concept0P; + TTconcept *&_concept1P; + TTconcept *&_concept2P; + TTconcept *&_concept3P; + TTconcept *&_concept4P; + TTconcept *&_concept5P; int _field18; int _field1C; TTconceptNode *_nextP; |