aboutsummaryrefslogtreecommitdiff
path: root/engines/agi/keyboard.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/agi/keyboard.cpp')
-rw-r--r--engines/agi/keyboard.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/engines/agi/keyboard.cpp b/engines/agi/keyboard.cpp
index 3acc81ddff..2b7559f754 100644
--- a/engines/agi/keyboard.cpp
+++ b/engines/agi/keyboard.cpp
@@ -107,8 +107,10 @@ int AgiEngine::handleController(int key) {
VtEntry *v = &_game.viewTable[0];
int i;
- /* AGI 3.149 games and The Black Cauldron need KEY_ESCAPE to use menus */
- if (key == 0 || (key == KEY_ESCAPE && agiGetRelease() != 0x3149 && getGameID() != GID_BC) )
+ // AGI 3.149 games and The Black Cauldron need KEY_ESCAPE to use menus
+ // Games with the GF_ESCPAUSE flag need KEY_ESCAPE to pause the game
+ if (key == 0 ||
+ (key == KEY_ESCAPE && agiGetRelease() != 0x3149 && getGameID() != GID_BC && !(getFeatures() & GF_ESCPAUSE)) )
return false;
if ((getGameID() == GID_MH1 || getGameID() == GID_MH2) && (key == KEY_ENTER) &&
@@ -127,7 +129,7 @@ int AgiEngine::handleController(int key) {
}
if (key == BUTTON_LEFT) {
- if (getflag(fMenusWork) && g_mouse.y <= CHAR_LINES) {
+ if ((getflag(fMenusWork) || (getFeatures() & GF_MENUS)) && g_mouse.y <= CHAR_LINES) {
newInputMode(INPUT_MENU);
return true;
}