aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/true_talk/tt_word.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2016-05-10 20:51:21 -0400
committerPaul Gilbert2016-07-10 16:39:06 -0400
commit3a464e8770606d75ec7a641eac207b58c95303c1 (patch)
treefc0c34166fd102b119537cfe4fd9cd3ee84dd8f4 /engines/titanic/true_talk/tt_word.cpp
parenta223309934452ca6652112060aac9bd7272d4ddb (diff)
downloadscummvm-rg350-3a464e8770606d75ec7a641eac207b58c95303c1.tar.gz
scummvm-rg350-3a464e8770606d75ec7a641eac207b58c95303c1.tar.bz2
scummvm-rg350-3a464e8770606d75ec7a641eac207b58c95303c1.zip
TITANIC: Added new TTstringNode and TTsynonymNode classes
Diffstat (limited to 'engines/titanic/true_talk/tt_word.cpp')
-rw-r--r--engines/titanic/true_talk/tt_word.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/engines/titanic/true_talk/tt_word.cpp b/engines/titanic/true_talk/tt_word.cpp
index 62f924af6e..de987c281f 100644
--- a/engines/titanic/true_talk/tt_word.cpp
+++ b/engines/titanic/true_talk/tt_word.cpp
@@ -21,16 +21,38 @@
*/
#include "titanic/true_talk/tt_word.h"
+#include "titanic/true_talk/tt_string_node.h"
+#include "titanic/titanic.h"
namespace Titanic {
TTword::TTword(TTString &str, int mode, int val2) : _string(str),
- _wordMode(mode), _field1C(val2), _fieldC(0), _field10(0),
+ _wordMode(mode), _field1C(val2), _fieldC(0), _synP(nullptr),
_field20(0), _field24(0), _field28(0) {
_status = str.getStatus() == SS_VALID ? SS_VALID : SS_5;
}
int TTword::readSyn(SimpleFile *file) {
+ CString str;
+ int mode, val1;
+
+ if (!file->scanf("%s %d %d", &str, &mode, &val1))
+ return 8;
+ if (!testFileHandle(file))
+ return 5;
+
+ // Create new synanym node
+ TTsynonymNode *synNode = new TTsynonymNode(mode, str.c_str(), val1);
+
+ if (_synP) {
+ // A synonym already exists, so add new one as a tail
+ // at the end of the linked list of synonyms
+ _synP->addNode(synNode);
+ } else {
+ // Very first synonym, so set it
+ _synP = synNode;
+ }
+
return 0;
}
@@ -62,6 +84,14 @@ uint TTword::readNumber(const char *str) {
return numValue;
}
+bool TTword::testFileHandle(SimpleFile *file) const {
+ if (g_vm->_fileReader.is18Equals(3))
+ return true;
+
+ // TODO: Figure out why original compares passed file handle against specific values
+ return true;
+}
+
/*------------------------------------------------------------------------*/
TTword1::TTword1(TTString &str, int val1, int val2, int val3) :