From 337db5d4c785df251f79b8778e74e6b9294c7383 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sat, 22 Dec 2007 11:34:10 +0000 Subject: Bugfix to not allow animation fast forward when restoring a game - it was causing occasional crashes due to tick handlers referencing animations not yet loaded (it's only meant to be done during room changes) svn-id: r29950 --- engines/lure/room.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/engines/lure/room.cpp b/engines/lure/room.cpp index 5d04fea36b..450e2ea3aa 100644 --- a/engines/lure/room.cpp +++ b/engines/lure/room.cpp @@ -583,15 +583,19 @@ void Room::setRoomNumber(uint16 newRoomNumber, bool showOverlay) { loadRoomHotspots(); - if ((_roomData->exitTime != 0xffff) && (_roomData->exitTime != 0)) { - // If time has passed, animation ticks needed before room is displayed - int numSeconds = (g_system->getMillis() - _roomData->exitTime) / 1000; - if (numSeconds > 300) numSeconds = 300; - - game.preloadFlag() = true; - while (numSeconds-- > 0) - game.tick(); - game.preloadFlag() = false; + if (leaveFlag) { + // A previous room has been left - check if there are any seconds worth + // of animations that need to be done in 'fast forward' + if ((_roomData->exitTime != 0xffff) && (_roomData->exitTime != 0)) { + // If time has passed, animation ticks needed before room is displayed + int numSeconds = (g_system->getMillis() - _roomData->exitTime) / 1000; + if (numSeconds > 300) numSeconds = 300; + + game.preloadFlag() = true; + while (numSeconds-- > 0) + game.tick(); + game.preloadFlag() = false; + } } game.tick(); -- cgit v1.2.3