diff options
Diffstat (limited to 'engines/titanic/true_talk/tt_parser.h')
-rw-r--r-- | engines/titanic/true_talk/tt_parser.h | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/engines/titanic/true_talk/tt_parser.h b/engines/titanic/true_talk/tt_parser.h index 22a2850516..7e4e97f1ff 100644 --- a/engines/titanic/true_talk/tt_parser.h +++ b/engines/titanic/true_talk/tt_parser.h @@ -24,13 +24,38 @@ #define TITANIC_TT_PARSER_H #include "titanic/true_talk/tt_input.h" +#include "titanic/true_talk/tt_string.h" namespace Titanic { +enum NumberFlag { NF_2 = 2, NF_8 = 8, NF_10 = 0x10 }; + class CScriptHandler; +struct NumberEntry { + CString _text; + int _value; + int _flags; + + NumberEntry() : _value(0), _flags(0) {} + NumberEntry(const CString &text, int value, int flags) : + _text(text), _value(value), _flags(flags) {} +}; +typedef Common::Array<NumberEntry> NumberArray; + class TTparser { private: + StringArray _replacements1; + StringArray _replacements2; + StringArray _replacements3; + StringArray _phrases; + NumberArray _numbers; +private: + /** + * Loads the various replacement string data arrays + */ + void loadArrays(); + /** * Normalizes a passed input, taking care of things like removing extra * spaces and lowercasing everything @@ -74,9 +99,9 @@ private: * a plain decimal representation. * @param line Line to check * @param startIndex Starting index in the start to check - * @returns True if end of line hasn't been reached yet + * @returns Pointer to matching number entry, if match occurred */ - static bool replaceNumbers(TTstring &line, int *startIndex); + const NumberEntry *replaceNumbers(TTstring &line, int *startIndex); public: CScriptHandler *_owner; int _field4; @@ -86,8 +111,7 @@ public: int _field14; int _field18; public: - TTparser(CScriptHandler *owner) : _owner(owner), _field4(0), - _input(nullptr), _fieldC(0), _field10(0), _field14(0), _field18(0) {} + TTparser(CScriptHandler *owner); /** * Gets passed a newly created input wrapper during conversation text processing |