[Scummvm-git-logs] scummvm master -> c9c03d69958d7f89358fd776306fcc960c9243cb

Strangerke noreply at scummvm.org
Sun Oct 22 00:34:33 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:
c9c03d6995 KINGDOM: Fix skipping and quitting demo movie (#5372)


Commit: c9c03d69958d7f89358fd776306fcc960c9243cb
    https://github.com/scummvm/scummvm/commit/c9c03d69958d7f89358fd776306fcc960c9243cb
Author: Athanasios Antoniou (a.antoniou79 at gmail.com)
Date: 2023-10-22T02:34:30+02:00

Commit Message:
KINGDOM: Fix skipping and quitting demo movie (#5372)

The detection that the demo movie was skipped is done by the external flag _demoMovieSkipped

This is not as clean as it would be updating a reference parameter variable from within playMovie()
but that would require changing the signature of playMovie and all of its calls

Changed paths:
    engines/kingdom/kingdom.cpp
    engines/kingdom/kingdom.h
    engines/kingdom/logic.cpp
    engines/kingdom/logic1.cpp


diff --git a/engines/kingdom/kingdom.cpp b/engines/kingdom/kingdom.cpp
index 24beb7787a5..f145d804697 100644
--- a/engines/kingdom/kingdom.cpp
+++ b/engines/kingdom/kingdom.cpp
@@ -55,6 +55,7 @@ KingdomGame::KingdomGame(OSystem *syst, const ADGameDescription *gameDesc) : Eng
 
 	_asPtr = nullptr;
 	_quit = false;
+	_demoMovieSkipped = false;
 	_kingartEntries = nullptr;
 
 	_tickCount = 0;
@@ -527,6 +528,9 @@ void KingdomGame::playMovie(int movieNum) {
 				case Common::EVENT_KEYDOWN:
 					if (event.kbd.keycode == Common::KEYCODE_ESCAPE) {
 						skipMovie = true;
+						if (movieNum == 54) {
+							_demoMovieSkipped = true;
+						}
 					}
 				default:
 					break;
diff --git a/engines/kingdom/kingdom.h b/engines/kingdom/kingdom.h
index dec18a93ae1..192c346a793 100644
--- a/engines/kingdom/kingdom.h
+++ b/engines/kingdom/kingdom.h
@@ -151,6 +151,7 @@ namespace Kingdom {
 		bool _iconsClosed;
 		bool _oldIconsClosed;
 		int _pMovie;
+		bool _demoMovieSkipped;
 		bool _keyActive;
 		bool _iconRedraw;
 		bool _quit;
diff --git a/engines/kingdom/logic.cpp b/engines/kingdom/logic.cpp
index 627bf769913..5f861b1667d 100644
--- a/engines/kingdom/logic.cpp
+++ b/engines/kingdom/logic.cpp
@@ -505,10 +505,12 @@ void Logic::gameHelp() {
 		// The demo isn't saving pMovie.
 		// It's obviously a bug and this behavior wasn't kept in ScummVM
 		int oldPMovie = _vm->_pMovie;
-		while(!_vm->_keyActive) {
+		_vm->_demoMovieSkipped = false;
+		while(!_vm->_keyActive && !_vm->shouldQuit() && !_vm->_demoMovieSkipped) {
 			_vm->playMovie(54);
 			_vm->fadeToBlack2();
 		}
+		_vm->_demoMovieSkipped = false;
 		_vm->_pMovie = oldPMovie;
 		_vm->_noIFScreen = false;
 		_vm->showPic(106);
diff --git a/engines/kingdom/logic1.cpp b/engines/kingdom/logic1.cpp
index a880d452624..e557a17b135 100644
--- a/engines/kingdom/logic1.cpp
+++ b/engines/kingdom/logic1.cpp
@@ -54,11 +54,13 @@ void Logic::GPL1_11() {
 		_vm->_keyActive = false;
 		_vm->_noIFScreen = true;
 		_vm->playSound(0);
-		while(!_vm->_keyActive) {
+		_vm->_demoMovieSkipped = false;
+		while(!_vm->_keyActive && !_vm->shouldQuit() && !_vm->_demoMovieSkipped) {
 			_vm->fadeToBlack2();
 			_vm->playMovie(54);
 		}
-		GPLogic1_SubSP10();
+		_vm->_demoMovieSkipped = false;
+		GPLogic1_SubSP10(); // return to main menu
 		break;
 	case 0x194:
 		// CHECKME	_QuitFlag = 2;
@@ -75,7 +77,9 @@ void Logic::GPL1_11() {
 		_vm->_cursorDrawn = false;
 		_vm->fadeToBlack2();
 		_vm->playSound(0);
+		_vm->_demoMovieSkipped = false;
 		_vm->playMovie(54);
+		_vm->_demoMovieSkipped = false;
 		GPLogic1_SubSP10();
 		break;
 	default:




More information about the Scummvm-git-logs mailing list