diff options
author | Eugene Sandulenko | 2005-01-07 00:57:43 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2005-01-07 00:57:43 +0000 |
commit | 1fe593995d98939c0d2e2dc2d6c6e11b647e1ca0 (patch) | |
tree | 01bb948cbcbbaf729cb167ad407c4f4f5c1d9bd2 /saga/interface.cpp | |
parent | d5d801b01c2990f8e07e42abebd9ccbf33d39407 (diff) | |
download | scummvm-rg350-1fe593995d98939c0d2e2dc2d6c6e11b647e1ca0.tar.gz scummvm-rg350-1fe593995d98939c0d2e2dc2d6c6e11b647e1ca0.tar.bz2 scummvm-rg350-1fe593995d98939c0d2e2dc2d6c6e11b647e1ca0.zip |
o Fix for popped up actors at initial scene fade out
o Stub for new Wyrmkeep demos with substituted scenes
o Converted some script func parameters to apropriate types
o More panel fixes
svn-id: r16472
Diffstat (limited to 'saga/interface.cpp')
-rw-r--r-- | saga/interface.cpp | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/saga/interface.cpp b/saga/interface.cpp index 943b28e151..b20334635e 100644 --- a/saga/interface.cpp +++ b/saga/interface.cpp @@ -237,8 +237,9 @@ Interface::Interface(SagaEngine *vm) : _vm(vm), _initialized(false) { _activeVerb = I_VERB_WALKTO; - _active = 0; - _panelMode = _savedMode = _lockedMode = kPanelNull; + _active = false; + _panelMode = _lockedMode = kPanelNull; + _savedMode = -1; _inMainMode = false; *_statusText = 0; @@ -259,29 +260,64 @@ Interface::~Interface(void) { } int Interface::activate() { - _active = 1; - draw(); + if (!_active) { + _active = true; + _vm->_script->_skipSpeeches = false; + _vm->_gfx->showCursor(true); + unlockMode(); + if (_panelMode == kPanelMain) + ;// show save reminder + draw(); + } return SUCCESS; } int Interface::deactivate() { - _active = 0; + if (_active) { + _active = false; + _vm->_gfx->showCursor(false); + lockMode(); + setMode(kPanelNull); + } return SUCCESS; } -int Interface::setMode(int mode) { - // TODO: Is this where we should hide/show the mouse cursor? +void Interface::rememberMode() { + assert (_savedMode == -1); + + _savedMode = _panelMode; +} - _panelMode = mode; +void Interface::restoreMode() { + assert (_savedMode != -1); + + _panelMode = _savedMode; + _savedMode = -1; + + draw(); +} + +int Interface::setMode(int mode, bool force) { + // TODO: Is this where we should hide/show the mouse cursor? + int newmode = mode; if (_panelMode == kPanelConverse) _inMainMode = false; else if (_panelMode == kPanelInventory) { _inMainMode = true; - _panelMode = kPanelMain; + newmode = kPanelMain; + } + + // This lets us to prevents actors to pop up during initial + // scene fade in. + if (_savedMode != -1 && !force) { + _savedMode = newmode; + debug(0, "Saved mode: %d. my mode is %d", newmode, _panelMode); } + else + _panelMode = newmode; draw(); |