aboutsummaryrefslogtreecommitdiff
path: root/engines/agi
diff options
context:
space:
mode:
authorEugene Sandulenko2009-06-06 17:40:09 +0000
committerEugene Sandulenko2009-06-06 17:40:09 +0000
commita7049e5b3d4d165b59cb509101050177944828ec (patch)
tree0f46c64b253036367b24237840484073ccf5c5f1 /engines/agi
parent194ab100c7c9b729c974e0c90434a2a86c1846ec (diff)
downloadscummvm-rg350-a7049e5b3d4d165b59cb509101050177944828ec.tar.gz
scummvm-rg350-a7049e5b3d4d165b59cb509101050177944828ec.tar.bz2
scummvm-rg350-a7049e5b3d4d165b59cb509101050177944828ec.zip
Fix implementation of prevent.input. This fixes SQ2 intro
svn-id: r41241
Diffstat (limited to 'engines/agi')
-rw-r--r--engines/agi/agi.h1
-rw-r--r--engines/agi/op_cmd.cpp2
-rw-r--r--engines/agi/text.cpp15
3 files changed, 17 insertions, 1 deletions
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