From a7049e5b3d4d165b59cb509101050177944828ec Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sat, 6 Jun 2009 17:40:09 +0000 Subject: Fix implementation of prevent.input. This fixes SQ2 intro svn-id: r41241 --- engines/agi/agi.h | 1 + engines/agi/op_cmd.cpp | 2 ++ engines/agi/text.cpp | 15 ++++++++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) (limited to 'engines/agi') diff --git a/engines/agi/agi.h b/engines/agi/agi.h index c38ffbfbcc..f22c4ade58 100644 --- a/engines/agi/agi.h +++ b/engines/agi/agi.h @@ -979,6 +979,7 @@ public: char *agiSprintf(const char *); void writeStatus(void); void writePrompt(void); + void clearPrompt(void); void clearLines(int, int, int); void flushLines(int, int); bool predictiveDialog(void); diff --git a/engines/agi/op_cmd.cpp b/engines/agi/op_cmd.cpp index 03b1accce8..07078100a8 100644 --- a/engines/agi/op_cmd.cpp +++ b/engines/agi/op_cmd.cpp @@ -1312,6 +1312,8 @@ cmd(prevent_input) { g_agi->newInputMode(INPUT_NONE); game.inputEnabled = false; + + g_agi->clearPrompt(); } cmd(get_string) { diff --git a/engines/agi/text.cpp b/engines/agi/text.cpp index 6317eb0298..63f93802a7 100644 --- a/engines/agi/text.cpp +++ b/engines/agi/text.cpp @@ -656,8 +656,11 @@ void AgiEngine::writePrompt() { int l, fg, bg, pos; int promptLength = strlen(agiSprintf(_game.strings[0])); - if (!_game.inputEnabled || _game.inputMode != INPUT_NORMAL) + if (!_game.inputEnabled || _game.inputMode != INPUT_NORMAL) { + clearPrompt(); + return; + } l = _game.lineUserInput; fg = _game.colorFg; @@ -676,6 +679,16 @@ void AgiEngine::writePrompt() { _gfx->doUpdate(); } +void AgiEngine::clearPrompt() { + int l; + + l = _game.lineUserInput; + clearLines(l, l, _game.colorBg); + flushLines(l, l); + + _gfx->doUpdate(); +} + /** * Clear text lines in the screen. * @param l1 start line -- cgit v1.2.3