diff options
author | Robert Špalek | 2009-10-12 03:08:28 +0000 |
---|---|---|
committer | Robert Špalek | 2009-10-12 03:08:28 +0000 |
commit | 43437eecb88fbf0c34db6660406652b4ca4ddcde (patch) | |
tree | 159ca87a4a3f110c84b03d458f941877ecc4e955 /engines/draci/script.cpp | |
parent | 1a4dcd3c82d6db389a25ad92235843b1841fbf23 (diff) | |
download | scummvm-rg350-43437eecb88fbf0c34db6660406652b4ca4ddcde.tar.gz scummvm-rg350-43437eecb88fbf0c34db6660406652b4ca4ddcde.tar.bz2 scummvm-rg350-43437eecb88fbf0c34db6660406652b4ca4ddcde.zip |
Dragon looks into the requested direction.
Parsing _lookDir and _useDir, and passing it all the way around to walkHero().
Also, added playHeroAnimation() to reduce code duplication.
svn-id: r44965
Diffstat (limited to 'engines/draci/script.cpp')
-rw-r--r-- | engines/draci/script.cpp | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/engines/draci/script.cpp b/engines/draci/script.cpp index 192ed9881b..4ab75f1291 100644 --- a/engines/draci/script.cpp +++ b/engines/draci/script.cpp @@ -479,43 +479,25 @@ void Script::startPlay(Common::Queue<int> ¶ms) { void Script::justTalk(Common::Queue<int> ¶ms) { const GameObject *dragon = _vm->_game->getObject(kDragonObject); const int last_anim = static_cast<Movement> (_vm->_game->playingObjectAnimation(dragon)); - if (last_anim >= 0) { - _vm->_game->stopObjectAnimations(dragon); - } int new_anim; if (last_anim == kSpeakRight || last_anim == kStopRight) { new_anim = kSpeakRight; } else { new_anim = kSpeakLeft; } - - const int animID = dragon->_anim[new_anim]; - - Animation *anim = _vm->_anims->getAnimation(animID); - _vm->_game->positionAnimAsHero(anim); - - _vm->_anims->play(animID); + _vm->_game->playHeroAnimation(new_anim); } void Script::justStay(Common::Queue<int> ¶ms) { const GameObject *dragon = _vm->_game->getObject(kDragonObject); const int last_anim = static_cast<Movement> (_vm->_game->playingObjectAnimation(dragon)); - if (last_anim >= 0) { - _vm->_game->stopObjectAnimations(dragon); - } int new_anim; if (last_anim == kSpeakRight || last_anim == kStopRight) { new_anim = kStopRight; } else { new_anim = kStopLeft; } - - const int animID = dragon->_anim[new_anim]; - - Animation *anim = _vm->_anims->getAnimation(animID); - _vm->_game->positionAnimAsHero(anim); - - _vm->_anims->play(animID); + _vm->_game->playHeroAnimation(new_anim); } void Script::c_If(Common::Queue<int> ¶ms) { @@ -662,9 +644,9 @@ void Script::walkOn(Common::Queue<int> ¶ms) { int x = params.pop(); int y = params.pop(); - params.pop(); // facing direction, not used yet + SightDirection dir = static_cast<SightDirection> (params.pop()); - _vm->_game->walkHero(x, y); + _vm->_game->walkHero(x, y, dir); } void Script::walkOnPlay(Common::Queue<int> ¶ms) { @@ -674,12 +656,12 @@ void Script::walkOnPlay(Common::Queue<int> ¶ms) { int x = params.pop(); int y = params.pop(); - params.pop(); // facing direction, not used yet + SightDirection dir = static_cast<SightDirection> (params.pop()); // HACK: This should be an onDest action when hero walking is properly implemented _vm->_game->setExitLoop(true); - _vm->_game->walkHero(x, y); + _vm->_game->walkHero(x, y, dir); _vm->_game->setLoopSubstatus(kSubstatusStrange); _vm->_game->loop(); |