aboutsummaryrefslogtreecommitdiff
path: root/sky
diff options
context:
space:
mode:
Diffstat (limited to 'sky')
-rw-r--r--sky/logic.cpp2
-rw-r--r--sky/mouse.cpp12
-rw-r--r--sky/screen.cpp3
-rw-r--r--sky/sky.cpp5
4 files changed, 15 insertions, 7 deletions
diff --git a/sky/logic.cpp b/sky/logic.cpp
index f72d05021b..55c634193c 100644
--- a/sky/logic.cpp
+++ b/sky/logic.cpp
@@ -2315,9 +2315,7 @@ bool SkyLogic::fnLookAt(uint32 a, uint32 b, uint32 c) {
fnNoHuman(0, 0, 0);
_skyMouse->lockMouse();
- //waitRelative(0);
_skyMouse->waitMouseNotPressed();
- //waitRelative(40);
_skyMouse->unlockMouse();
fnAddHuman(0, 0, 0);
diff --git a/sky/mouse.cpp b/sky/mouse.cpp
index 7c5e71aeb2..bc0c7d60eb 100644
--- a/sky/mouse.cpp
+++ b/sky/mouse.cpp
@@ -167,7 +167,17 @@ void SkyMouse::drawNewMouse() {
}
void SkyMouse::waitMouseNotPressed(void) {
- while (_mouseB) ;
+
+ bool mousePressed = true;
+ OSystem::Event event;
+ while (mousePressed) {
+ _system->delay_msecs(20);
+ while (_system->poll_event(&event)) {
+ if ((event.event_code == OSystem::EVENT_LBUTTONUP) ||
+ (event.event_code == OSystem::EVENT_QUIT))
+ mousePressed = false;
+ }
+ }
_bMouseB = 0;
}
diff --git a/sky/screen.cpp b/sky/screen.cpp
index 11ef94eea0..414d151ede 100644
--- a/sky/screen.cpp
+++ b/sky/screen.cpp
@@ -197,7 +197,6 @@ void SkyScreen::recreate(void) {
void SkyScreen::flip(void) {
SkyState::_systemVars.mouseFlag |= MF_NO_UPDATE;
- // drawMouseToBackScreen();
uint8 *screenPos = _currentScreen;
uint8 *backPos = _backScreen;
uint32 copyX, copyWidth;
@@ -230,7 +229,7 @@ void SkyScreen::flip(void) {
backPos += (GRID_H - 1) * GAME_SCREEN_WIDTH;
}
SkyState::_systemVars.mouseFlag &= ~MF_NO_UPDATE;
- // _skyMouse->restoreDataToBackScreen();
+ _system->update_screen();
}
void SkyScreen::fnDrawScreen(uint32 palette, uint32 scroll) {
diff --git a/sky/sky.cpp b/sky/sky.cpp
index 7c14ea35c7..55c6cb618f 100644
--- a/sky/sky.cpp
+++ b/sky/sky.cpp
@@ -192,9 +192,10 @@ void SkyState::go() {
_skyScreen->recreate();
_skyScreen->spriteEngine();
_skyScreen->flip();
- if (_paintGrid)
+ if (_paintGrid) {
_skyScreen->showGrid(_skyLogic->_skyGrid->giveGrid(SkyLogic::_scriptVariables[SCREEN]));
- _system->update_screen();
+ _system->update_screen();
+ }
}
}
}