aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/input.cpp
diff options
context:
space:
mode:
authorTravis Howell2009-05-05 13:40:16 +0000
committerTravis Howell2009-05-05 13:40:16 +0000
commitbb4b2a506005dec449b854a2842550007ed46b1e (patch)
tree24e35ebb3683ead0977dab9b80d78484de72614a /engines/agos/input.cpp
parentf4cb6a0b0a98c5b02ea2a846295e888f7dc6c8a0 (diff)
downloadscummvm-rg350-bb4b2a506005dec449b854a2842550007ed46b1e.tar.gz
scummvm-rg350-bb4b2a506005dec449b854a2842550007ed46b1e.tar.bz2
scummvm-rg350-bb4b2a506005dec449b854a2842550007ed46b1e.zip
Fix input glitch regression again, by closer matching original PN code.
svn-id: r40329
Diffstat (limited to 'engines/agos/input.cpp')
-rw-r--r--engines/agos/input.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/engines/agos/input.cpp b/engines/agos/input.cpp
index 9adb3cc584..a8c1bf4bfa 100644
--- a/engines/agos/input.cpp
+++ b/engines/agos/input.cpp
@@ -689,8 +689,8 @@ void AGOSEngine_PN::interact(char *buffer, uint8 size) {
_intputCounter = 0;
_inputMax = size;
_inputWindow = _windowArray[_curWindow];
- userGameBackSpace(_inputWindow, 8);
windowPutChar(_inputWindow, 128);
+ windowPutChar(_inputWindow, 8);
_inputting = true;
_inputReady = true;
}
@@ -714,23 +714,34 @@ void AGOSEngine_PN::interact(char *buffer, uint8 size) {
void AGOSEngine_PN::addChar(uint8 chr) {
if (chr == 13) {
_keyboardBuffer[_intputCounter++] = chr;
- userGameBackSpace(_inputWindow, 8);
windowPutChar(_inputWindow, 13);
} else if (chr == 8 && _intputCounter) {
- userGameBackSpace(_inputWindow, 8);
- userGameBackSpace(_inputWindow, 8);
+ clearCursor(_inputWindow);
+ windowPutChar(_inputWindow, 8);
windowPutChar(_inputWindow, 128);
+ windowPutChar(_inputWindow, 8);
_keyboardBuffer[--_intputCounter] = 0;
} else if (chr >= 32 && _intputCounter < _inputMax) {
_keyboardBuffer[_intputCounter++] = chr;
- userGameBackSpace(_inputWindow, 8);
+ clearCursor(_inputWindow);
windowPutChar(_inputWindow, chr);
windowPutChar(_inputWindow, 128);
+ windowPutChar(_inputWindow, 8);
}
}
+void AGOSEngine_PN::clearCursor(WindowBlock *window) {
+ byte oldTextColor = window->textColor;
+
+ window->textColor = window->fillColor;
+ windowPutChar(window, 128);
+ window->textColor = oldTextColor;
+
+ windowPutChar(window, 8);
+}
+
bool AGOSEngine_PN::processSpecialKeys() {
if (shouldQuit())
_exitCutscene = true;