diff options
author | Kostas Nakos | 2008-08-10 17:15:30 +0000 |
---|---|---|
committer | Kostas Nakos | 2008-08-10 17:15:30 +0000 |
commit | df12c19dadfeff6c8ae63fc18efbbf3d81c298a7 (patch) | |
tree | ee56291fcbc81593d2b9e9186189da00b3c927dd /engines/drascula | |
parent | cb6cbc69d3e9f14b0d4178e6f0d852bff0d1e006 (diff) | |
download | scummvm-rg350-df12c19dadfeff6c8ae63fc18efbbf3d81c298a7.tar.gz scummvm-rg350-df12c19dadfeff6c8ae63fc18efbbf3d81c298a7.tar.bz2 scummvm-rg350-df12c19dadfeff6c8ae63fc18efbbf3d81c298a7.zip |
address the ignored events and bad inventory screen handling 'features'
svn-id: r33758
Diffstat (limited to 'engines/drascula')
-rw-r--r-- | engines/drascula/drascula.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/engines/drascula/drascula.cpp b/engines/drascula/drascula.cpp index 7c843892b6..e8e4ea94b9 100644 --- a/engines/drascula/drascula.cpp +++ b/engines/drascula/drascula.cpp @@ -286,6 +286,8 @@ void DrasculaEngine::endChapter() { bool DrasculaEngine::runCurrentChapter() { int n; + rightMouseButton = 0; + if (_lang == kSpanish) textSurface = extraSurface; else @@ -458,21 +460,44 @@ bool DrasculaEngine::runCurrentChapter() { } delay(25); +#ifndef _WIN32_WCE + // FIXME + // This and the following #ifndefs disable the excess updateEvents() calls *within* the game loop. + // Events such as keypresses or mouse clicks are dropped on the ground with no processing + // by these calls. They are properly handled by the implicit call through getScan() below. + // It is not a good practice to not process events and indeed this created problems with synthesized + // events in the wince port. updateEvents(); +#endif if (menuScreen == 0 && takeObject == 1) checkObjects(); +#ifdef _WIN32_WCE + if (rightMouseButton) + if (menuScreen) { +#else if (rightMouseButton == 1 && menuScreen == 1) { +#endif if (currentChapter == 2) loadPic(menuBackground, backSurface); else loadPic(99, backSurface); setPalette((byte *)&gamePalette); menuScreen = 0; +#ifndef _WIN32_WCE + // FIXME: This call here is in hope that it will catch the rightmouseup event so the + // next if block won't be executed. This too is not a good coding practice. I've recoded it + // with a mutual exclusive if block for the menu. I would commit this properly but I cannot test + // for other (see Desktop) ports right now. updateEvents(); +#endif +#ifdef _WIN32_WCE + } else { +#else } if (rightMouseButton == 1 && menuScreen == 0) { +#endif characterMoved = 0; if (trackProtagonist == 2) trackProtagonist = 1; @@ -485,7 +510,9 @@ bool DrasculaEngine::runCurrentChapter() { else loadPic("icons.alg", backSurface); menuScreen = 1; +#ifndef _WIN32_WCE updateEvents(); +#endif withoutVerb(); } @@ -671,7 +698,11 @@ void DrasculaEngine::updateEvents() { AudioCD.updateCD(); +#ifdef _WIN32_WCE + if (eventMan->pollEvent(event)) { +#else while (eventMan->pollEvent(event)) { +#endif switch (event.type) { case Common::EVENT_KEYDOWN: _keyPressed = event.kbd; |