[Scummvm-git-logs] scummvm master -> 405585b7eb9ee3c20a5849e63796a0953bc98da5

neuromancer noreply at scummvm.org
Sun Jan 8 14:17:52 UTC 2023


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
405585b7eb FREESCAPE: Ensure that the mouse is unlocked when the engine is paused


Commit: 405585b7eb9ee3c20a5849e63796a0953bc98da5
    https://github.com/scummvm/scummvm/commit/405585b7eb9ee3c20a5849e63796a0953bc98da5
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2023-01-08T11:17:49-03:00

Commit Message:
FREESCAPE: Ensure that the mouse is unlocked when the engine is paused

Changed paths:
    engines/freescape/freescape.cpp
    engines/freescape/freescape.h
    engines/freescape/games/driller.cpp


diff --git a/engines/freescape/freescape.cpp b/engines/freescape/freescape.cpp
index af438a8a221..f2b8f06703a 100644
--- a/engines/freescape/freescape.cpp
+++ b/engines/freescape/freescape.cpp
@@ -416,17 +416,19 @@ void FreescapeEngine::processInput() {
 				drawFrame();
 				_savedScreen = _gfx->getScreenshot();
 				_gfx->setViewport(_fullscreenViewArea);
-				g_system->lockMouse(false);
 				openMainMenuDialog();
-				g_system->lockMouse(true);
 				_gfx->setViewport(_viewArea);
 				_savedScreen->free();
 				delete _savedScreen;
 				break;
 			case Common::KEYCODE_SPACE:
 				_shootMode = !_shootMode;
-				if (!_shootMode)
+				if (!_shootMode) {
+					g_system->lockMouse(true);
 					centerCrossair();
+				} else {
+					g_system->lockMouse(false);
+				}
 				break;
 			case Common::KEYCODE_i:
 				drawInfoMenu();
@@ -872,5 +874,15 @@ void FreescapeEngine::removeTimers() {
 	g_system->getTimerManager()->removeTimerProc(&countdownCallback);
 }
 
+void FreescapeEngine::pauseEngineIntern(bool pause) {
+	Engine::pauseEngineIntern(pause);
+
+	// TODO: Handle the viewport here
+
+	// Unlock the mouse so that the cursor is usable when the GMM opens
+	if (!_shootMode) {
+		_system->lockMouse(!pause);
+	}
+}
 
 } // namespace Freescape
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 5ecf34765eb..6c1a6e3f35a 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -327,6 +327,8 @@ public:
 	virtual Common::Error loadGameStreamExtended(Common::SeekableReadStream *stream);
 	Graphics::Surface *_savedScreen;
 
+	void pauseEngineIntern(bool pause) override;
+
 	// Timers
 	bool startCountdown(uint32 delay);
 	void removeTimers();
diff --git a/engines/freescape/games/driller.cpp b/engines/freescape/games/driller.cpp
index 58b005e5fa2..a8adb5633a5 100644
--- a/engines/freescape/games/driller.cpp
+++ b/engines/freescape/games/driller.cpp
@@ -1157,15 +1157,11 @@ void DrillerEngine::drawInfoMenu() {
 			case Common::EVENT_KEYDOWN:
 				if (event.kbd.keycode == Common::KEYCODE_l) {
 					_gfx->setViewport(_fullscreenViewArea);
-					g_system->lockMouse(false);
 					loadGameDialog();
-					g_system->lockMouse(true);
 					_gfx->setViewport(_viewArea);
 				} else if (event.kbd.keycode == Common::KEYCODE_s) {
 					_gfx->setViewport(_fullscreenViewArea);
-					g_system->lockMouse(false);
 					saveGameDialog();
-					g_system->lockMouse(true);
 					_gfx->setViewport(_viewArea);
 				} else if (isDOS() && event.kbd.keycode == Common::KEYCODE_t) {
 					// TODO




More information about the Scummvm-git-logs mailing list