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

mgerhardy noreply at scummvm.org
Tue Jul 12 18:26:45 UTC 2022


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:
dd56f35477 TWINE: after watching the cutscenes at the television, the background is not properly restored


Commit: dd56f35477c93a223bc6fd6dc3ce4137a308a323
    https://github.com/scummvm/scummvm/commit/dd56f35477c93a223bc6fd6dc3ce4137a308a323
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2022-07-12T20:25:58+02:00

Commit Message:
TWINE: after watching the cutscenes at the television, the background is not properly restored

https://bugs.scummvm.org/ticket/13683

Changed paths:
    engines/twine/debugger/debug.cpp
    engines/twine/debugger/debug_grid.cpp
    engines/twine/renderer/redraw.h
    engines/twine/scene/grid.cpp
    engines/twine/scene/scene.cpp
    engines/twine/script/script_life_v1.cpp
    engines/twine/script/script_move_v1.cpp
    engines/twine/twine.cpp


diff --git a/engines/twine/debugger/debug.cpp b/engines/twine/debugger/debug.cpp
index e1b69fe5c8d..bd402c01e2b 100644
--- a/engines/twine/debugger/debug.cpp
+++ b/engines/twine/debugger/debug.cpp
@@ -451,7 +451,7 @@ void Debug::debugProcessWindow() {
 
 		count++;
 	}
-	_engine->_redraw->_reqBgRedraw = true;
+	_engine->_redraw->_firstTime = true;
 }
 
 void Debug::processDebug() {
diff --git a/engines/twine/debugger/debug_grid.cpp b/engines/twine/debugger/debug_grid.cpp
index bd70b12fe0d..8f0de45c9af 100644
--- a/engines/twine/debugger/debug_grid.cpp
+++ b/engines/twine/debugger/debug_grid.cpp
@@ -43,17 +43,17 @@ void DebugGrid::changeGridCamera() {
 	Input *input = _engine->_input;
 	if (input->isActionActive(TwinEActionType::DebugGridCameraPressUp)) {
 		grid->_newCamera.z--;
-		redraw->_reqBgRedraw = true;
+		redraw->_firstTime = true;
 	} else if (input->isActionActive(TwinEActionType::DebugGridCameraPressDown)) {
 		grid->_newCamera.z++;
-		redraw->_reqBgRedraw = true;
+		redraw->_firstTime = true;
 	}
 	if (input->isActionActive(TwinEActionType::DebugGridCameraPressLeft)) {
 		grid->_newCamera.x--;
-		redraw->_reqBgRedraw = true;
+		redraw->_firstTime = true;
 	} else if (input->isActionActive(TwinEActionType::DebugGridCameraPressRight)) {
 		grid->_newCamera.x++;
-		redraw->_reqBgRedraw = true;
+		redraw->_firstTime = true;
 	}
 }
 
@@ -70,7 +70,7 @@ void DebugGrid::changeGrid() {
 			scene->_currentSceneIdx = LBA1SceneId::Citadel_Island_Prison;
 		}
 		scene->_needChangeScene = scene->_currentSceneIdx;
-		redraw->_reqBgRedraw = true;
+		redraw->_firstTime = true;
 	}
 
 	if (input->toggleActionIfActive(TwinEActionType::PreviousRoom)) {
@@ -79,7 +79,7 @@ void DebugGrid::changeGrid() {
 			scene->_currentSceneIdx = LBA1SceneId::SceneIdMax - 1;
 		}
 		scene->_needChangeScene = scene->_currentSceneIdx;
-		redraw->_reqBgRedraw = true;
+		redraw->_firstTime = true;
 	}
 }
 
@@ -111,7 +111,7 @@ void DebugGrid::applyCellingGrid() {
 		} else if (grid->_useCellingGrid == 1) {
 			grid->_useCellingGrid = -1;
 			grid->createGridMap();
-			_engine->_redraw->_reqBgRedraw = true;
+			_engine->_redraw->_firstTime = true;
 			debug("Disable Celling Grid index: %d", grid->_cellingGridIdx);
 			_engine->_scene->_needChangeScene = SCENE_CEILING_GRID_FADE_2; // tricky to make the fade
 		}
diff --git a/engines/twine/renderer/redraw.h b/engines/twine/renderer/redraw.h
index c5f340c08d9..a0f88d8c1a3 100644
--- a/engines/twine/renderer/redraw.h
+++ b/engines/twine/renderer/redraw.h
@@ -142,7 +142,7 @@ public:
 	bool _inSceneryView = false;
 
 	/** Request background redraw */
-	bool _reqBgRedraw = false;
+	bool _firstTime = false;
 
 	/** Current number of redraw regions in the screen */
 	int32 _currNumOfRedrawBox = 0; // fullRedrawVar8
diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index f612e0da8e7..0b233a680e4 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -460,7 +460,7 @@ bool Grid::initCellingGrid(int32 index) {
 
 	createCellingGridMap(gridPtr, gridSize);
 	free(gridPtr);
-	_engine->_redraw->_reqBgRedraw = true;
+	_engine->_redraw->_firstTime = true;
 	return true;
 }
 
