diff options
author | Paul Gilbert | 2016-05-14 09:22:52 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-07-10 16:39:33 -0400 |
commit | e862d80cd2f57b3eebdedb9f87c11fa3b5106e6a (patch) | |
tree | c54a92d8e793153fb4b66f150a3b75d3432892ca | |
parent | e5e0e22c56ed6dca6a3471b444720b76255025e0 (diff) | |
download | scummvm-rg350-e862d80cd2f57b3eebdedb9f87c11fa3b5106e6a.tar.gz scummvm-rg350-e862d80cd2f57b3eebdedb9f87c11fa3b5106e6a.tar.bz2 scummvm-rg350-e862d80cd2f57b3eebdedb9f87c11fa3b5106e6a.zip |
TITANIC: Beginning of parser input line normalization
-rw-r--r-- | engines/titanic/true_talk/script_handler.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_input.h | 3 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_parser.cpp | 28 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_parser.h | 10 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_script_base.cpp | 3 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_script_base.h | 2 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_string.cpp | 31 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_string.h | 11 |
8 files changed, 82 insertions, 8 deletions
diff --git a/engines/titanic/true_talk/script_handler.cpp b/engines/titanic/true_talk/script_handler.cpp index 041d4909f7..2e2a148e26 100644 --- a/engines/titanic/true_talk/script_handler.cpp +++ b/engines/titanic/true_talk/script_handler.cpp @@ -65,6 +65,8 @@ int CScriptHandler::processInput(TTroomScript *roomScript, TTnpcScript *npcScrip TTinput *input = new TTinput(_inputCtr++, line, this, roomScript, npcScript); _parser.processInput(input); + roomScript->processInput(input); + npcScript->processInput(input); warning("TODO: CScriptHandler::processInput"); diff --git a/engines/titanic/true_talk/tt_input.h b/engines/titanic/true_talk/tt_input.h index 9cb4b72c23..7e6fd92f12 100644 --- a/engines/titanic/true_talk/tt_input.h +++ b/engines/titanic/true_talk/tt_input.h @@ -59,7 +59,6 @@ private: int _inputCtr; int _field34; int _field38; - TTstring _line; TTstring _string2; int _field4C; TTroomScript *_roomScript; @@ -68,6 +67,8 @@ private: int _field5C; int _status; public: + TTstring _line; +public: TTinput(int inputCtr, const TTstring &line, CScriptHandler *owner, TTroomScript *roomScript, TTnpcScript *npcScript); }; diff --git a/engines/titanic/true_talk/tt_parser.cpp b/engines/titanic/true_talk/tt_parser.cpp index 5bae72ce33..a48fcaea0e 100644 --- a/engines/titanic/true_talk/tt_parser.cpp +++ b/engines/titanic/true_talk/tt_parser.cpp @@ -26,8 +26,34 @@ namespace Titanic { -void TTparser::processInput(TTinput *input) { +int TTparser::processInput(TTinput *input) { + _input = input; + if (normalize(input)) + return 0; + warning("TODO: TTparser::processInput"); + return 0; +} + +int TTparser::normalize(TTinput *input) { + TTstring *line = new TTstring(); + + for (const char *lineP = input->_line.c_str(); lineP; ++lineP) { + char c = *lineP; + if (Common::isLower(c)) { + (*line) += c; + } else if (Common::isSpace(c)) { + if (!line->empty() && line->lastChar() != ' ') + (*line) += ' '; + } else if (Common::isUpper(c)) { + (*line) += toupper(c); + } else if (Common::isDigit(c)) { + // TODO: num handling + } + // TODO other cases + } + + return 0; } } // End of namespace Titanic diff --git a/engines/titanic/true_talk/tt_parser.h b/engines/titanic/true_talk/tt_parser.h index 89977067cb..7df82b0b5b 100644 --- a/engines/titanic/true_talk/tt_parser.h +++ b/engines/titanic/true_talk/tt_parser.h @@ -30,22 +30,24 @@ namespace Titanic { class CScriptHandler; class TTparser { +private: + int normalize(TTinput *input); public: CScriptHandler *_owner; int _field4; - int _field8; + TTinput *_input; int _fieldC; int _field10; int _field14; int _field18; public: - TTparser(CScriptHandler *owner) : _owner(owner), _field4(0), _field8(0), - _fieldC(0), _field10(0), _field14(0), _field18(0) {} + TTparser(CScriptHandler *owner) : _owner(owner), _field4(0), + _input(nullptr), _fieldC(0), _field10(0), _field14(0), _field18(0) {} /** * Gets passed a newly created input wrapper during conversation text processing */ - void processInput(TTinput *input); + int processInput(TTinput *input); }; } // End of namespace Titanic diff --git a/engines/titanic/true_talk/tt_script_base.cpp b/engines/titanic/true_talk/tt_script_base.cpp index e937f0ac64..88f06a493e 100644 --- a/engines/titanic/true_talk/tt_script_base.cpp +++ b/engines/titanic/true_talk/tt_script_base.cpp @@ -73,8 +73,9 @@ void TTscriptBase::reset() { _field48 = 0; } -void TTscriptBase::processInput(TTinput *input) { +int TTscriptBase::processInput(TTinput *input) { warning("TODO: TTscriptBase::processInput"); + return 0; } void TTscriptBase::proc2(int v) { diff --git a/engines/titanic/true_talk/tt_script_base.h b/engines/titanic/true_talk/tt_script_base.h index 0aac1ed2e7..12abb5ccda 100644 --- a/engines/titanic/true_talk/tt_script_base.h +++ b/engines/titanic/true_talk/tt_script_base.h @@ -64,7 +64,7 @@ public: /** * Gets passed a newly created input wrapper during conversation text processing */ - void processInput(TTinput *input); + int processInput(TTinput *input); virtual void proc2(int v); diff --git a/engines/titanic/true_talk/tt_string.cpp b/engines/titanic/true_talk/tt_string.cpp index 7a39d7163f..338b7b50ae 100644 --- a/engines/titanic/true_talk/tt_string.cpp +++ b/engines/titanic/true_talk/tt_string.cpp @@ -80,6 +80,37 @@ void TTstring::operator=(const char *str) { _status = SS_VALID; } +TTstring &TTstring::operator+=(const char *str) { + _data->_string += str; + return *this; +} + +TTstring &TTstring::operator+=(const TTstring &str) { + _data->_string += str; + return *this; +} + +TTstring &TTstring::operator+=(char c) { + _data->_string += c; + return *this; +} + +bool TTstring::empty() const { + return _data->_string.empty(); +} + +char TTstring::firstChar() const { + return _data->_string.firstChar(); +} + +char TTstring::lastChar() const { + return _data->_string.lastChar(); +} + +TTstring *TTstring::copy() const { + return new TTstring(c_str()); +} + bool TTstring::isValid() const { return _status == SS_VALID; } diff --git a/engines/titanic/true_talk/tt_string.h b/engines/titanic/true_talk/tt_string.h index 1a95b4e4be..8fe7127ac7 100644 --- a/engines/titanic/true_talk/tt_string.h +++ b/engines/titanic/true_talk/tt_string.h @@ -54,6 +54,17 @@ public: void operator=(const TTstring &str); void operator=(const CString &str); void operator=(const char *str); + TTstring &operator+=(const char *str); + TTstring &operator+=(const TTstring &str); + TTstring &operator+=(char c); + bool empty() const; + char firstChar() const; + char lastChar() const; + + /** + * Create a new copy of the string + */ + TTstring *copy() const; /** * Returns true if the string is valid |