diff options
author | Paul Gilbert | 2016-08-27 13:59:08 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-08-27 13:59:08 -0400 |
commit | f5ab3d1cd9eb3a884b0ab5d0b154a4f9cccc74b7 (patch) | |
tree | 771a8d2b3fddf96c17a1d81d42cb08dfba09d110 /engines/titanic/true_talk/tt_word.h | |
parent | 873d555add9aaf5eb0d021518f5134142e2c2ff6 (diff) | |
parent | 5ea32efbb0ecb3e6b8336ad3c2edd3905ea5b89a (diff) | |
download | scummvm-rg350-f5ab3d1cd9eb3a884b0ab5d0b154a4f9cccc74b7.tar.gz scummvm-rg350-f5ab3d1cd9eb3a884b0ab5d0b154a4f9cccc74b7.tar.bz2 scummvm-rg350-f5ab3d1cd9eb3a884b0ab5d0b154a4f9cccc74b7.zip |
Merge branch 'master' into xeen
Diffstat (limited to 'engines/titanic/true_talk/tt_word.h')
-rw-r--r-- | engines/titanic/true_talk/tt_word.h | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/engines/titanic/true_talk/tt_word.h b/engines/titanic/true_talk/tt_word.h new file mode 100644 index 0000000000..7fd61c38ac --- /dev/null +++ b/engines/titanic/true_talk/tt_word.h @@ -0,0 +1,216 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef TITANIC_TT_WORD_H +#define TITANIC_TT_WORD_H + +#include "titanic/support/simple_file.h" +#include "titanic/true_talk/tt_string.h" +#include "titanic/true_talk/tt_synonym.h" + +namespace Titanic { + +/** + * Types of words + */ +enum WordClass { + WC_UNKNOWN = 0, WC_ACTION = 1, WC_THING = 2, WC_ABSTRACT = 3, + WC_ARTICLE = 4, WC_CONJUNCTION = 5, WC_PRONOUN = 6, + WC_PREPOSITION = 7, WC_ADJECTIVE = 8, WC_ADVERB = 9 +}; + +class TTword { +protected: + TTstringStatus _status; + int _field24; + int _field28; +protected: + /** + * Read in a number + */ + uint readNumber(const char *str); + + bool testFileHandle(SimpleFile *file) const { return true; } + bool testFileHandle(FileHandle resHandle) const; +public: + TTword *_nextP; + TTsynonym *_synP; + TTstring _text; + WordClass _wordClass; + int _id; + uint _tag; +public: + TTword(const TTstring &str, WordClass wordClass, int val2); + TTword(const TTword *src); + virtual ~TTword(); + + /** + * Delete any following words chained to the word + */ + void deleteSiblings(); + + /** + * Read in a synonym for the given word + */ + int readSyn(SimpleFile *file); + + /** + * Set a new synonym for the word + */ + void setSyn(TTsynonym *synP); + + /** + * Set a new synonym string + */ + int setSynStr(TTstring &str); + + /** + * Returns true if synonyms have been set for the word + */ + bool hasSynonyms() const { return _synP != nullptr; } + + /** + * Either sets the first synonym for a word, or adds it to an existing one + */ + void appendNode(TTsynonym *node); + + /** + * Load the word + */ + int load(SimpleFile *file, WordClass wordClass); + + /** + * Finds a synonym in the word by name, if one exists + * @param str Name to search for + * @param dest Destination synonym instance to copy match into + * @returns Returns true if a match was found + */ + bool findSynByName(const TTstring &str, TTsynonym *dest, int mode) const; + + const char *c_str() const { return _text.c_str(); } + operator const char *() const { return c_str(); } + + /** + * Return the text of the word + */ + const TTstring getText() { return _text; } + + /** + * Compares the word's text to a passed string + */ + bool compareTo(const char *str) const; + + /** + * Compares the word's text to a passed string + */ + bool compareTo(TTstring *str) const { + return compareTo(str->c_str()); + } + + /** + * Return the status of the word + */ + TTstringStatus getStatus() const { return _status; } + + /** + * Returns true if the word is in a valid state + */ + bool isValid() const { return _status == SS_VALID; } + + /** + * Return the status of the entire word chain + */ + TTstringStatus getChainStatus() const; + + /** + * Returns true if the word is of the specified class + */ + bool isClass(WordClass wordClass) const { return _wordClass == wordClass; } + + /** + * Copy the word and any attached to it + */ + TTword *copyWords(); + + /** + * Creates a copy of the word + */ + virtual TTword *copy() const; + + virtual bool proc2(int val) const { return false; } + virtual int proc3() const { return -1; } + virtual void proc4() {} + virtual void proc5() {} + + /** + * Checks whether the word's tag is a known type + */ + virtual bool checkTag() const { return false; } + + /** + * Compare the word's tag to a given tag value + */ + virtual bool compareTagTo(uint tag) const { return false; } + + /** + * Return the tag associated with the word + */ + virtual uint getTag() const { return 0; } + + virtual bool proc9(int val) const { return false; } + virtual int proc10() const { return 0; } + virtual void proc11() {} + virtual bool proc12(int val) const { return false; } + virtual int proc13() const { return 0; } + virtual bool proc14(int val) const { return false; } + virtual int proc15() const { return -1; } + virtual bool proc16() const { return false; } + virtual bool proc17() const { return false; } + virtual bool proc18() const { return false; } + virtual bool comparePronounTo(int val) const { return false; } + virtual int proc20() const { return 0; } + + /** + * Returns the file associated with the word's first synonym + */ + virtual FileHandle getSynFile() const; + + /** + * Checks whether the file associated with the word's first + * synonym matches the specified file + */ + virtual bool checkSynFile(FileHandle file) const; + + /** + * Sets the file associated with a synonym + */ + virtual void setSynFile(FileHandle file); + + /** + * Dumps data associated with the word to file + */ + virtual int save(SimpleFile *file) const { return 0; } +}; + +} // End of namespace Titanic + +#endif /* TITANIC_TT_WORD_H */ |