@@ -834,7 +834,7 @@ void Grid::centerOnActor(const ActorStruct* actor) {
 	_newCamera.x = (actor->_pos.x + SIZE_BRICK_Y) / SIZE_BRICK_XZ;
 	_newCamera.y = (actor->_pos.y + SIZE_BRICK_Y) / SIZE_BRICK_Y;
 	_newCamera.z = (actor->_pos.z + SIZE_BRICK_Y) / SIZE_BRICK_XZ;
-	_engine->_redraw->_reqBgRedraw = true;
+	_engine->_redraw->_firstTime = true;
 }
 
 void Grid::centerScreenOnActor() {
@@ -863,7 +863,7 @@ void Grid::centerScreenOnActor() {
 			_newCamera.z = SIZE_CUBE_Z - 1;
 		}
 
-		_engine->_redraw->_reqBgRedraw = true;
+		_engine->_redraw->_firstTime = true;
 	}
 }
 
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index 24a5e204e06..6edeba496d6 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -732,7 +732,7 @@ void Scene::checkZoneSce(int32 actorIdx) {
 						_engine->_grid->_newCamera.x = zone->infoData.CameraView.x;
 						_engine->_grid->_newCamera.y = zone->infoData.CameraView.y;
 						_engine->_grid->_newCamera.z = zone->infoData.CameraView.z;
-						_engine->_redraw->_reqBgRedraw = true;
+						_engine->_redraw->_firstTime = true;
 					}
 				}
 				break;
@@ -796,7 +796,7 @@ void Scene::checkZoneSce(int32 actorIdx) {
 		_engine->_grid->_useCellingGrid = -1;
 		_engine->_grid->_cellingGridIdx = -1;
 		_engine->_grid->createGridMap();
-		_engine->_redraw->_reqBgRedraw = true;
+		_engine->_redraw->_firstTime = true;
 	}
 }
 
diff --git a/engines/twine/script/script_life_v1.cpp b/engines/twine/script/script_life_v1.cpp
index 388a72b3ed0..5cb0a68a405 100644
--- a/engines/twine/script/script_life_v1.cpp
+++ b/engines/twine/script/script_life_v1.cpp
@@ -1227,7 +1227,7 @@ static int32 lZOOM(TwinEEngine *engine, LifeScriptContext &ctx) {
 		engine->exitSceneryView();
 		engine->_screens->setBackPal();
 		engine->_screens->_fadePalette = true;
-		engine->_redraw->_reqBgRedraw = true;
+		engine->_redraw->_firstTime = true;
 	}
 
 	return 0;
@@ -1324,6 +1324,7 @@ static int32 lHIT_OBJ(TwinEEngine *engine, LifeScriptContext &ctx) {
  * @note Opcode @c 0x40
  */
 static int32 lPLAY_FLA(TwinEEngine *engine, LifeScriptContext &ctx) {
+	ScopedEngineFreeze timer(engine);
 	int strIdx = 0;
 	char movie[64];
 	do {
@@ -1340,7 +1341,7 @@ static int32 lPLAY_FLA(TwinEEngine *engine, LifeScriptContext &ctx) {
 
 	engine->_movie->playMovie(movie);
 	engine->setPalette(engine->_screens->_paletteRGBA);
-	engine->_screens->clearScreen();
+	engine->_redraw->_firstTime = true;
 
 	return 0;
 }
diff --git a/engines/twine/script/script_move_v1.cpp b/engines/twine/script/script_move_v1.cpp
index f108cedf7d6..ad62059f9a4 100644
--- a/engines/twine/script/script_move_v1.cpp
+++ b/engines/twine/script/script_move_v1.cpp
@@ -360,14 +360,14 @@ static int32 mBACKGROUND(TwinEEngine *engine, MoveScriptContext &ctx) {
 		if (!ctx.actor->_staticFlags.bIsBackgrounded) {
 			ctx.actor->_staticFlags.bIsBackgrounded = 1;
 			if (ctx.actor->_dynamicFlags.bIsDrawn) {
-				engine->_redraw->_reqBgRedraw = true;
+				engine->_redraw->_firstTime = true;
 			}
 		}
 	} else {
 		if (ctx.actor->_staticFlags.bIsBackgrounded) {
 			ctx.actor->_staticFlags.bIsBackgrounded = 0;
 			if (ctx.actor->_dynamicFlags.bIsDrawn) {
-				engine->_redraw->_reqBgRedraw = true;
+				engine->_redraw->_firstTime = true;
 			}
 		}
 	}
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index b0f6f97b2d9..98d653e70f6 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -1009,7 +1009,7 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
 						_scene->_heroPositionType = ScenePositionType::kReborn;
 
 						_scene->_sceneHero->setLife(kActorMaxLife);
-						_redraw->_reqBgRedraw = true;
+						_redraw->_firstTime = true;
 						_screens->_fadePalette = true;
 						_gameState->addLeafs(-1);
 						_actor->_cropBottomScreen = 0;
@@ -1050,23 +1050,23 @@ bool TwinEEngine::runGameEngine() { // mainLoopInteration
 
 	_grid->centerScreenOnActor();
 
-	_redraw->redrawEngineActions(_redraw->_reqBgRedraw);
+	_redraw->redrawEngineActions(_redraw->_firstTime);
 
 	// workaround to fix hero redraw after drowning
-	if (_actor->_cropBottomScreen && _redraw->_reqBgRedraw) {
+	if (_actor->_cropBottomScreen && _redraw->_firstTime) {
 		_scene->_sceneHero->_staticFlags.bIsHidden = 1;
 		_redraw->redrawEngineActions(true);
 		_scene->_sceneHero->_staticFlags.bIsHidden = 0;
 	}
 
 	_scene->_needChangeScene = SCENE_CEILING_GRID_FADE_1;
-	_redraw->_reqBgRedraw = false;
+	_redraw->_firstTime = false;
 
 	return false;
 }
 
 bool TwinEEngine::gameEngineLoop() {
-	_redraw->_reqBgRedraw = true;
+	_redraw->_firstTime = true;
 	_screens->_fadePalette = true;
 	_movements->setActorAngle(ANGLE_0, -ANGLE_90, ANGLE_1, &_loopMovePtr);
 




More information about the Scummvm-git-logs mailing list