aboutsummaryrefslogtreecommitdiff
path: root/engines/gnap/character.cpp
diff options
context:
space:
mode:
authorStrangerke2016-05-19 07:59:07 +0200
committerStrangerke2016-05-19 07:59:07 +0200
commit9a2bc3c5720e807978fa8a302b5b3c532fb62d30 (patch)
tree8349a4075ab73882286d48955c14bca9353a3e25 /engines/gnap/character.cpp
parent97ac77b5f1b41b77b5e9a79bac0f6a11a4063386 (diff)
downloadscummvm-rg350-9a2bc3c5720e807978fa8a302b5b3c532fb62d30.tar.gz
scummvm-rg350-9a2bc3c5720e807978fa8a302b5b3c532fb62d30.tar.bz2
scummvm-rg350-9a2bc3c5720e807978fa8a302b5b3c532fb62d30.zip
GNAP: Add several checks on _gameDone in order to quit the game quickly
Diffstat (limited to 'engines/gnap/character.cpp')
-rw-r--r--engines/gnap/character.cpp11
1 files changed, 6 insertions, 5 deletions
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;