/* 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 { enum WordMode { WMODE_NONE = 0, WMODE_ACTION = 1, WMODE_2 = 2, WMODE_3 = 3, WMODE_6 = 6, WMODE_8 = 8, WMODE_9 = 9 }; class TTword { protected: TTstringStatus _status; int _field20; 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 _string; WordMode _wordMode; int _field1C; public: TTword(TTstring &str, WordMode mode, int val2); TTword(TTword *src); ~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, WordMode mode); /** * 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 _string.c_str(); } operator const char *() const { return c_str(); } /** * Return the status of the word */ TTstringStatus getStatus() const { return _status; } /** * Creates a copy of the word */ virtual TTword *copy(); void unkFn1(int val); 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 proc19(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 */