diff options
-rw-r--r-- | engines/titanic/true_talk/tt_parser.cpp | 24 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_parser.h | 2 |
2 files changed, 19 insertions, 7 deletions
diff --git a/engines/titanic/true_talk/tt_parser.cpp b/engines/titanic/true_talk/tt_parser.cpp index 013e5f1433..dd3389337a 100644 --- a/engines/titanic/true_talk/tt_parser.cpp +++ b/engines/titanic/true_talk/tt_parser.cpp @@ -786,7 +786,7 @@ int TTparser::considerRequests(TTword *word) { break; case OBJECT_IS_TO: - flag = fn3(&_sentenceConcept->_concept2P, 3); + flag = resetConcept(&_sentenceConcept->_concept2P, 3); break; case SEEK_ACTOR: @@ -814,7 +814,11 @@ int TTparser::considerRequests(TTword *word) { case SET_COLOR: case ACTOR_IS_TO: case ACTOR_IS_FROM: + case ACTOR_IS_OBJECT: + flag = resetConcept(&_sentenceConcept->_concept0P, 2); + break; + case STATE_IDENTITY: case WORD_TYPE_IS_SENTENCE_TYPE: case COMPLEX_VERB: @@ -911,11 +915,6 @@ int TTparser::fn2(TTword *word) { } } -bool TTparser::fn3(TTconcept **v, int v2) { - // TODO - return false; -} - int TTparser::checkReferent(TTpronoun *pronoun) { TTconcept *concept; @@ -996,4 +995,17 @@ int TTparser::filterConcepts(int conceptMode, int conceptIndex) { return result; } +bool TTparser::resetConcept(TTconcept **conceptPP, int conceptIndex) { + TTconcept **ptrPP = _sentenceConcept->setConcept(conceptIndex, nullptr); + + if (!*ptrPP) + return 0; + + int result = _sentenceConcept->changeConcept(1, conceptPP, conceptIndex); + if (*conceptPP) + _sentenceConcept->setConcept(conceptIndex, *conceptPP); + + return !result; +} + } // End of namespace Titanic diff --git a/engines/titanic/true_talk/tt_parser.h b/engines/titanic/true_talk/tt_parser.h index d7e67b2d51..c8432c2fe9 100644 --- a/engines/titanic/true_talk/tt_parser.h +++ b/engines/titanic/true_talk/tt_parser.h @@ -166,9 +166,9 @@ private: int fn1(); int fn2(TTword *word); - bool fn3(TTconcept **v, int v2); bool checkConcept2(TTconcept *concept, int conceptMode); int filterConcepts(int conceptMode, int conceptIndex); + bool resetConcept(TTconcept **conceptPP, int conceptIndex); public: CScriptHandler *_owner; TTsentenceConcept *_sentenceConcept; |