aboutsummaryrefslogtreecommitdiff
path: root/engines/sky
diff options
context:
space:
mode:
authorTorbjörn Andersson2006-06-21 15:05:12 +0000
committerTorbjörn Andersson2006-06-21 15:05:12 +0000
commitb85ed06d79358b1285a7b1c0c7c24c0fc64d8c80 (patch)
tree90ed190ae5cd88a3ccc7c710287dcb2e0d47b15e /engines/sky
parent150d9027f62a803893227d94786153721ac73c04 (diff)
downloadscummvm-rg350-b85ed06d79358b1285a7b1c0c7c24c0fc64d8c80.tar.gz
scummvm-rg350-b85ed06d79358b1285a7b1c0c7c24c0fc64d8c80.tar.bz2
scummvm-rg350-b85ed06d79358b1285a7b1c0c7c24c0fc64d8c80.zip
Match the original behaviour more closely when examining inventory items. The
text is displayed at least 800 ms. See bug #1181865. svn-id: r23233
Diffstat (limited to 'engines/sky')
-rw-r--r--engines/sky/logic.cpp2
-rw-r--r--engines/sky/mouse.cpp27
-rw-r--r--engines/sky/mouse.h2
3 files changed, 24 insertions, 7 deletions
diff --git a/engines/sky/logic.cpp b/engines/sky/logic.cpp
index 8ff791966c..7d2d91f9b6 100644
--- a/engines/sky/logic.cpp
+++ b/engines/sky/logic.cpp
@@ -2385,7 +2385,7 @@ bool Logic::fnLookAt(uint32 a, uint32 b, uint32 c) {
fnNoHuman(0, 0, 0);
_skyMouse->lockMouse();
- _skyMouse->waitMouseNotPressed();
+ _skyMouse->waitMouseNotPressed(800);
_skyMouse->unlockMouse();
fnAddHuman(0, 0, 0);
diff --git a/engines/sky/mouse.cpp b/engines/sky/mouse.cpp
index d3a212a764..689fc98e0c 100644
--- a/engines/sky/mouse.cpp
+++ b/engines/sky/mouse.cpp
@@ -167,17 +167,34 @@ void Mouse::drawNewMouse() {
//drawMouse();
}
-void Mouse::waitMouseNotPressed(void) {
+void Mouse::waitMouseNotPressed(int minDelay) {
bool mousePressed = true;
+ uint32 now = _system->getMillis();
OSystem::Event event;
- while (mousePressed) {
- _system->delayMillis(20);
+ while (mousePressed || _system->getMillis() < now + minDelay) {
while (_system->pollEvent(event)) {
- if ((event.type == OSystem::EVENT_LBUTTONUP) ||
- (event.type == OSystem::EVENT_QUIT))
+ switch (event.type) {
+ case OSystem::EVENT_LBUTTONUP:
+ mousePressed = false;
+ break;
+ case OSystem::EVENT_KEYDOWN:
+ if (event.kbd.ascii == 27) {
+ minDelay = 0;
+ mousePressed = false;
+ }
+ break;
+ case OSystem::EVENT_QUIT:
+ SkyEngine::_systemVars.quitGame = true;
+ minDelay = 0;
mousePressed = false;
+ break;
+ default:
+ break;
+ }
}
+ _system->updateScreen();
+ _system->delayMillis(20);
}
}
diff --git a/engines/sky/mouse.h b/engines/sky/mouse.h
index 9e713cce03..a76b1d387a 100644
--- a/engines/sky/mouse.h
+++ b/engines/sky/mouse.h
@@ -54,7 +54,7 @@ public:
void spriteMouse(uint16 frameNum, uint8 mouseX, uint8 mouseY);
void useLogicInstance(Logic *skyLogic) { _skyLogic = skyLogic; };
void buttonPressed(uint8 button);
- void waitMouseNotPressed(void);
+ void waitMouseNotPressed(int minDelay = 0);
uint16 giveMouseX(void) { return _mouseX; };
uint16 giveMouseY(void) { return _mouseY; };
uint16 giveCurrentMouseType(void) { return _currentCursor; };