aboutsummaryrefslogtreecommitdiff
path: root/engines/saga/interface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/saga/interface.cpp')
-rw-r--r--engines/saga/interface.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/saga/interface.cpp b/engines/saga/interface.cpp
index 20370a775f..38d46eed57 100644
--- a/engines/saga/interface.cpp
+++ b/engines/saga/interface.cpp
@@ -1623,9 +1623,19 @@ void Interface::update(const Point& mousePoint, int updateFlag) {
// When opening the psychic profile, or the options screen in the non-interactive part of the IHNM demo,
// the interface is locked (_active is false)
// Don't return in those cases, so that mouse actions can be processed
- if (!(_vm->getGameType() == GType_IHNM && _panelMode == kPanelPlacard && (updateFlag & UPDATE_MOUSECLICK)) &&
- !(_vm->getGameId() == GID_IHNM_DEMO && (_panelMode == kPanelOption || _panelMode == kPanelQuit)))
+ if (_vm->getGameType() == GType_ITE) {
return;
+ } else {
+ if (_panelMode == kPanelPlacard && (updateFlag & UPDATE_MOUSECLICK)) {
+ // the psychic profile or the special screen in IHNM demo is open, don't return
+ } else if (_panelMode == kPanelOption || _panelMode == kPanelQuit) {
+ // options/quit panel is open, set interface to active and don't return
+ _vm->_actor->abortSpeech(); // abort any speech being played
+ _active = true;
+ } else {
+ return;
+ }
+ }
}
if (_statusTextInput) {