[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