From 9a2bc3c5720e807978fa8a302b5b3c532fb62d30 Mon Sep 17 00:00:00 2001 From: Strangerke Date: Thu, 19 May 2016 07:59:07 +0200 Subject: GNAP: Add several checks on _gameDone in order to quit the game quickly --- engines/gnap/character.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'engines/gnap/character.cpp') diff --git a/engines/gnap/character.cpp b/engines/gnap/character.cpp index 46b5dc712d..706cb987fb 100644 --- a/engines/gnap/character.cpp +++ b/engines/gnap/character.cpp @@ -481,7 +481,7 @@ void PlayerGnap::useJointOnPlatypus() { plat._idleFacing = kDirNone; playSequence(0x107B5); walkStep(); - while (_vm->_gameSys->getAnimationStatus(0) != 2) { + while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone) { _vm->updateMouseCursor(); _vm->gameUpdateTick(); } @@ -511,7 +511,7 @@ void PlayerGnap::kissPlatypus(int callback) { plat._sequenceId = 0x7CB; plat._idleFacing = kDirNone; playSequence(0x107B5); - while (_vm->_gameSys->getAnimationStatus(0) != 2) { + while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone) { _vm->updateMouseCursor(); _vm->doCallback(callback); _vm->gameUpdateTick(); @@ -1120,7 +1120,7 @@ bool PlayerGnap::doPlatypusAction(int gridX, int gridY, int platSequenceId, int if (!_vm->isPointBlocked(checkPt) && (_pos != checkPt)) { walkTo(checkPt, 0, 0x107B9, 1); - while (_vm->_gameSys->getAnimationStatus(0) != 2) { + while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone) { _vm->updateMouseCursor(); _vm->doCallback(callback); _vm->gameUpdateTick(); @@ -1129,7 +1129,7 @@ bool PlayerGnap::doPlatypusAction(int gridX, int gridY, int platSequenceId, int if (_pos == plat._pos + Common::Point(gridX, gridY)) { _vm->_gameSys->setAnimation(platSequenceId, plat._id, 1); plat.playSequence(platSequenceId); - while (_vm->_gameSys->getAnimationStatus(1) != 2) { + while (_vm->_gameSys->getAnimationStatus(1) != 2 && !_vm->_gameDone) { _vm->updateMouseCursor(); _vm->doCallback(callback); _vm->gameUpdateTick(); @@ -1145,8 +1145,9 @@ bool PlayerGnap::doPlatypusAction(int gridX, int gridY, int platSequenceId, int void PlayerGnap::useDisguiseOnPlatypus() { _vm->_gameSys->setAnimation(0x10846, _id, 0); playSequence(0x10846); - while (_vm->_gameSys->getAnimationStatus(0) != 2) + while (_vm->_gameSys->getAnimationStatus(0) != 2 && !_vm->_gameDone) _vm->gameUpdateTick(); + _vm->_newSceneNum = 47; _vm->_isLeavingScene = true; _vm->_sceneDone = true; -- cgit v1.2.3