diff options
Diffstat (limited to 'engines/agi/text.cpp')
-rw-r--r-- | engines/agi/text.cpp | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/engines/agi/text.cpp b/engines/agi/text.cpp index 8806aeee28..c6c0f93651 100644 --- a/engines/agi/text.cpp +++ b/engines/agi/text.cpp @@ -64,6 +64,8 @@ TextMgr::TextMgr(AgiEngine *vm, Words *words, GfxMgr *gfx) { promptDisable(); promptReset(); + _inputStringRow = 0; + _inputStringColumn = 0; _inputStringMaxLen = 0; _inputStringCursorPos = 0; _inputString[0] = 0; @@ -107,16 +109,21 @@ void TextMgr::charPos_Set(int16 row, int16 column) { _textPos.column = column; } -void TextMgr::charPos_Get(TextPos_Struct *posPtr) { - posPtr->row = _textPos.row; - posPtr->column = _textPos.column; -} - void TextMgr::charPos_Set(TextPos_Struct *posPtr) { _textPos.row = posPtr->row; _textPos.column = posPtr->column; } +void TextMgr::charPos_Get(int16 &row, int16 &column) { + row = _textPos.row; + column = _textPos.column; +} + +void TextMgr::charPos_Get(TextPos_Struct *posPtr) { + posPtr->row = _textPos.row; + posPtr->column = _textPos.column; +} + void TextMgr::charPos_Push() { if (_textPosArrayCount < TEXTPOSARRAY_MAX) { charPos_Get(&_textPosArray[_textPosArrayCount]); @@ -735,9 +742,21 @@ void TextMgr::stringSet(const char *text) { _inputString[sizeof(_inputString) - 1] = 0; // terminator } +void TextMgr::stringPos_Get(int16 &row, int16 &column) { + row = _inputStringRow; + column = _inputStringColumn; +} +int16 TextMgr::stringGetMaxLen() { + return _inputStringMaxLen; +} + void TextMgr::stringEdit(int16 stringMaxLen) { int16 inputStringLen = strlen((const char *)_inputString); + // Remember current position for predictive dialog + _inputStringRow = _textPos.row; + _inputStringColumn = _textPos.column; + // Caller can set the input string _inputStringCursorPos = 0; while (_inputStringCursorPos < inputStringLen) { |