aboutsummaryrefslogtreecommitdiff
path: root/saga/interface.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2005-01-07 00:57:43 +0000
committerEugene Sandulenko2005-01-07 00:57:43 +0000
commit1fe593995d98939c0d2e2dc2d6c6e11b647e1ca0 (patch)
tree01bb948cbcbbaf729cb167ad407c4f4f5c1d9bd2 /saga/interface.cpp
parentd5d801b01c2990f8e07e42abebd9ccbf33d39407 (diff)
downloadscummvm-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.cpp54
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();